示例#1
0
    public City Initialize(CityManager pManager, int pRows, int pColumns, float pOffset, Vector3 pStartPos)
    {
        _budget = Glob.StartingBudget;

        _myManager = pManager;

        Rows               = pRows;
        Columns            = pColumns;
        OffSetBetweenTiles = pOffset;

        TilePrefab         = (Resources.Load(Glob.TilePrefab) as GameObject).GetComponent <CustomTile>();
        transform.position = pStartPos;

        _signPrefab = Resources.Load(Glob.SignPrefab) as GameObject;

        _eventManager = GameObject.FindGameObjectWithTag("EventMenu").GetComponent <EventManager>();
        _uiHandler    = GameInitializer.GetUIHandler();
        _soundHandler = GameInitializer.GetSoundHandler();



        DrawMap(pStartPos);
        return(this);
    }
示例#2
0
    void Update()
    {
        if (GameInitializer.GetBuildingHandler().GetCurrentCity() == this && GameInitializer.GetBuildingHandler().IsReadyToBuild())
        {
            if (!GameInitializer.GetPaused())
            {
                if (_currentTurn > Glob.TurnAmount)
                {
                    GameInitializer.EndGame();
                    return;
                }
                if (!_collectedThisTurn)
                {
                    if ((_currentTurn - Glob.EventTurnStart) % Glob.EventTurnInterval == 0 && _myManager is PlayerCityManager && _currentTurn >= Glob.EventTurnStart)
                    {
                        if (!_gotEventThisTurn)
                        {
                            _gotEventThisTurn = true;
                            _eventManager.EnableRandomEvent();
                            return;
                        }
                    }

                    GameInitializer.GetUIHandler().SetTurnText(_currentTurn);
                    UIHandler.ToggleNotificationPanel(false);

                    CollectFromAllBuildings();
                    if (_myManager is PlayerCityManager)
                    {
                        AICityManager AICity = GameInitializer.GetNextCity(this).GetManager() as AICityManager;
                        AICity.ChangeAnimosity(-Mathf.RoundToInt(GetHappyHouseAmount() * Glob.HappyHouseAnimosityChange), GameInitializer.GetNextCity(this));
                    }
                    _collectedThisTurn = true;
                    _gotEventThisTurn  = false;
                    _mayorOffice.UpdateHatPosition(_budget);
                    BudgetChange(0);
                    //_uiHandler.SetResourcesBars((int)_budget); //Just in case no buildings collected anything
                    if (_currentTurn >= 6 && _currentTurn <= 8 && _myManager is PlayerCityManager)
                    {
                        switch (_currentTurn)
                        {
                        case 6:
                            int scoreTurn6 = Mathf.Clamp(Glob.OptimalBudgetTurn6 - (int)_budget, 0, 10);
                            GameInitializer.AddAchieverScore(10 - scoreTurn6);
                            break;

                        case 7:
                            int scoreTurn7 = Mathf.Clamp(Glob.OptimalBudgetTurn7 - (int)_budget, 0, 20) / 2;
                            GameInitializer.AddAchieverScore(10 - scoreTurn7);
                            break;

                        case 8:
                            int scoreTurn8 = Mathf.Clamp(Glob.OptimalBudgetTurn8 - (int)_budget, 0, 40) / 4;
                            GameInitializer.AddAchieverScore(10 - scoreTurn8);
                            break;

                        default:
                            break;
                        }
                    }
                }
                _myManager.HandleTurn(this);
            }
        }
        else if (_collectedThisTurn)
        {
            _collectedThisTurn = false;
            _currentTurn++;
        }
        else if (GameInitializer.GetBuildingHandler().GetCurrentCity() == this && !GameInitializer.GetBuildingHandler().IsReadyToBuild())
        {
            BudgetChange(0);
            // _uiHandler.SetResourcesBars((int)_budget); //Just in case no buildings collected anything
        }
    }
