private ITicker _AttackStrategy() { Guid enemy = Guid.Empty; var skill = ACTOR_STATUS_TYPE.NORMAL_IDLE; float distance = 0; var builder = new Regulus.BehaviourTree.Builder(); var traceStrategy = new TraceStrategy(this); return(builder .Sequence() .Action((delta) => _FindEnemy(out enemy)) .Selector() .Sub(_ChangeToBattle()) .Sequence() .Action((delta) => _FindSkill(ref skill, ref distance)) .Action((delta) => traceStrategy.Reset(enemy, distance)) .Action((delta) => traceStrategy.Tick(delta)) .Action((delta) => _UseSkill(skill)) .End() .End() .End() .Build()); }
private ITicker _ResourceObtaionStrategy() { var th = new TurnHandler(this); var traceStrategy = new TraceStrategy(this); Guid target = Guid.Empty; var builder = new Regulus.BehaviourTree.Builder(); var distance = 1f; var node = builder .Sequence() .Action(_NotEnemy) .Action((delta) => _FindResourceTarget(out target)) .Action((delta) => _GetDistance(target, out distance)) //.Action((delta) => _Talk(string.Format("Mining Target. Distance:{0}", distance))) .Sequence() .Action((delta) => traceStrategy.Reset(target, distance)) .Action((delta) => traceStrategy.Tick(delta)) //.Action((delta) => _Talk("Begin Mining .")) .Action((delta) => _Loot(target)) //.Action((delta) => _Talk("Mining Done.")) .End() .End() .Build(); return(node); }
private ITicker _LootStrategy() { var th = new TurnHandler(this); var traceStrategy = new TraceStrategy(this); Guid target = Guid.Empty; var builder = new Regulus.BehaviourTree.Builder(); var distance = 1f; var node = builder .Sequence() .Action(_NotEnemy) .Action((delta) => _FindLootTarget(out target)) .Action((delta) => traceStrategy.Reset(target, distance)) .Action((delta) => traceStrategy.Tick(delta)) .Action((delta) => _Loot(target)) .End() .Build(); return(node); }