protected override void GetReferences() { base.GetReferences(); _characterSelection = _bootstrap.GetModel(ModelTypes.Characters) as CharacterSelectionData; _characterSelection.OnValueUpdated += OnCharacterUpdatedEvent; _characterSelection.OnNewValue += OnCharacterUpdatedEvent; _characterSelection.OnCharactersReceiveEnded += OnCharactersReceiveEndedEvent; }
protected override void OnStart() { if (BlockAll) { return; } _resources = _bootstrap.GetModel(ModelTypes.Resources) as ResourcesDataBase; _characterSelection = _bootstrap.GetModel(ModelTypes.Characters) as CharacterSelectionData; _timeController = _bootstrap.GetController(ControllerTypes.Time) as TimeController; _timeController.GameTimeout += TimeOut; }
// Start is called before the first frame update void Start() { GameController.setThrowSpeedGlobal(throwSpeed); playerInput = this.GetComponent <PlayerInput>(); playerEffects = GetComponent <PlayerEffects>(); transform = GetComponent <Transform>(); trigger = GetComponent <Collider>(); csd = PersistentInfo.Instance.PlayerData; Debug.Assert(playerEffects != null); //K: hardcoded - nomes dos eventos do fmod para o 'lançar' de cada bixin // a ordem é fofo, sereno, vaquina, edgy throwEventStrings = new string[4] { "event:/Efeitos/personagens/arremesso orb personagem 1", "event:/Efeitos/personagens/arremesso orb personagem 2", "event:/Efeitos/personagens/arremesso orb personagem 4", "event:/Efeitos/personagens/arremesso orb personagem 3" }; }
// Start is called before the first frame update void Start() { PlayerData = ScriptableObject.CreateInstance <CharacterSelectionData>(); playerReady = new bool[PlayerPanels.Length]; playerInput = new PlayerInput[PlayerPanels.Length]; PlayerData.PlayerController = new int[4]; PlayerData.CharSelected = new int[4]; PlayerData.PlayerIndex = new int[4]; Arrows = new GameObject[PlayerPanels.Length]; pressKeyText = new GameObject[PlayerPanels.Length]; playerPortrait = new Image[PlayerPanels.Length]; selectedMask = new Image[PlayerPanels.Length]; playerText = new Image[PlayerPanels.Length]; //K: hardcoded - nomes dos eventos dos sons de cada personagem quando selecionados //ordem: fofo, sereno, vaquinha, edgy eventStringUIChars = new string[] { "event:/Menu/Personagem1", "event:/Menu/Personagem 2", "event:/Menu/Personagem 4", "event:/Menu/Personagem 3" }; readyButton.gameObject.SetActive(false); returnButton.gameObject.SetActive(false); for (int i = 0; i < 4; i++) { PlayerData.PlayerController[i] = -1; //põe o valor default (nenhum player controlando) em cada mago } for (int i = 0; i < PlayerPanels.Length; i++) { playerPortrait[i] = PlayerPanels[i].GetChild(0).gameObject.GetComponent <Image>(); selectedMask[i] = PlayerPanels[i].GetChild(1).gameObject.GetComponent <Image>(); playerText[i] = PlayerPanels[i].GetChild(4).gameObject.GetComponent <Image>(); pressKeyText[i] = PlayerPanels[i].GetChild(2).gameObject; Arrows[i] = PlayerPanels[i].GetChild(3).gameObject; PlayerData.CharSelected[i] = i; playerPortrait[i].sprite = CharSprites[PlayerData.CharSelected[i]]; playerPortrait[i].gameObject.SetActive(false); selectedMask[i].gameObject.SetActive(false); playerText[i].gameObject.SetActive(false); playerReady[i] = false; playerInput[i] = PlayerPanels[i].GetComponent <PlayerInput>(); } }
public void SelectCharacter(CharacterSelectionData data) { OnSelectCharacter?.Invoke(data); }
//função para ser chamada quando o jogo termina e a telafinal deva ser acionada public void ActivateTelaFinal() { if (AlreadyEnded) { return; } Initialize(); AlreadyEnded = true; Time.timeScale = 0.0f; this.gameObject.SetActive(true); CharacterSelectionData csd = PersistentInfo.Instance.PlayerData; //ativa ou desativa paineis de acordo com o numero de jogadores jogando for (int i = 0; i < 4; i++) { characterPanels[i].SetActive(playersQtd > i); } //o primeiro painel é do player vitorioso List <int> orderedIndex = new List <int>(); for (int i = 0; i < playersQtd; i++) { orderedIndex.Add(i); } orderedIndex.Sort((i, j) => GameController.Instance.teamPoints[j].CompareTo(GameController.Instance.teamPoints[i])); for (int i = 0; i < playersQtd; i++) { //characterPanels[i].GetComponentInChildren<Text>().text = "Player " + (orderedIndex[i] + 1).ToString() + ": " + GameController.Instance.teamPoints[orderedIndex[i]].ToString(); if (i == 0) { characterPanels[i].GetComponentInChildren <Image>().sprite = sprites_vitoria[csd.CharSelected[orderedIndex[i]]]; } else { characterPanels[i].GetComponentInChildren <Image>().sprite = sprites_derrota[csd.CharSelected[orderedIndex[i]]]; } } //depois de setar as imagens e textos, ordena a hierarquia ao contrário pro primeiro lugar aparecer na frente dos demais for (int i = playersQtd - 1; i >= 0; i--) { characterPanels[i].transform.SetAsFirstSibling(); } //MasterBus.stopAllEvents(FMOD.Studio.STOP_MODE.ALLOWFADEOUT); if (ambientacaoEmitter != null) { ambientacaoEmitter.Stop(); } if (vitoriaEmitter != null) { vitoriaEmitter.Play(); } else { Debug.Log("vitoria emiiter = null"); } }
void Start() { potionCount = 0; winner = telaFinal.GetComponentInChildren <Text>(); Debug.Assert(potionVariants.Length > 0); //J: Inicializa texto do objetivo na UI Debug.Assert(DisplayGoal != null); if (victoryCondition == VictoryCondition.PotionSequence) { DisplayGoal.text = "Receita: "; } //J: gera aleatoriamente a sequencia necessária para vitoria objective = new int[objectiveSize]; for (int i = 0; i < objectiveSize; i++) { objective[i] = Random.Range(0, potionVariants.Length); DisplayGoal.text = DisplayGoal.text + orbNames[objective[i]]; } //J: inicia a função que cria os alvos bonus, que se repete sozinha //StartCoroutine(spawnTarget(targetCooldown)); //k: coisas temporárias pra setar o jogo de acordo com o num de players if (PersistentInfo.Instance != null) { //free for all numTeams = PersistentInfo.Instance.playersQtd; numPlayers = numTeams; modelSelected = PersistentInfo.Instance.PlayerData; } else { numTeams = 4; numPlayers = 4; } //K: desliga players que não estiverem jogando //supoe que o thrower team de cada player já está setado corretamente for (int i = 0; i < players.Count; i++) { if (players[i] != null) { if (modelSelected != null) { playerPortraits[i].sprite = portraitImage[modelSelected.CharSelected[i]]; hudElements[i].gameObject.SetActive(i < numPlayers); players[i].transform.GetChild(modelSelected.CharSelected[i]).gameObject.SetActive(i < numPlayers); } else { playerPortraits[i].sprite = portraitImage[i]; hudElements[i].gameObject.SetActive(i < numPlayers); players[i].transform.GetChild(i).gameObject.SetActive(i < numPlayers); } } } //J: configura pontuação inicial de todos os times para 0 teamPoints = new int[numTeams]; teamObjIndex = new int[numTeams]; for (int i = 0; i < numTeams; i++) { teamPoints[i] = 0; teamObjIndex[i] = 0; playerBarFill[i].fillAmount = 0.0f; superMago[i].full = false; } //inicializa time vencedor para -1, no início da partida victoriousTeam = -1; //J: Inicializa texto da UI para cada jogador //K: isso acaba por não ser necessário aqui, porque já está sendo feito no update: mas isso pode ser revisto depois //não sei se fazer isso a cada update tem algum impacto na performance //UpdateScoringUI(); }