public void ChangeTeamMateButtonFace(TeamMate teamMate, TeamMateMood mood) { int index = (int)teamMate.TMClass; TeamMateButton tmb = teamMateButtons[index] as TeamMateButton; tmb.SetButtonImageFromMood(mood); }
public void SetButtonImageFromMood(TeamMateMood mood) { uiButton.image.sprite = faceReferences.GetFaceForMood(mood); }
public void ChangeFace(TeamMateMood newMood) { gc.playerControlsUI.ChangeTeamMateButtonFace(this, newMood); }
// 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; } } }
public Sprite GetFaceForMood(TeamMateMood type) { return(Faces[(int)type]); }