Beispiel #1
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();
                }
            }
        }
        void Update()
        {
            if (Input.GetButtonDown("Fire2") && state == BattleState.Ready)
            {
                state = BattleState.Window;
                windowFight.SetActive(true);
                btnFight.Select();
            }
            if (Input.GetKeyDown(KeyCode.N))
            {
                windowTips.SetActive(true);
                btnOK.Select();
                textTips.text = "第" + battle.wave + "波會戰即將開始,請下命令吧!";
            }
            if (Input.GetKeyDown(KeyCode.F3))
            {
                warfare.Save(3);
            }
            if (Input.GetKeyDown(KeyCode.B) && state == BattleState.Ready)
            {
                Fight();
            }
            // if (Input.GetKeyDown (KeyCode.F5))
            //     Initialize (new int[] { 2, 3 }, true);
            // if (Input.GetKeyDown (KeyCode.F6))
            //     Initialize (new int[] { 2, 3 }, false);

            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 (state == BattleState.Ready && grid.state == GridState.Friend)
                        {
                            audioSource.PlayOneShot(clipClick);
                            orderSelected = grid.Order;
                            if (grid.Order > 10)
                            {
                                targetList = battle.legions[1].rangeList[3];
                            }
                            else if (grid.Order > 8)
                            {
                                targetList = battle.legions[1].rangeList[4];
                            }
                            else
                            {
                                targetList = battle.legions[1].rangeList[(int)grid.unit.model.Range];
                            }

                            int count = targetList.Count;
                            for (int i = 0; i < count; i++)
                            {
                                grids[17 + targetList[i].order].Aim();
                            }
                            state = BattleState.Aim;
                        }
                        else if (state == BattleState.Aim && grid.isTarget)
                        {
                            audioSource.PlayOneShot(clipClick);
                            battle.legions[0].squadron[orderSelected].target = battle.legions[1].squadron[grid.Order];
                            int count = targetList.Count;
                            for (int i = 0; i < count; i++)
                            {
                                grids[17 + targetList[i].order].Ready();
                            }
                            state = BattleState.Ready;
                        }
                    }
                }
            }

            if (state == BattleState.Fighting)
            {
                textAction.text = battle.action.ToString();
                if (Time.time > nextActionRearrangeTime)
                {
                    nextActionRearrangeTime = Time.time + 1f;
                    battle.Rearrange();
                }
                if (Time.time > nextActionFireTime)
                {
                    nextActionFireTime = Time.time + 1f;
                    battle.Fire();
                }
                if (Time.time > nextActionResultTime)
                {
                    nextActionResultTime = Time.time + 1f;
                    battle.ActionResult();
                    if (battle.action == battle.maxAction)
                    {
                        FormUp();
                    }
                }
            }
        }