posts - 72,  comments - 4,  trackbacks - 0

 

每个种族对应一个AiInterace对象,这个对象有所有该族的所有角色对象指针,并拥有以下AiRule成员:
 AiRuleWorkerHarvest
 AiRuleRefreshHarvester
 AiRuleScoutPatrol
 AiRuleRepair      
 AiRuleReturnBase
 AiRuleMassiveAttack
 AiRuleAddTasks
 AiRuleBuildOneFarm
 AiRuleProduceResourceProducer
 AiRuleProduce
 AiRuleBuild
 AiRuleUpgrade
 AiRuleExpand
 
一。遍历所有种族的AiInterace对象,进行AiRule的更新:
  1. 在AiRuleXXXX的::test()测试该话是否要进行处理
  2. 在AiRuleXXXX的::execute()中进行处理,为对应要处理的角色giveCommand(CommandType)
 
二。Command的更新:
   每种cmd调用它成员UnitUpdater中对应的更新函数(比如HarvestCommandType::update中调用unitUpdater->updateHarvest),
   在这更新中为对应角色指定对应的技能类形, 据技能类型进行处理。  
   
   
     AIRule-->CMD-->skilltype

另外操作一般都是以种族为类别进行的,所以选中一个单位后双击可以选中所有相同类型的角色。搜矿搜树什么的也归类搜索就减少消耗。
posted on 2010-11-03 23:12 flipcode 阅读(167) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理