SlaveManager.pm.svn-base
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:2k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. package AI::SlaveManager;
  2. use strict;
  3. use Time::HiRes qw(time);
  4. use Globals;
  5. use Log qw/message warning error debug/;
  6. use AI;
  7. use Utils;
  8. use Misc;
  9. use Translation;
  10. use AI::Slave;
  11. sub addSlave {
  12. my $actor = shift;
  13. $actor->{slave_ai_seq} = [];
  14. $actor->{slave_ai_seq_args} = [];
  15. $actor->{slave_skillsID} = [];
  16. $actor->{slave_AI} = 2;
  17. if ($actor->{actorType} eq 'Homunculus') {
  18. $actor->{slave_configPrefix} = 'homunculus_';
  19. bless $actor, 'AI::Slave::Homunculus';
  20. } elsif ($actor->{actorType} eq 'Mercenary') {
  21. $actor->{slave_configPrefix} = 'mercenary_';
  22. bless $actor, 'AI::Slave::Mercenary';
  23. } else {
  24. $actor->{slave_configPrefix} = 'slave_';
  25. bless $actor, 'AI::Slave';
  26. }
  27. $char->{slaves}{$actor->{ID}} = $actor;
  28. }
  29. sub clear {
  30. return unless defined $char;
  31. foreach my $slave (values %{$char->{slaves}}) {
  32. if ($slave && %{$slave} && $slave->isa ('AI::Slave')) {
  33. $slave->clear (@_);
  34. }
  35. }
  36. }
  37. sub iterate {
  38. return unless defined $char;
  39. return unless $char->{slaves};
  40. my $i = 0;
  41. foreach my $slave (values %{$char->{slaves}}) {
  42. if ($slave && %{$slave} && $slave->isa ('AI::Slave')) {
  43. $slave->iterate;
  44. $i++;
  45. }
  46. }
  47. }
  48. sub isIdle {
  49. return 1 unless defined $char;
  50. foreach my $slave (values %{$char->{slaves}}) {
  51. if ($slave && %{$slave} && $slave->isa ('AI::Slave')) {
  52. return 0 unless $slave->isIdle;
  53. }
  54. }
  55. return 1;
  56. }
  57. sub setMapChanged {
  58. return unless defined $char;
  59. delete $char->{slaves};
  60. #  foreach my $slave (values %{$char->{slaves}}) {
  61. #  if ($slave && %{$slave} && $slave->isa ('AI::Slave')) {
  62. #  for (my $i = 0; $i < @{$slave->{slave_ai_seq}}; $i++) {
  63. #  $slave->slave_setMapChanged ($i);
  64. #  }
  65. #  }
  66. #  }
  67. }
  68. 1;