每个种族对应一个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) 编辑 收藏 引用