Ejemplo n.º 1
0
        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;
        }
Ejemplo n.º 3
0
    // 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"
        };
    }
Ejemplo n.º 4
0
    // 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);
 }
Ejemplo n.º 6
0
    //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");
        }
    }
Ejemplo n.º 7
0
    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();
    }