예제 #1
0
    public void AdvanceState(int winnerTeamID)
    {
        previousState = state;

        if (winnerTeamID == Match.TEAM_1_ID)
        {
            state++;
        }
        else if (winnerTeamID == Match.TEAM_2_ID)
        {
            state--;
        }
        else
        {
            Debug.LogError("PlanetLogic AdvanceState() winnerTeamID is not 1 or 2");
        }

        transitionAction.Invoke(previousState, state);

        if (FinalStateReached())
        {
            // End game
            //GameManager.Instance.EndMatch(winnerTeamID);
            Debug.Log("Game has ENDED!");
        }
    }
예제 #2
0
    // Start is called before the first frame update
    void Start()
    {
        planetState = PlanetState.Orbiting;

        navMeshAgent             = this.gameObject.GetComponent <NavMeshAgent>();
        navMeshAgent.destination = home.transform.position;
    }
예제 #3
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         UpdateIcon();
     }
 }
예제 #4
0
    public void Initialize(int index)
    {
        pTransform = this.transform;
        animator   = GetComponentInChildren <Animator>();
        //Search for the corresponding planet in the save file, based on the name
        PlanetState ps = GameState.CurrentState.planetStates.Find(x => x.planetName.Equals(data.planetName));

        if (ps != null)
        {
            this.state = ps;
            if (state.unlocked)
            {
                GetHapinessPointsAfterBeingAway();
                this.gameObject.SetActive(true);
            }
            else
            {
                this.gameObject.SetActive(false);
            }
        }
        else
        {
            Debug.LogErrorFormat("Planet {0} not found in the save file", data.planetName);
        }
    }
예제 #5
0
        public PlanetState[] GetPlanetsStates()
        {
            var states = new PlanetState[_planets.Count];

            for (int i = 0; i < states.Length; i++)
            {
                var state = new PlanetState();

                var orbitWalker = _planets[i].OrbitWalkerProvider.GetOrbitWalker();
                state.AngularSpeed = orbitWalker.AngularSpeed;
                state.CurAngle     = orbitWalker.CurAngle;
                state.OrbitRadius  = orbitWalker.OrbitRadius;
                state.Rotation     = orbitWalker.Transform.localRotation.eulerAngles;

                state.IsPlayer = _planets[i].Id == _playerPlanetId;

                var health = _planets[i].HealthProvider.GetHealth();
                state.MaxHealth = health.MaxHp;
                state.CurHealth = health.CurHp;

                var cannon = _planets[i].CannonProvider.GetCannon();
                state.RocketType = cannon.RocketType;

                states[i] = state;
            }

            return(states);
        }
예제 #6
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         MakeAvailableModuleForPlanet(planet.Data.Id);
     }
 }
예제 #7
0
 private void OnPlanetState(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         UpdateViews();
     }
 }
예제 #8
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         UpdateLevelProgressesSprites();
     }
 }
예제 #9
0
    // Use this for initialization
    void Start()
    {
        if (this.gameObject.tag == "Earth")
        {
            planetState        = PlanetState.colonized;
            int_NumberOfHumans = int_StartingHumans;
            GameManager.SharedInstance.HumanCount += int_StartingHumans;
        }
        else
        {
            planetState        = PlanetState.empty;
            int_NumberOfHumans = 0;
        }

        float_RotationSpeed   = Random.Range(1f, 2.75f);
        int_RotationDirection = Random.Range(0, 2);

        if (int_RotationDirection == 0)
        {
            int_RotationDirection = -1;
        }
        else
        {
            int_RotationDirection = 1;
        }

        float_RotationSpeed *= int_RotationDirection;
    }
예제 #10
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo info)
 {
     if (newState == PlanetState.Opened && info.Id > PlanetConst.EARTH_ID)
     {
         UpdateIcon();
     }
 }
