Example #1
0
    /// <summary>
    /// Controlla se vengono premuti degli input da parte del player.
    /// </summary>
    void CheckInputStatus(InputStatus _inputStatus)
    {
        if (currentMenu == null)

        {
            if (_inputStatus.Y == ButtonState.Released && GameManager.I.OnMeravigliaDestroyed() == true)
            {
                currentMenu    = OpenEndGameMenu();
                Time.timeScale = 0.00000000001f;
                if (currentMenu.PossibiliScelteAttuali.Count < 1)
                {
                    currentMenu.Close();
                }
            }
            CellDoomstock cell = GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid];
            if (_inputStatus.X == ButtonState.Pressed)
            {
                if (cell.building && cell.building.CurrentState != BuildingState.Destroyed)
                {
                    Ability(cell);
                }
            }
            // controllo che la levetta sia stata rilasciata nei due sensi o quasi
            if (_inputStatus.LeftThumbSticksAxisY <= 0.2 && _inputStatus.LeftThumbSticksAxisY >= -0.2)
            {
                isReleasedVertical = true;
            }
            if (_inputStatus.LeftThumbSticksAxisX <= 0.2 && _inputStatus.LeftThumbSticksAxisX >= -0.2)
            {
                isReleasedHorizontal = true;
            }

            if ((_inputStatus.DPadUp == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisY >= 0.5) && isReleasedVertical) // GO UP
            {
                GameManager.I.gridController.MoveToGridPosition(XpositionOnGrid, YpositionOnGrid + 1, this);
                isReleasedVertical = false;
            }
            if ((_inputStatus.DPadLeft == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisX <= -0.5) && isReleasedHorizontal)  // GO LEFT
            {
                GameManager.I.gridController.MoveToGridPosition(XpositionOnGrid - 1, YpositionOnGrid, this);
                isReleasedHorizontal = false;
            }
            if ((_inputStatus.DPadDown == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisY <= -0.5) && isReleasedVertical) // GO DOWN
            {
                GameManager.I.gridController.MoveToGridPosition(XpositionOnGrid, YpositionOnGrid - 1, this);
                isReleasedVertical = false;
            }
            if ((_inputStatus.DPadRight == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisX >= 0.5) && isReleasedHorizontal) // GO RIGHT
            {
                GameManager.I.gridController.MoveToGridPosition(XpositionOnGrid + 1, YpositionOnGrid, this);
                isReleasedHorizontal = false;
            }
            if (_inputStatus.A == ButtonState.Pressed) // SELECT
            {
                if (cell.building)
                {
                    switch (cell.building.CurrentState)
                    {
                    case BuildingState.Construction:
                        return;

                    case BuildingState.Built:
                    case BuildingState.Producing:
                        if (CanClick())
                        {
                            foreach (var item in cell.building.BuildingResources)
                            {
                                GameManager.I.buildingManager.GetBuildingView(cell.building.UniqueID).LimitReached(item);
                            }
                            AddResourceOnClick(cell.building, cell);
                            foreach (var item in cell.building.BuildingResources)
                            {
                                GameManager.I.buildingManager.GetBuildingView(cell.building.UniqueID).LimitReached(item);
                            }
                        }
                        break;

                    case BuildingState.Ready:
                        if (CanClick())
                        {
                            GameManager.I.messagesManager.DesotryUiInformation(cell);
                            foreach (var item in cell.building.BuildingResources)
                            {
                                GameManager.I.GetResourceDataByID(item.ID).Value += item.Limit;
                                switch (item.ID)
                                {
                                case "Food":
                                    GameManager.I.soundManager.GetFoodSound();
                                    break;

                                case "Wood":
                                    GameManager.I.soundManager.GetWoodSound();
                                    break;

                                case "Faith":

                                    break;

                                case "Stone":
                                    GameManager.I.soundManager.GetStoneSound();
                                    break;

                                default:
                                    break;
                                }

                                item.Value = 0;

                                if (cell.building.Population.Count > 0)
                                {
                                    GameManager.I.buildingManager.GetBuildingView(cell.building.UniqueID).SetBuildingStatus(BuildingState.Waiting);
                                }
                                else
                                {
                                    GameManager.I.buildingManager.GetBuildingView(cell.building.UniqueID).SetBuildingStatus(BuildingState.Waiting);
                                }
                            }
                        }
                        break;

                    case BuildingState.Destroyed:
                        GameManager.I.messagesManager.DesotryUiInformation(cell);
                        RemoveBuildingDebris(cell.building);
                        break;

                    case BuildingState.Waiting:
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    if (GameManager.I.gridController.CanUseMenu(this))
                    {
                        GameManager.I.soundManager.GetOpenMenuSound();
                        currentMenu = OpenMenuPlayerID();
                        if (currentMenu.PossibiliScelteAttuali.Count < 1)
                        {
                            currentMenu.Close();
                        }
                    }
                }
            }
            GameManager.I.uiManager.SetResourcesTextColor();
            GameManager.I.uiManager.SetFaithTextColor();
            if (_inputStatus.Start == ButtonState.Pressed)
            {
                GameManager.I.soundManager.GetOpenMenuSound();
                currentMenu    = OpenPauseMenu();
                Time.timeScale = 0.00000000001f;
                if (currentMenu.PossibiliScelteAttuali.Count < 1)
                {
                    currentMenu.Close();
                }
            }

            if (_inputStatus.RightShoulder == ButtonState.Pressed) // ADD POPULATION
            {
                if (GameManager.I.populationManager.GetAllFreePeople().Count > 0)
                {
                    BuildingData _building = GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building;
                    if (_building && _building.ID != "Casa" && _building.ID != "Muro" && _building.ID != "Torretta" && _building.CurrentState != BuildingState.Construction)
                    {
                        if (GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building.PopulationLimit > GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building.Population.Count)
                        {
                            List <PopulationData> freePeople = GameManager.I.populationManager.GetAllFreePeople();
                            int randomInd = Random.Range(0, freePeople.Count - 1);
                            AddPopulation(GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building, freePeople[randomInd].UniqueID);
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }
            if (_inputStatus.LeftShoulder == ButtonState.Pressed) // Remove Population
            {
                if (GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building != null)
                {
                    BuildingData _building = GameManager.I.gridController.Cells[XpositionOnGrid, YpositionOnGrid].building;
                    if (_building.Population.Count > 0)
                    {
                        RemovePopulationFromBuilding(_building.Population[_building.Population.Count - 1].UniqueID, _building);
                        GameManager.I.messagesManager.ShowiInformation(MessageLableType.RemovePopulation, cell, true, "-1");
                    }
                }
                else
                {
                    return;
                }
            }
        }
        else
        {
            // Menu mode

            // controllo che la levetta sia stata rilasciata nei due sensi o quasi
            if (_inputStatus.LeftThumbSticksAxisY <= 0.2 && _inputStatus.LeftThumbSticksAxisY >= -0.2)
            {
                isReleasedVertical = true;
            }
            if (_inputStatus.LeftThumbSticksAxisX <= 0.2 && _inputStatus.LeftThumbSticksAxisX >= -0.2)
            {
                isReleasedHorizontal = true;
            }

            if ((_inputStatus.DPadUp == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisY >= 0.5) && isReleasedVertical) // GO UP
            {
                currentMenu.MoveToPrevItem();
                isReleasedVertical = false;
            }
            if ((_inputStatus.DPadLeft == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisX <= -0.5) && isReleasedHorizontal)// GO LEFT
            {
                isReleasedHorizontal = false;
            }
            if ((_inputStatus.DPadDown == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisY <= -0.5) && isReleasedVertical) // GO DOWN
            {
                currentMenu.MoveToNextItem();
                isReleasedVertical = false;
            }
            if ((_inputStatus.DPadRight == ButtonState.Pressed || _inputStatus.LeftThumbSticksAxisX >= 0.5) && isReleasedHorizontal) // GO RIGHT
            {
                isReleasedHorizontal = false;
            }
            if (_inputStatus.A == ButtonState.Pressed)// SELECT
            {
                GameManager.I.soundManager.GetOpenMenuSound();
                if (currentMenu.PossibiliScelteAttuali.Count > 0)
                {
                    currentMenu.AddSelection(currentMenu.PossibiliScelteAttuali[currentMenu.IndiceDellaSelezioneEvidenziata]);
                }
            }

            if (_inputStatus.B == ButtonState.Pressed)// DESELECT
            {
                GameManager.I.soundManager.BackMenuSound();
                currentMenu.GoBack();
            }
        }
    }