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;
 }
Esempio n. 6
0
    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;
 }