예제 #11
0
    private void GeneratePlanets(bool isLoadRequest = false, GameState gameState = null)
    {
        for (int i = 0; i < totalPlanets; i++)
        {
            GameObject planet = Instantiate(gameConfig.planetPrefab);
            planet.name = "Planet " + i;
            PlanetState planetState;
            if (isLoadRequest)
            {
                planetState = gameState.planetsStates[i];
            }
            else
            {
                RocketType rocketType = ComputationalFunctions.getRandomRocketType();
                int        matIndex   = randomMaterialsOrder[i];
                Color      col        = i > 0 ? gameConfig.enemyColor : gameConfig.playerColor;
                Vector3    pos        = ComputationalFunctions.getRandomPositionOnOrbit(randomOrbitsOrder[i], totalPlanets, gameConfig.distanceBetweenOrbits);
                float      HP         = gameConfig.planetMaxHP;
                float      RT         = GetRocketReloadCooldown(rocketType);

                planetState = new PlanetState(rocketType, matIndex, col, pos, HP, RT);
            }

            planet.GetComponent <PlanetManager>().Initialize(planetState);
            planets.Add(planet);
        }
    }
예제 #12
0
    public void SetState(PlanetState newState, bool init = false)
    {
        if (newState != planetState || init)
        {
            switch (newState)
            {
            case PlanetState.Colonized:
            {
                seq.Complete(false);
                planetCollider.enabled = true;
                break;
            }

            case PlanetState.Desert:
            {
                planetCollider.enabled = true;
                break;
            }

            case PlanetState.Destroyed:
            {
                planetCollider.enabled = false;
                PlanetDestroyed();
                break;
            }
            }
            spRenderer.color = GetColourForState(newState);
            planetState      = newState;
        }
    }
예제 #13
0
    private void HandlePlanetStateChange(PlanetState value)
    {
        Debug.Log("planet state changed from: " + CurrentPlanetState + " to: " + value);

        switch (value)
        {
        case PlanetState.NONE: {
            infoText.text       = "";
            planetNameText.text = "";
            break;
        }

        case PlanetState.FOUND: {
            Debug.Log("Found planet: " + currentPlanet.name);
            planetNameText.text = currentPlanet.name;
            infoText.text       = "Du hast einen Planeten gefunden.\nFinde eine geeignete Fläche um den Planeten zu sehen.";
            break;
        }

        case PlanetState.PLACEABLE: {
            planetNameText.text = currentPlanet.name;
            infoText.text       = "Du hast einen Planeten und eine geeignete Fläche gefunden.\nDrücke jetzt bitte den Button um den Planeten zu besuchen.";
            break;
        }

        case PlanetState.PLACED: {
            planetNameText.text = currentPlanet.name;
            infoText.text       = currentPlanet.information;
            break;
        }
        }

        planetState = value;
    }
예제 #14
0
        private void DoReadPlanetStateUpdate()
        {
            int         LPlanet      = FReader.ReadInt32();
            PlanetState LPlanetState = (PlanetState)FReader.ReadInt32();

            PlanetByUID(LPlanet).UpdateState(LPlanetState);
        }
예제 #15
0
    void OnMouseDown()
    {
        if(GameManager.SharedInstance.currentLaunchMode == GameManager.LaunchMode.HumanMode)
        {

            if(planetState == PlanetState.colonized)
            {
                if(int_NumberOfHumans > 0)
                {
                    if(int_NumberOfHumans == 5)
                    {
                        Destroy(this.gameObject.transform.GetChild(1).gameObject);
                        GameManager.SharedInstance.PlanetCount -= 1;
                        planetState = PlanetState.empty;
                    }
                    this.gameObject.GetComponentInChildren<SpaceStation>().Launch();

                }
            }
        }
        else if(GameManager.SharedInstance.currentLaunchMode == GameManager.LaunchMode.MissileMode)
        {
            this.gameObject.GetComponentInChildren<SpaceStation>().Launch();
        }
    }
예제 #16
0
    // Use this for initialization
    void Start()
    {
        if(this.gameObject.tag == "Earth")
        {
            planetState = PlanetState.colonized;
            int_NumberOfHumans = int_StartingHumans;
            GameManager.SharedInstance.HumanCount += int_StartingHumans;
        }
        else
        {
            planetState = PlanetState.empty;
            int_NumberOfHumans = 0;
        }

        float_RotationSpeed = Random.Range(1f, 2.75f);
        int_RotationDirection = Random.Range(0,2);

        if(int_RotationDirection == 0)
        {
            int_RotationDirection = -1;
        }
        else
        {
            int_RotationDirection = 1;
        }

        float_RotationSpeed *= int_RotationDirection;
    }
