Exemple #1
0
 public bool Fire(int action, List <Unit.BattleModel>[] rangeList)
 {
     if (action % model.FireRate != 0)
     {
         return(false);
     }
     if (target != null)
     {
         if (target.data.HP == 0)
         {
             target = null;
         }
     }
     if (target == null)
     {
         if (order > 10)
         {
             target = rangeList[3][Random.Range(0, rangeList[3].Count)];
         }
         else if (order > 8)
         {
             target = rangeList[4][Random.Range(0, rangeList[3].Count)];
         }
         else
         {
             List <Unit.BattleModel> list = rangeList[(int)model.Range];
             target = list[Random.Range(0, list.Count)];
         }
     }
     target.hitRange = (Range)Mathf.Max((int)target.hitRange, (int)model.Range);
     target.totalFire++;
     target.totalAttackers += model.UnitCount(data.HP);
     target.totalDamage    += model.UnitCount(data.HP) * model.ATK[(int)target.model.Field];
     return(true);
 }
Exemple #2
0
        public void RegisterReserveUnit(Unit.BattleModel unit)
        {
            Toggle btn = Instantiate(prefabUnitButton, reserveGroup).GetComponent <Toggle>();

            btn.gameObject.name = unit.model.Type.ToString();
            btn.group           = btn.GetComponentInParent <ToggleGroup>();
            btn.GetComponent <Image>().sprite = unit.model.Sprite;
            btn.GetComponentsInChildren <TextMeshProUGUI>()[0].text = unit.model.Field == Unit.Field.Dubi ? "x " + unit.UnitCount().ToString() : unit.data.HP.ToString();
            listReserveUnits.Add(btn);
            btn.onValueChanged.AddListener(isOn =>
            {
                if (isOn)
                {
                    unitSelected = unit;
                    btnSelected  = btn;

                    grids[0].avatar.sprite  = unit.model.Sprite;
                    grids[0].textType.text  = Property.Type(unit.data.Type);
                    grids[0].textFire.text  = unit.model.FireRate.ToString();
                    grids[0].textRange.text = Property.Range(unit.model.Range);
                    grids[0].textHP.text    = unit.data.HP.ToString();
                    grids[0].textCount.text = unit.UnitCount().ToString();
                    grids[0].textDubi.text  = (unit.UnitCount() * unit.model.ATK[0]).ToString();
                    grids[0].textMech.text  = (unit.UnitCount() * unit.model.ATK[1]).ToString();
                    grids[0].textAir.text   = (unit.UnitCount() * unit.model.ATK[2]).ToString();
                }
            });
            btn.transform.localScale = Vector3.one;
            btn.transform.SetSiblingIndex(0);
            btn.isOn        = true;
            scrollbar.value = 0;
        }
Exemple #3
0
 public bool ActionResult()
 {
     for (int side = 0; side < 2; side++)
     {
         for (int order = 0; order < 13; order++)
         {
             if (legions[side].squadron.ContainsKey(order))
             {
                 Unit.BattleModel unit = legions[side].squadron[order];
                 // Debug.LogWarning(wave + " / " + action + " / " + side + " / " + order);
                 if (unit.ActionResult())
                 {
                     if (!quickBattle)
                     {
                         grids[side * 17 + order].Hit();
                     }
                     unit.Clear();
                     if (unit.data.HP == 0)
                     {
                         legions[side].squadron.Remove(order);
                         if (!quickBattle)
                         {
                             grids[side * 17 + order].Disable(order);
                         }
                     }
                 }
             }
         }
         if (legions[side].squadron.Count == 0)
         {
             isFinish = true;
             return(true);
         }
     }
     return(false);
 }
Exemple #4
0
        void Update()
        {
            for (int k = 0; k < 10; k++)
            {
                if (Input.GetKeyDown((KeyCode)(k + 48)) || Input.GetKeyDown((KeyCode)(k + 256)))
                {
                    id = 1000 + k;
                    CreateLegionUnit();
                }
            }

            if (Input.GetMouseButtonDown(0))
            {
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                if (Physics.Raycast(ray, out hit))
                {
                    Warfare.GridManager grid = hit.transform.GetComponent <Warfare.GridManager>();
                    if (grid)
                    {
                        if (grid.unit == null)
                        {
                            if (btnSelected != null && unitSelected != null)
                            {
                                if (grid.Deploy(unitSelected))
                                {
                                    warfare.units.Remove(unitSelected);
                                    warfare.legions[id].squadron.Add(grid.Order, unitSelected);
                                    // warfare.playerData.units.Remove (unitSelected.data);
                                    // warfare.playerData.legions[id].squadron.Add (grid.Order, unitSelected.data);
                                    listReserveUnits.Remove(btnSelected);
                                    int index = btnSelected.transform.GetSiblingIndex();
                                    DestroyImmediate(btnSelected.gameObject);
                                    if (reserveGroup.GetComponentsInChildren <Toggle>().Length > 0)
                                    {
                                        if (reserveGroup.GetComponentsInChildren <Toggle>().Length > index)
                                        {
                                            btnSelected = reserveGroup.GetComponentsInChildren <Toggle>()[index];
                                        }
                                        else
                                        {
                                            btnSelected = reserveGroup.GetComponentsInChildren <Toggle>()[index - 1];
                                        }
                                        btnSelected.isOn = true;
                                    }
                                    else
                                    {
                                        btnSelected  = null;
                                        unitSelected = null;
                                    }
                                    ResetReserveGroup();
                                }
                            }
                        }
                        else
                        {
                            warfare.units.Add(grid.unit);
                            // warfare.playerData.units.Add (grid.unit.data);
                            RegisterReserveUnit(grid.unit);
                            ResetReserveGroup();
                            warfare.legions[id].squadron.Remove(grid.Order);
                            // warfare.playerData.legions[id].squadron.Remove (grid.Order);
                            grid.Disarmament();
                        }
                    }
                }
            }

            if (Input.GetKeyDown(KeyCode.F3))
            {
                warfare.Save(0);
            }
            if (Input.GetKeyDown(KeyCode.F4))
            {
                if (warfare.Load(0))
                {
                    CreateLegionUnit();
                    CreateReserveUnit();
                }
            }
        }