示例#3
0
    // Update is called once per frame
    void Update()
    {
        if (_tutorialActive)
        {
            if (Input.GetKeyDown(Glob.ConfirmButton))
            {
                if (_currentText == 1 && !_tileSelected || _currentText == 3 && !_tileSelected || _currentText == 6 && !_tileSelected || _currentText == 8 && !_turnEnded) //If the player needs to select the correct tile first.
                {
                    return;
                }
                else if (_currentText == 3 && _tileSelected && !_houseBuilt)
                {
                    GameInitializer.GetUIHandler().ToggleBuildPanel(true);
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(0, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(0, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                    _houseBuilt = true;
                    return;
                }
                else if (_currentText == 6 && _tileSelected && !_parkBuilt)
                {
                    GameInitializer.GetUIHandler().ToggleBuildPanel(true);
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(2, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(2, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                    _parkBuilt = true;
                    return;
                }

                _tileSelected = false;


                _currentText++;


                if (_currentText == 1)
                {
                    _myCity.HighlightTile(_tileSelectedX, _tileSelectedY, true); //TODO: Remove highlight after action.
                }
                else if (_currentText == 2)
                {
                    _myCity.HighlightTile(_tileSelectedX, _tileSelectedY, false);
                    GameInitializer.GetUIHandler().ToggleBuildPanel(true);
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(1, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(1, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                }
                else if (_currentText == 3)
                {
                    GameInitializer.GetBuildingHandler().StartBuilding();
                    GameInitializer.GetUIHandler().ToggleBuildPanel(false);

                    _myCity.HighlightTile(_houseBuiltX, _houseBuiltY, true);
                }
                else if (_currentText == 4)
                {
                    _myCity.HighlightTile(_houseBuiltX, _houseBuiltY, false);
                    GameInitializer.GetBuildingHandler().StartBuilding();
                    GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                }
                else if (_currentText == 6)
                {
                    _myCity.HighlightTile(_parkBuiltX, _parkBuiltY, true);
                }
                else if (_currentText == 7)
                {
                    _myCity.HighlightTile(_parkBuiltX, _parkBuiltY, false);
                    GameInitializer.GetBuildingHandler().StartBuilding();
                    GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                }
                else if (_currentText == 10)
                {
                    _myCity.CollectFromAllBuildings();
                    _myCity.ChangeSelectedTile(CityManager.DirectionKey.DOWN);
                    _myCity.BudgetChange(0);
                    //GameInitializer.GetUIHandler().SetResourcesBars((int)_myCity.GetBudget());

                    GameInitializer.GetCameraManager().MoveCameraTo(_myCity.transform.position + Glob.CameraCityOffset, Glob.CameraCitySwitchTime);
                }
                else if (_currentText == 11)
                {
                    GameInitializer.GetUIHandler().ToggleBuildPanel(true);
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(3, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(3, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                }
                else if (_currentText == 12)
                {
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(5, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(5, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                }
                else if (_currentText == 13)
                {
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(6, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(6, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                }
                else if (_currentText == 14)
                {
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(4, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(4, false);
                    GameInitializer.GetBuildingHandler().PlaceBuilding(_myCity.GetSelectedTile());
                }
                else if (_currentText == 17)
                {
                    GameInitializer.GetBuildingHandler().DestroyPlacementBuilding();
                    GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                    //GameInitializer.SetPaused(false);
                    //_tutorialActive = false;
                }
                else if (_currentText >= 18)
                {
                    //GameInitializer.GetBuildingHandler().DestroyPlacementBuilding();
                    //GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                    GameInitializer.SetPaused(false);
                    _tutorialActive = false;
                    return;
                }

                UIHandler.ShowNotification(_allText[_currentText]);//Display the new information.
            }
            if (_currentText == 1 || _currentText == 3 && !_houseBuilt || _currentText == 6 && !_parkBuilt || _currentText == 8 && !_turnEnded)
            {
                handleInput();
            }
        }
    }
示例#4
0
    public override void HandleTurn(City pCity)
    {
        if (_soundHandler == null)
        {
            _soundHandler = GameInitializer.GetSoundHandler();
        }
        City targetCity = pCity;

        if (currentMode == CurrentMode.MISSILEAIM && _isFocusedOnOwnCity)
        {
            targetCity = GameInitializer.GetNextCity(targetCity);
            GameInitializer.GetCameraManager().MoveCameraTo(targetCity.transform.position + Glob.CameraCityOffset, Glob.CameraCitySwitchTime / 2, 4);
            _isFocusedOnOwnCity = false;
            UIHandler.ShowNotification("BOMBS AWAY!"); //TODO: Placeholder text
        }

        if (Input.anyKeyDown)
        {
            if (!_isFocusedOnOwnCity)
            {
                targetCity = GameInitializer.GetNextCity(targetCity);
            }
            if (Input.GetKeyDown(Glob.ExamineButton) && currentMode == CurrentMode.SELECTINGTILE)
            {
                if (_isFocusedOnOwnCity)
                {
                    targetCity = GameInitializer.GetNextCity(pCity);
                    GameInitializer.GetCameraManager().MoveCameraTo(targetCity.transform.position + Glob.CameraCityOffset, Glob.CameraCitySwitchTime / 2);
                    _isFocusedOnOwnCity = false;
                }
                else
                {
                    targetCity = pCity;
                    GameInitializer.GetCameraManager().MoveCameraTo(targetCity.transform.position + Glob.CameraCityOffset, Glob.CameraCitySwitchTime / 2);
                    _isFocusedOnOwnCity = true;
                }
            }
            if (currentMode == CurrentMode.SELECTINGTILE || currentMode == CurrentMode.MISSILEAIM)
            {
                if (Input.GetKeyDown(Glob.RightButton))
                {
                    targetCity.ChangeSelectedTile(DirectionKey.RIGHT);
                }
                if (Input.GetKeyDown(Glob.LeftButton))
                {
                    targetCity.ChangeSelectedTile(DirectionKey.LEFT);
                }
                if (Input.GetKeyDown(Glob.UpButton))
                {
                    targetCity.ChangeSelectedTile(DirectionKey.UP);
                }
                if (Input.GetKeyDown(Glob.DownButton))
                {
                    targetCity.ChangeSelectedTile(DirectionKey.DOWN);
                }
                if (Input.GetKeyDown(Glob.ConfirmButton))
                {
                    if (targetCity.GetSelectedTile().GetBuildingOnTile() == null)
                    {
                        if (_isFocusedOnOwnCity)
                        {
                            //_soundHandler.PlaySound(SoundHandler.Sounds.CONFIRM);
                            SetCurrentMode(CurrentMode.BUILDINGTILE);
                            targetCity.GetSelectedTile().Reset();
                            GameInitializer.GetUIHandler().ToggleBuildPanel(true);
                        }
                    }
                    else if (currentMode == CurrentMode.MISSILEAIM)
                    {
                        Debug.Log(GameInitializer.GetCameraManager().isAnimationDone());
                        if (GameInitializer.GetCameraManager().isAnimationDone())
                        {
                            Missile missile = Instantiate(Glob.GetMissile());
                            missile.SetMissileTile(targetCity.GetSelectedTile());
                            Destroy(targetCity.GetSelectedTile().GetBuildingOnTile().gameObject);
                            targetCity.GetSelectedTile().SetBuilding(null);
                            SetCurrentMode(CurrentMode.SELECTINGTILE);
                            _isFocusedOnOwnCity = true;
                            targetCity          = pCity;
                            //AddMissile with sound.
                            GameInitializer.GetCameraManager().MoveCameraTo(targetCity.transform.position + Glob.CameraCityOffset, Glob.CameraCitySwitchTime / 2, 4);
                            pCity.AddMissileLaunched();
                        }
                        else
                        {
                            Debug.Log("nawh");
                        }
                    }
                    else
                    {
                        SetCurrentMode(CurrentMode.EXAMINEMODE);
                        GameInitializer.GetUIHandler().SetExamineMode(targetCity.GetSelectedTile().GetBuildingOnTile());
                        targetCity.GetSelectedTile().Reset();
                    }
                }
            }
            if (currentMode == CurrentMode.BUILDINGTILE)
            {
                //Places a building in placement mode, can switch between buildings.
                if (GameInitializer.GetBuildingHandler().PlacementBuildingActive())
                {
                    if (Input.GetKeyDown(Glob.DownButton) || Input.GetKeyDown(Glob.RightButton))
                    {
                        //BuildingHandler should probably tell UIHandler what to do.
                        _soundHandler.PlaySound(SoundHandler.Sounds.MOVE);
                        GameInitializer.GetBuildingHandler().ChangeBuildingSelection(1);
                        GameInitializer.GetUIHandler().SetActiveBuildingImage(1);
                    }
                    if (Input.GetKeyDown(Glob.UpButton) || Input.GetKeyDown(Glob.LeftButton))
                    {
                        _soundHandler.PlaySound(SoundHandler.Sounds.MOVE);
                        GameInitializer.GetBuildingHandler().ChangeBuildingSelection(-1);
                        GameInitializer.GetUIHandler().SetActiveBuildingImage(-1);
                    }

                    if (Input.GetKeyDown(Glob.ConfirmButton))
                    {
                        if (GameInitializer.GetBuildingHandler().StartBuilding())
                        {
                            if (currentMode == CurrentMode.BUILDINGTILE)//If nothing changed the current mode
                            {
                                SetCurrentMode(CurrentMode.SELECTINGTILE);
                            }
                            GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                        }
                        else
                        {
                            _soundHandler.PlaySound(SoundHandler.Sounds.ERROR);
                        }
                    }

                    if (Input.GetKeyDown(Glob.CancelButton))
                    {
                        GameInitializer.GetBuildingHandler().DestroyPlacementBuilding();
                        SetCurrentMode(CurrentMode.SELECTINGTILE);
                        GameInitializer.GetUIHandler().ToggleBuildPanel(false);
                    }
                }
                else
                {
                    GameInitializer.GetBuildingHandler().ChangeBuildingSelection(0, false);
                    GameInitializer.GetUIHandler().SetActiveBuildingImage(0, false);
                }
            }
            if (currentMode == CurrentMode.EXAMINEMODE)
            {
                if (Input.GetKeyDown(Glob.CancelButton))
                {
                    GameInitializer.GetUIHandler().ToggleExaminePanel(false);
                    SetCurrentMode(CurrentMode.SELECTINGTILE);
                }
            }
            if (Input.GetKeyDown(Glob.CancelButton) && currentMode != CurrentMode.MISSILEAIM)
            {
                _cancelKeyPressed = Time.time;
            }
        }
        if (Time.time - _cancelKeyPressed >= Glob.EndTurnButtonTime && Input.GetKey(Glob.CancelButton))
        {
            GameInitializer.EndTurn();
            //Debug.Log(GameInitializer.GetBuildingHandler().GetCurrentCity());
            UIHandler.ShowNotification("Turn has ended");
        }
    }