예제 #17
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         ChangeCurrentPlanet(planet.Id);
         ResetAfterOpenedPlanet();
     }
 }
예제 #18
0
    void AdvanceAction(PlanetState previousState, PlanetState currentState)
    {
        // Get planet objects
        previousPlanet = planetMap[previousState];
        curentPlanet   = planetMap[currentState];

        switchTween.Execute(previousPlanet, curentPlanet);
    }
예제 #19
0
 private void Awake()
 {
     _turnCount    = -1;
     _opponent     = GetComponent <Opponent>();
     _selectedCard = new Queue <Queue <Card> >();
     _targets      = new Queue <Targetable>();
     _planetState  = new PlanetState();
     Random.InitState(0);
 }
예제 #20
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (newState == PlanetState.Opened)
     {
         UpdateGeneratorIcon();
         UpdateManagerIcon();
         UpdateProfitValues();
     }
 }
예제 #21
0
    /// <summary>
    /// Have a planet attack by moving to the given location
    /// </summary>
    /// <param name="curve"></param>
    /// <param name="deltaTime"></param>
    /// <param name="location"></param>
    public void AttackLocation(AnimationCurve curve, float deltaTime, Vector3 location)
    {
        Debug.Log("Attacking Location: " + location);

        navMeshAgent.isStopped = false;
        navMeshAgent.SetDestination(location);

        planetState = PlanetState.Attacking;
    }
예제 #22
0
        private void UpdateScore(int price)
        {
            var score = state.Score + price;

            state = state.SetScore(score);
            state = UpdateProgression(state);
            CheckAndSaveHighScore();
            UpdateView();
        }
예제 #23
0
    public void Explode()
    {
        if (IsAlive)
        {
            State =
                PlanetState.Exploding;

            // ToDo
        }
    }
예제 #24
0
        public void SetState(PlanetState newState)
        {
            PlanetState oldState = State;

            State = newState;
            if (oldState != State)
            {
                GameEvents.OnPlanetStateChanged(oldState, newState, this);
            }
        }
예제 #25
0
    public void Leave()
    {
        if (IsAlive)
        {
            State =
                PlanetState.Leaving;

            // ToDo
        }
    }
예제 #26
0
    void planetHit()
    {
        gameObject.GetComponent <SpriteRenderer>().color = Color.red;
        pState = PlanetState.hitState;

        /*if (1 == 0)
         * {
         *  gameObject.GetComponent<SpriteRenderer>().color = Color.white;
         * }*/
    }
예제 #27
0
        private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planetInfo)
        {
            UpdatePlanetView();
            UpdatePlanetNameText();

            if (planetInfo.Id == planetId)
            {
                UpdateOpenedClosedContent();
            }
        }
예제 #28
0
        // Обновление состояния планеты, видимое всем игрокам для БЧТ
        public void UpdateState(PlanetState AState)
        {
            // Обновим параметры
            State = AState;
            // Обновим состояние скрипта
            FScript.UpdateState();
            SetActive(AState != PlanetState.Inactive);

            FScript.UpdateMinimap(true, false, false);
        }
예제 #29
0
 public void Initialize(PlanetState planetState)
 {
     this.transform.position    = planetState.pos;
     this.planetMatIndex        = planetState.matIndex;
     this.rocketType            = planetState.rocketType;
     this.controllerColor       = planetState.contrCol;
     this.currentHP             = planetState.curHP;
     this.currentReloadCooldown = planetState.curRT;
     updatePlanetValues();
 }
예제 #30
0
 private void OnPlanetStateChanged(PlanetState oldState, PlanetState newState, PlanetInfo planet)
 {
     if (IsLoaded)
     {
         if (newState == PlanetState.Opened && planet.Id != PlanetConst.EARTH_ID)
         {
             planetStartTime = Services.TimeService.UnixTimeInt;
             offerState      = SpecialOfferState.NotStarted;
         }
     }
 }
예제 #31
0
 private void Awake()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
예제 #32
0
 public GameController(
     IGameView view,
     IProgressionManager progressionManager,
     ISaveScore scoreSaver,
     PlanetState state)
 {
     this.view  = view;
     this.state = state;
     this.progressionManager = progressionManager;
     this.scoreSaver         = scoreSaver;
 }