ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.608 by root, Sun Nov 18 09:53:57 2012 UTC vs.
Revision 1.613 by root, Mon Nov 26 13:12:16 2012 UTC

597 my $busy; 597 my $busy;
598 598
599 while () { 599 while () {
600 next_job: 600 next_job:
601 601
602 Coro::cede;
603
602 my $avail = cf::till_tick; 604 my $avail = cf::till_tick;
603 605
604 for (0 .. $#SLOT_QUEUE) { 606 for (0 .. $#SLOT_QUEUE) {
605 if ($SLOT_QUEUE[$_][0] <= $avail) { 607 if ($SLOT_QUEUE[$_][0] <= $avail) {
606 $busy = 0; 608 $busy = 0;
607 my $job = splice @SLOT_QUEUE, $_, 1, (); 609 my $job = splice @SLOT_QUEUE, $_, 1, ();
608 $job->[2]->send; 610 $job->[2]->send;
609 Coro::cede;
610 goto next_job; 611 goto next_job;
611 } else { 612 } else {
612 $SLOT_QUEUE[$_][0] *= $SLOT_DECAY; 613 $SLOT_QUEUE[$_][0] *= $SLOT_DECAY;
613 } 614 }
614 } 615 }
615 616
616 if (@SLOT_QUEUE) { 617 if (@SLOT_QUEUE) {
617 # we do not use wait_for_tick() as it returns immediately when tick is inactive 618 wait_for_tick;
618 $WAIT_FOR_TICK->wait;
619 } else { 619 } else {
620 $busy = 0; 620 $busy = 0;
621 Coro::schedule; 621 Coro::schedule;
622 } 622 }
623 } 623 }
3276 if @{ $self->{query_queue} } == 1; 3276 if @{ $self->{query_queue} } == 1;
3277 3277
3278 1 3278 1
3279} 3279}
3280 3280
3281=item $client->update_command_faces
3282
3283=cut
3284
3285our %COMMAND_FACE;
3286
3287sub cf::client::update_command_faces {
3288 my ($self) = @_;
3289
3290 my @faces = grep $_,
3291 $COMMAND_FACE{preferred},
3292 $COMMAND_FACE{standard},
3293 $COMMAND_FACE{skill},
3294 $self->pl->ob->flag (cf::FLAG_WIZ) ? $COMMAND_FACE{dm} : (),
3295 $COMMAND_FACE{emote},
3296 ;
3297
3298 $self->send_face ($_)
3299 for @faces;
3300 $self->flush_fx;
3301
3302 $self->ext_msg (command_list => @faces);
3303}
3304
3305=item cf::client::set_command_face $type, $commands
3306
3307=cut
3308
3309sub cf::client::set_command_face {
3310 my ($type, $list) = @_;
3311
3312 my $idx = &cf::face::set ( #d# ugly forward reference
3313 "command_list/$type" => cf::FT_RSRC,
3314 JSON::XS->new->utf8->encode ([ sort @$list ])
3315 );
3316
3317 $COMMAND_FACE{$type} = $idx;
3318}
3319
3281cf::client->attach ( 3320cf::client->attach (
3282 on_connect => sub { 3321 on_connect => sub {
3283 my ($ns) = @_; 3322 my ($ns) = @_;
3284 3323
3285 $ns->{json_coder} = JSON::XS->new->utf8->max_size (1e6)->convert_blessed; 3324 $ns->{json_coder} = JSON::XS->new->utf8->max_size (1e6)->convert_blessed;
3749 cf::face::set 3788 cf::face::set
3750 "res/spell_paths" => FT_RSRC, 3789 "res/spell_paths" => FT_RSRC,
3751 JSON::XS->new->utf8->canonical->encode ( 3790 JSON::XS->new->utf8->canonical->encode (
3752 [map [cf::spellpathnames ($_)], 0 .. NRSPELLPATHS - 1] 3791 [map [cf::spellpathnames ($_)], 0 .. NRSPELLPATHS - 1]
3753 ); 3792 );
3793
3794 # command completion
3795 my @commands;
3796
3797 for (0..cf::arch::skillvec_size - 1) {
3798 my $skill = cf::arch::skillvec $_;
3799 my $name = $skill->name;
3800 my $flags = cf::skill_flags $skill->subtype;
3801
3802 push @commands, "ready_skill $name" if $flags & (SF_COMBAT | SF_RANGED | SF_GRACE);
3803 push @commands, "use_skill $name" if $flags & (SF_USE | SF_AUTARK | SF_GRACE);
3804 }
3805
3806 cf::client::set_command_face skill => \@commands;
3754} 3807}
3755 3808
3756sub reload_treasures { 3809sub reload_treasures {
3757 load_resource_file "$DATADIR/treasures" 3810 load_resource_file "$DATADIR/treasures"
3758 or die "unable to load treasurelists\n"; 3811 or die "unable to load treasurelists\n";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines