… | |
… | |
103 | |
103 | |
104 | our $INVWIN; |
104 | our $INVWIN; |
105 | our $INV; |
105 | our $INV; |
106 | our $INVR; |
106 | our $INVR; |
107 | our $INVR_LBL; |
107 | our $INVR_LBL; |
108 | our $OPENCONT; |
|
|
109 | |
108 | |
110 | sub status { |
109 | sub 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, |
… | |
… | |
1764 | }); |
1774 | }); |
1765 | |
1775 | |
1766 | $WANT_REFRESH++; |
1776 | $WANT_REFRESH++; |
1767 | } |
1777 | } |
1768 | |
1778 | |
|
|
1779 | sub set_opencont { |
|
|
1780 | my ($conn, $tag, $name) = @_; |
|
|
1781 | $conn->{open_container} = $tag; |
|
|
1782 | $INVR_LBL->set_text ($name); |
|
|
1783 | $INVR->set_items ($conn->{container}{$tag}); |
|
|
1784 | } |
|
|
1785 | |
|
|
1786 | sub update_container { |
|
|
1787 | my ($tag) = @_; |
|
|
1788 | $INVR->set_items ($::CONN->{container}{$CONN->{open_container}}) |
|
|
1789 | if $tag == $CONN->{open_container}; |
|
|
1790 | } |
|
|
1791 | |
1769 | sub conn::container_add { |
1792 | sub conn::container_add { |
1770 | my ($self, $tag, $items) = @_; |
1793 | my ($self, $tag, $items) = @_; |
1771 | |
1794 | |
1772 | #d# print "container_add: container $tag ($self->{player}{tag})\n"; |
1795 | #d# print "container_add: container $tag ($self->{player}{tag})\n"; |
1773 | |
1796 | |
1774 | if ($tag == 0) { |
1797 | if ($tag == 0) { |
1775 | update_floorbox; |
1798 | update_floorbox; |
1776 | $OPENCONT = 0; |
1799 | update_container (0); |
1777 | $INVR_LBL->set_text ("Floor"); |
|
|
1778 | $INVR->set_items ($self->{container}{0}); |
|
|
1779 | } elsif ($tag == $self->{player}{tag}) { |
1800 | } elsif ($tag == $self->{player}{tag}) { |
1780 | $INVR_LBL->set_text ("Player"); |
|
|
1781 | $INV->set_items ($self->{container}{$self->{player}{tag}}) |
1801 | $INV->set_items ($self->{container}{$self->{player}{tag}}) |
1782 | } else { |
1802 | } else { |
1783 | $OPENCONT = $tag; |
1803 | update_container ($tag); |
1784 | $INVR_LBL->set_text (CFClient::Item::desc_string $self->{item}->{$OPENCONT}); |
|
|
1785 | $INVR->set_items ($self->{container}{$tag}); |
|
|
1786 | } |
1804 | } |
1787 | |
1805 | |
1788 | # $self-<{player}{tag} => player inv |
1806 | # $self-<{player}{tag} => player inv |
1789 | #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}}; |
1807 | #use PApp::Util; warn PApp::Util::dumpval $self->{container}{$self->{player}{tag}}; |
1790 | } |
1808 | } |
… | |
… | |
1794 | |
1812 | |
1795 | #d# print "container_clear: container $tag ($self->{player}{tag})\n"; |
1813 | #d# print "container_clear: container $tag ($self->{player}{tag})\n"; |
1796 | |
1814 | |
1797 | if ($tag == 0) { |
1815 | if ($tag == 0) { |
1798 | update_floorbox; |
1816 | update_floorbox; |
1799 | $OPENCONT = 0; |
|
|
1800 | $INVR_LBL->set_text ("Floor"); |
|
|
1801 | $INVR->set_items ($self->{container}{0}); |
|
|
1802 | } elsif ($tag == $self->{player}{tag}) { |
1817 | } elsif ($tag == $self->{player}{tag}) { |
1803 | $INVR_LBL->set_text ("Player"); |
|
|
1804 | $INV->set_items ($self->{container}{$tag}) |
1818 | $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 | } |
1819 | } |
1810 | |
1820 | |
1811 | # use PApp::Util; warn PApp::Util::dumpval $self->{container}{0}; |
1821 | # use PApp::Util; warn PApp::Util::dumpval $self->{container}{0}; |
1812 | } |
1822 | } |
1813 | |
1823 | |
… | |
… | |
1817 | for (@items) { |
1827 | for (@items) { |
1818 | #d# print "item_delete: $_->{tag} from $_->{container} ($self->{player}{tag})\n"; |
1828 | #d# print "item_delete: $_->{tag} from $_->{container} ($self->{player}{tag})\n"; |
1819 | |
1829 | |
1820 | if ($_->{container} == 0) { |
1830 | if ($_->{container} == 0) { |
1821 | update_floorbox; |
1831 | update_floorbox; |
1822 | $OPENCONT = 0; |
1832 | update_container ($_->{tag}); |
1823 | $INVR_LBL->set_text ("Floor"); |
|
|
1824 | $INVR->set_items ($self->{container}{0}); |
|
|
1825 | } elsif ($_->{container} == $self->{player}{tag}) { |
1833 | } elsif ($_->{container} == $self->{player}{tag}) { |
1826 | $INVR_LBL->set_text ("Player"); |
|
|
1827 | $INV->set_items ($self->{container}{$self->{player}{tag}}) |
1834 | $INV->set_items ($self->{container}{$self->{player}{tag}}) |
1828 | } else { |
1835 | } else { |
1829 | $OPENCONT = $_->{container}; |
1836 | update_container ($_->{tag}); |
1830 | $INVR_LBL->set_text (CFClient::Item::desc_string $self->{item}->{$OPENCONT}); |
|
|
1831 | $INVR->set_items ($self->{container}{$_->{container}}); |
|
|
1832 | } |
1837 | } |
1833 | } |
1838 | } |
1834 | } |
1839 | } |
1835 | |
1840 | |
1836 | sub conn::item_update { |
1841 | sub conn::item_update { |
1837 | my ($self, $item) = @_; |
1842 | my ($self, $item) = @_; |
1838 | |
1843 | |
1839 | #d# print "item_update: $item->{tag} in $item->{container} ($self->{player}{tag}) ($OPENCONT)\n"; |
1844 | #d# print "item_update: $item->{tag} in $item->{container} ($self->{player}{tag}) ($CONN->{open_container})\n"; |
1840 | |
1845 | |
|
|
1846 | if ($item->{tag} == $self->{player}{tag}) { |
|
|
1847 | $STATWIDS->{weight}->set_text (sprintf "Weight: %.1fkg", $item->{weight} / 1000); |
|
|
1848 | return |
|
|
1849 | } |
|
|
1850 | |
|
|
1851 | CFClient::Item::update_widgets $item; |
|
|
1852 | |
1841 | if ($item->{tag} == $OPENCONT && not ($item->{flags} & Crossfire::Protocol::F_OPEN)) { |
1853 | if ($item->{tag} == $CONN->{open_container} && not ($item->{flags} & Crossfire::Protocol::F_OPEN)) { |
1842 | $OPENCONT = 0; |
1854 | set_opencont ($CONN, 0, "Floor"); |
1843 | $INVR_LBL->set_text ("Floor"); |
|
|
1844 | $INVR->set_items ($self->{container}{0}); |
|
|
1845 | |
1855 | |
1846 | $item->{widget}->update_item |
1856 | } elsif ($item->{flags} & Crossfire::Protocol::F_OPEN) { |
1847 | if $item->{widget}; |
1857 | set_opencont ($CONN, $item->{tag}, CFClient::Item::desc_string $item); |
1848 | } else { |
1858 | } else { |
1849 | if ($item->{container} == 0) { |
1859 | if ($item->{container} == 0) { |
1850 | update_floorbox; |
1860 | update_floorbox; |
1851 | $OPENCONT = 0; |
|
|
1852 | $INVR_LBL->set_text ("Floor"); |
|
|
1853 | $INVR->set_items ($self->{container}{0}); |
|
|
1854 | } elsif ($item->{container} == $self->{player}{tag}) { |
1861 | } elsif ($item->{container} == $self->{player}{tag}) { |
1855 | $INV->set_items ($self->{container}{$item->{container}}) |
1862 | $INV->set_items ($self->{container}{$item->{container}}) |
1856 | } |
1863 | } |
1857 | } |
1864 | } |
1858 | } |
1865 | } |