static AExecutableBehaviour GetBehaviourConsumable(ConsumableStack stack, AiSquadController controller) { if (stack.Consumable is ConsumablePilumsVolley) { return(new PilumsVolleyBehaviour(controller, stack)); } else { return(null); } }
public static AExecutableBehaviour GetBehaviour(AExecutableStack stack, AiSquadController controller) { if (stack is SkillStack) { return(GetBehaviourSkill(stack as SkillStack, controller)); } else if (stack is ConsumableStack) { return(GetBehaviourConsumable(stack as ConsumableStack, controller)); } else { return(null); } }
static AExecutableBehaviour GetBehaviourSkill(SkillStack stack, AiSquadController controller) { if (stack.Skill is SkillCharge) { return(new SkillChargeBehaviour(controller, stack)); } else if (stack.Skill is SkillArrowsValley) { return(new ArrowVolleyBehaviour(controller, stack)); } else { return(null); } }
public SkillChargeBehaviour(AiSquadController controller, SkillStack stack) : base(controller) { this.stack = stack; }
public PilumsVolleyBehaviour(AiSquadController controller, ConsumableStack stack) : base(controller) { this.stack = stack; stack.Consumable.CallbackUsedCount += Volley_CallbackUsedCount; }
void Start() { lookTarget = transform.GetChild(0); rotation = Quaternion.LookRotation(Vector3.forward, lookTarget.position - transform.position); //squad prop Squad origin = squadProperties.SquadOrigin; Squad squad = Instantiate(origin) as Squad; if (!squadProperties.UseDefaultUnitCount) { squad.FULL_SQUAD_UNIT_COUNT = squadProperties.UnitCount; } squad.fraction = squadProperties.Fraction; squad.PositionsTransform.position = transform.position; squad.PositionsTransform.rotation = rotation; squad.EndLookRotation = rotation; squad.DefaultUnitStats = squadProperties.UnitStats; var inv = squad.Inventory; //equipment if (helmetEquipment != null) { inv.Helmet = helmetEquipment.EquipmentByLevel; } if (bodyEquipment != null) { inv.Body = bodyEquipment.EquipmentByLevel; } if (weaponEquipment != null) { inv.Weapon = weaponEquipment.EquipmentByLevel; } if (shieldEquipment != null) { inv.Shield = shieldEquipment.EquipmentByLevel; } //skills if (skills != null) { if (skills.AllowOwnSkill) { inv.FirstSkill = skills.SkillByLevel; } else { inv.FirstSkill = null; } if (skills.AllowOwnSkill) { inv.SecondSkill = skills.SkillByLevel; if (inv.SecondSkill.Skill == inv.FirstSkill.Skill) { inv.SecondSkill = null; } } else { inv.SecondSkill = null; } } else { inv.FirstSkill = null; inv.SecondSkill = null; } //consumables if (consumables != null) { if (consumables.AllowOwnConsumable) { inv.FirstConsumable = consumables.ConsumableByLevel; inv.FirstConsumable.Count = squad.FULL_SQUAD_UNIT_COUNT; } else { inv.FirstConsumable = null; } if (consumables.AllowOwnConsumable) { inv.SecondConsumable = consumables.ConsumableByLevel; inv.SecondConsumable.Count = squad.FULL_SQUAD_UNIT_COUNT; } else { inv.SecondConsumable = null; } } else { inv.FirstConsumable = null; inv.SecondConsumable = null; } //AI squad.CurrentFormation = aiSettings.StartFormation; AiSquadController controller = squad.GetComponent <AiSquadController>(); if (controller != null) { controller.Mode = aiSettings.Mode; if (!aiSettings.UseDefaultDistancesOptions) { controller.DistancesOptions = aiSettings.DistancesOptions; } if (!aiSettings.UseDefaultReformOptions) { controller.ReformOptions = aiSettings.ReformOptions; } } Destroy(gameObject); }
public ArrowVolleyBehaviour(AiSquadController controller, SkillStack stack) : base(controller) { this.stack = stack; }
public AExecutableBehaviour(AiSquadController controller) { this.controller = controller; }