Exemple #1
0
    public void ChangeTeamMateButtonFace(TeamMate teamMate, TeamMateMood mood)
    {
        int            index = (int)teamMate.TMClass;
        TeamMateButton tmb   = teamMateButtons[index] as TeamMateButton;

        tmb.SetButtonImageFromMood(mood);
    }
Exemple #2
0
 public void SetButtonImageFromMood(TeamMateMood mood)
 {
     uiButton.image.sprite = faceReferences.GetFaceForMood(mood);
 }
Exemple #3
0
 public void ChangeFace(TeamMateMood newMood)
 {
     gc.playerControlsUI.ChangeTeamMateButtonFace(this, newMood);
 }
Exemple #4
0
    // Update is called once per frame
    void Update()
    {
        if (!gc.GameStarted || (!IsOnline && state == ActionState.Offline))
        {
            return;
        }

        if (!IsOnline && state != ActionState.Offline) // if player's offline
        {
            state          = ActionState.Offline;
            state_time     = 0;
            attack_time    = 0;
            attack_prepare = false;

            for (int i = 0; i < CharacterStates.Count; i++)
            {
                if (i == 2)
                {
                    CharacterStates[i].SetActive(true);
                    ChangeFace(TeamMateMood.DEAD);
                }
                else
                {
                    CharacterStates[i].SetActive(false);
                }
            }
        }
        else if (!IsAlive && state != ActionState.Dead)  // if player's dead
        {
            state          = ActionState.Dead;
            state_time     = 0;
            attack_time    = 0;
            attack_prepare = false;

            for (int i = 0; i < CharacterStates.Count; i++)
            {
                if (i == 2)
                {
                    CharacterStates[i].SetActive(true);
                    ChangeFace(TeamMateMood.DEAD);
                }
                else
                {
                    CharacterStates[i].SetActive(false);
                }
            }
        }
        else if (IsAlive)
        {
            // play the current state (that isn't idle) for a period of time
            if (state_time > 0)
            {
                state_time -= Time.deltaTime;
            }

            // swap back to idle state / second attack state
            if (state_time <= 0 && state != ActionState.Idle)
            {
                // if this character is a paladin or warrior, and the are in the attacking state
                if ((Class == TeamMateClass.Paladin || Class == TeamMateClass.Warrior) && state == ActionState.Attacking)
                {
                    state          = ActionState.AttackingFinished;
                    state_time     = state_timeMax;
                    attack_time    = 0;
                    attack_prepare = false;

                    for (int i = 0; i < CharacterStates.Count; i++)
                    {
                        if (i == 4)
                        {
                            CharacterStates[i].SetActive(true);
                            TeamMateMood idleMood = (Health > halfHealth) ? TeamMateMood.NEUTRAL : TeamMateMood.BAD;
                            ChangeFace(idleMood);
                        }
                        else
                        {
                            CharacterStates[i].SetActive(false);
                        }
                    }
                }
                else // reset state to idle
                {
                    state          = ActionState.Idle;
                    state_time     = 0;
                    attack_time    = 0;
                    attack_prepare = false;

                    for (int i = 0; i < CharacterStates.Count; i++)
                    {
                        if (i == 0)
                        {
                            CharacterStates[i].SetActive(true);
                            TeamMateMood idleMood = (Health > halfHealth) ? TeamMateMood.NEUTRAL : TeamMateMood.BAD;
                            ChangeFace(idleMood);
                        }
                        else
                        {
                            CharacterStates[i].SetActive(false);
                        }
                    }
                }
            }



            // party members attack
            if (state == ActionState.Idle && !attack_prepare && !gc.isWon())
            {
                attack_time    = Random.Range(attack_timeMin, attack_timeMax);
                attack_prepare = true;
            }
            else if (state == ActionState.Idle && attack_prepare)
            {
                attack_time -= Time.deltaTime;
                if (attack_time <= 0)
                {
                    attack_time    = 0;
                    attack_prepare = false;
                    ChangeState(ActionState.Attacking);
                    ChangeFace(TeamMateMood.ATTACKING);
                }
            }
        }

        if (state == ActionState.Dead)
        {
            _moodFrameCounter += 1;
            if (_moodFrameCounter == 25)
            {
                Mood -= 2;
                _moodFrameCounter = 0;
            }
        }
    }
Exemple #5
0
 public Sprite GetFaceForMood(TeamMateMood type)
 {
     return(Faces[(int)type]);
 }