ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/cfplus
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/cfplus (file contents):
Revision 1.4 by root, Thu May 25 17:52:29 2006 UTC vs.
Revision 1.7 by root, Thu May 25 21:48:22 2006 UTC

103 103
104our $INVWIN; 104our $INVWIN;
105our $INV; 105our $INV;
106our $INVR; 106our $INVR;
107our $INVR_LBL; 107our $INVR_LBL;
108our $OPENCONT;
109 108
110sub status { 109sub status {
111 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]); 110 $STATUSBOX->add (CFClient::UI::Label::escape $_[0], pri => -10, group => "status", timeout => 10, fg => [1, 1, 0, 1]);
112} 111}
113 112
431 can_hover => 1, can_events => 1, 430 can_hover => 1, can_events => 1,
432 tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server."); 431 tooltip => "Your name and title. You can change your title by using the <b>title</b> command, if supported by the server.");
433 $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1, 432 $vb->add ($STATWIDS->{map} = new CFClient::UI::Label valign => 0, align => -1, text => "Map:", expand => 1,
434 can_hover => 1, can_events => 1, 433 can_hover => 1, can_events => 1,
435 tooltip => "The map you are currently on (if supported by the server)."); 434 tooltip => "The map you are currently on (if supported by the server).");
435
436 $vb->add (my $hb0 = new CFClient::UI::HBox);
437 $hb0->add ($STATWIDS->{weight} = new CFClient::UI::Label valign => 0, align => -1, text => "Weight:", expand => 1,
438 can_hover => 1, can_events => 1,
439 tooltip => "This is the amount the Player weights.");
440 $hb0->add ($STATWIDS->{m_weight} = new CFClient::UI::Label valign => 0, align => -1, text => "Max weight:", expand => 1,
441 can_hover => 1, can_events => 1,
442 tooltip => "The weight limit, you can't carry more than this.");
443
436 444
437 $vb->add (my $hb = new CFClient::UI::HBox expand => 1); 445 $vb->add (my $hb = new CFClient::UI::HBox expand => 1);
438 $hb->add (my $tbl = new CFClient::UI::Table expand => 1); 446 $hb->add (my $tbl = new CFClient::UI::Table expand => 1);
439 447
440 my $color2 = [1, 1, 0]; 448 my $color2 = [1, 1, 0];
566 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15}); 574 $STATWIDS->{st_dam} ->set_text (sprintf "%d", $stats->{15});
567 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16}); 575 $STATWIDS->{st_arm} ->set_text (sprintf "%d", $stats->{16});
568 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_SPEED}); 576 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_SPEED});
569 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_WEAP_SP}); 577 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{Crossfire::Protocol::CS_STAT_WEAP_SP});
570 578
579 $STATWIDS->{m_weight}->set_text (sprintf "Max weight: %.1fkg", $stats->{Crossfire::Protocol::CS_STAT_WEIGHT_LIM} / 1000);
580
571 my %tbl = ( 581 my %tbl = (
572 phys => 100, 582 phys => 100,
573 magic => 101, 583 magic => 101,
574 fire => 102, 584 fire => 102,
575 elec => 103, 585 elec => 103,
1267 } 1277 }
1268 1278
1269 $self->{noface} = new_from_file CFClient::Texture 1279 $self->{noface} = new_from_file CFClient::Texture
1270 CFClient::find_rcfile "noface.png", minify => 1, mipmap => 1; 1280 CFClient::find_rcfile "noface.png", minify => 1, mipmap => 1;
1271 1281
1282 $self->{open_container} = 0;
1283
1272 $self 1284 $self
1273} 1285}
1274 1286
1275sub conn::stats_update { 1287sub conn::stats_update {
1276 my ($self, $stats) = @_; 1288 my ($self, $stats) = @_;
1755 CFClient::Item::update_widgets $_; 1767 CFClient::Item::update_widgets $_;
1756 1768
1757 $FLOORBOX->add (0, $row, $_->{face_widget}); 1769 $FLOORBOX->add (0, $row, $_->{face_widget});
1758 $FLOORBOX->add (1, $row, $_->{desc_widget}); 1770 $FLOORBOX->add (1, $row, $_->{desc_widget});
1759 } else { 1771 } else {
1760 $FLOORBOX->add (new CFClient::UI::Label text => "More..."); 1772 $FLOORBOX->add (1, ++$row, new CFClient::UI::Label text => "More...");
1761 last; 1773 last;
1762 } 1774 }
1763 } 1775 }
1764 }); 1776 });
1765 1777
1766 $WANT_REFRESH++; 1778 $WANT_REFRESH++;
1767} 1779}
1768 1780
1781sub set_opencont {
1782 my ($conn, $tag, $name) = @_;
1783 $conn->{open_container} = $tag;
1784 $INVR_LBL->set_text ($name);
1785 $INVR->set_items ($conn->{container}{$tag});
1786}
1787
1788sub update_container {
1789 my ($tag) = @_;
1790 $INVR->set_items ($::CONN->{container}{$CONN->{open_container}})
1791 if $tag == $CONN->{open_container};
1792}
1793
1769sub conn::container_add { 1794sub conn::container_add {
1770 my ($self, $tag, $items) = @_; 1795 my ($self, $tag, $items) = @_;
1771 1796
1772 #d# print "container_add: container $tag ($self->{player}{tag})\n"; 1797 #d# print "container_add: container $tag ($self->{player}{tag})\n";
1773 1798
1774 if ($tag == 0) { 1799 if ($tag == 0) {
1775 update_floorbox; 1800 update_floorbox;
1776 $OPENCONT = 0; 1801 update_container (0);
1777 $INVR_LBL->set_text ("Floor");
1778 $INVR->set_items ($self->{container}{0});
1779 } elsif ($tag == $self->{player}{tag}) { 1802 } elsif ($tag == $self->{player}{tag}) {
1780 $INVR_LBL->set_text ("Player");
1781 $INV->set_items ($self->{container}{$self->{player}{tag}}) 1803 $INV->set_items ($self->{container}{$self->{player}{tag}})
1782 } else { 1804 } else {
1783 $OPENCONT = $tag; 1805 update_container ($tag);
1784 $INVR_LBL->set_text (CFClient::Item::desc_string $self->{item}->{$OPENCONT});
1785 $INVR->set_items ($self->{container}{$tag});
1786 } 1806 }
1787 1807
1788 # $self-<{player}{tag} => player inv 1808 # $self-<{player}{tag} => player inv
1789 #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}}; 1809 #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}};
1790} 1810}
1794 1814
1795 #d# print "container_clear: container $tag ($self->{player}{tag})\n"; 1815 #d# print "container_clear: container $tag ($self->{player}{tag})\n";
1796 1816
1797 if ($tag == 0) { 1817 if ($tag == 0) {
1798 update_floorbox; 1818 update_floorbox;
1799 $OPENCONT = 0; 1819 update_container (0);
1800 $INVR_LBL->set_text ("Floor");
1801 $INVR->set_items ($self->{container}{0});
1802 } elsif ($tag == $self->{player}{tag}) { 1820 } elsif ($tag == $self->{player}{tag}) {
1803 $INVR_LBL->set_text ("Player");
1804 $INV->set_items ($self->{container}{$tag}) 1821 $INV->set_items ($self->{container}{$tag})
1805 } else {
1806 $OPENCONT = $tag;
1807 $INVR_LBL->set_text (CFClient::Item::desc_string $self->{item}->{$OPENCONT});
1808 $INVR->set_items ($self->{container}{$tag});
1809 } 1822 }
1810 1823
1811# use PApp::Util; warn PApp::Util::dumpval $self->{container}{0}; 1824# use PApp::Util; warn PApp::Util::dumpval $self->{container}{0};
1812} 1825}
1813 1826
1817 for (@items) { 1830 for (@items) {
1818 #d# print "item_delete: $_->{tag} from $_->{container} ($self->{player}{tag})\n"; 1831 #d# print "item_delete: $_->{tag} from $_->{container} ($self->{player}{tag})\n";
1819 1832
1820 if ($_->{container} == 0) { 1833 if ($_->{container} == 0) {
1821 update_floorbox; 1834 update_floorbox;
1822 $OPENCONT = 0; 1835 update_container ($_->{tag});
1823 $INVR_LBL->set_text ("Floor");
1824 $INVR->set_items ($self->{container}{0});
1825 } elsif ($_->{container} == $self->{player}{tag}) { 1836 } elsif ($_->{container} == $self->{player}{tag}) {
1826 $INVR_LBL->set_text ("Player");
1827 $INV->set_items ($self->{container}{$self->{player}{tag}}) 1837 $INV->set_items ($self->{container}{$self->{player}{tag}})
1828 } else { 1838 } else {
1829 $OPENCONT = $_->{container}; 1839 update_container ($_->{tag});
1830 $INVR_LBL->set_text (CFClient::Item::desc_string $self->{item}->{$OPENCONT});
1831 $INVR->set_items ($self->{container}{$_->{container}});
1832 } 1840 }
1833 } 1841 }
1834} 1842}
1835 1843
1836sub conn::item_update { 1844sub conn::item_update {
1837 my ($self, $item) = @_; 1845 my ($self, $item) = @_;
1838 1846
1839 #d# print "item_update: $item->{tag} in $item->{container} ($self->{player}{tag}) ($OPENCONT)\n"; 1847 #d# print "item_update: $item->{tag} in $item->{container} ($self->{player}{tag}) ($CONN->{open_container})\n";
1840 1848
1849 if ($item->{tag} == $self->{player}{tag}) {
1850 $STATWIDS->{weight}->set_text (sprintf "Weight: %.1fkg", $item->{weight} / 1000);
1851 return
1852 }
1853
1854 CFClient::Item::update_widgets $item;
1855
1841 if ($item->{tag} == $OPENCONT && not ($item->{flags} & Crossfire::Protocol::F_OPEN)) { 1856 if ($item->{tag} == $CONN->{open_container} && not ($item->{flags} & Crossfire::Protocol::F_OPEN)) {
1842 $OPENCONT = 0; 1857 set_opencont ($CONN, 0, "Floor");
1843 $INVR_LBL->set_text ("Floor");
1844 $INVR->set_items ($self->{container}{0});
1845 1858
1846 $item->{widget}->update_item 1859 } elsif ($item->{flags} & Crossfire::Protocol::F_OPEN) {
1847 if $item->{widget}; 1860 set_opencont ($CONN, $item->{tag}, CFClient::Item::desc_string $item);
1848 } else { 1861 } else {
1849 if ($item->{container} == 0) { 1862 if ($item->{container} == 0) {
1850 update_floorbox; 1863 update_floorbox;
1851 $OPENCONT = 0; 1864 update_container (0);
1852 $INVR_LBL->set_text ("Floor");
1853 $INVR->set_items ($self->{container}{0});
1854 } elsif ($item->{container} == $self->{player}{tag}) { 1865 } elsif ($item->{container} == $self->{player}{tag}) {
1855 $INV->set_items ($self->{container}{$item->{container}}) 1866 $INV->set_items ($self->{container}{$item->{container}})
1856 } 1867 }
1857 } 1868 }
1858} 1869}

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines