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); }
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; }
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); }
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(); } } }