Exemplo n.º 1
0
        // Inicializa o reinicia el gestor
        private void Initialize(int rows, int columns, int roomLength)
        {
            if (tablero == null) throw new InvalidOperationException("The board reference is null");


            // init de variables
            for (int i = 0; i < characters.Count; i++)
            {
                if (characters[i].ficha_ != null) Destroy(characters[i].ficha_.gameObject);
            }

            turnos.Clear();
            characters.Clear();

            //Añadimos en characters los jugadores (humanos y bots) en las primeras posiciones y los sospechosos al final
            for (int i = 0; i < names.Length; i++)
            {
                if (i < numPlayers)
                {
                    if(i < humanPlayers)characters.Add(new Player(fichaPrefab, libretas[i], i));      
                    else if(i == humanPlayers) characters.Add(new Bot1(fichaPrefab, libretas[i], i));
                    else characters.Add(new Bot2(fichaPrefab, libretas[i], i));
                    turnos.Add(names[i]);
                }
                else characters.Add(new Suspect(fichaPrefab, i));
            }

            this.rows = rows;
            this.columns = columns;
            this.roomLength = roomLength;

            // Se crea el puzle internamente (matriz logica)
            puzzle = new CluedoPuzzle(rows, columns, roomLength);

            // Se inicializa todo el tablero de casillas (representacion visual a partir de la matriz logica)
            tablero.Initialize(puzzle);

            //Se reinicia el juego
            GameOver = false;

            initCards(); // inicializa los distintos tipos de cartas

            // se elige un arma, un sospechoso y una estancia
            sospechosoCrimen = names[chooseCardFromType(ref namesAux) + numPlayers];
            armaCrimen = weapons[chooseCardFromType(ref weaponsAux)];
            estanciaCrimen = estancias[chooseCardFromType(ref estanciasAux)];

            // repartimos las cartas sobrantes entre los jugadores
            dealCards();

            turn = 0;

            // GUI
            disableGUI();
            AcusarPanel.SetActive(false);
            CleanInfo();
            UpdateInfo();
        }
Exemplo n.º 2
0
        // genera las casillas del tipo que le indique puzzle (matriz logica de tipos de estancia)
        private void GenerateCasillas(CluedoPuzzle puzzle)
        {
            var rows    = casillas.GetLength(0);
            var columns = casillas.GetLength(1);

            for (int r = 0; r < rows; r++)
            {
                for (int c = 0; c < columns; c++)
                {
                    Casilla casilla = casillas[r, c];
                    if (casilla == null)
                    {
                        casilla = Instantiate(casillaPrefab, new Vector3(-((casillas.GetLength(1) / 2.0f) * POSITION_FACTOR_C - (POSITION_FACTOR_C / 2.0f)) + c * POSITION_FACTOR_C, 0,
                                                                         (casillas.GetLength(0) / 2.0f) * POSITION_FACTOR_R - (POSITION_FACTOR_R / 2.0f) - r * POSITION_FACTOR_R),
                                              Quaternion.identity);

                        casillas[r, c] = casilla;
                    }

                    casilla.position = new Position(r, c);
                    casilla.Initialize(this, puzzle.GetType(r, c));
                }
            }

            // para cada ficha del gm le establecemos la posicion fisica que corresponda
            for (int i = 0; i < gm.characters.Count; i++)
            {
                Vector3 position = casillas[gm.characters[i].ficha_.position.GetRow(), gm.characters[i].ficha_.position.GetColumn()].transform.position;
                gm.characters[i].ficha_.setPosition(position);
                if (i < gm.numPlayers)
                {
                    casillas[gm.characters[i].ficha_.position.GetRow(), gm.characters[i].ficha_.position.GetColumn()].tienePlayer = true;
                }
                else
                {
                    casillas[gm.characters[i].ficha_.position.GetRow(), gm.characters[i].ficha_.position.GetColumn()].tieneSuspect = true;
                }
            }
        }
Exemplo n.º 3
0
        public void Initialize(CluedoPuzzle puzzle)
        {
            gm = GameManager.instance;

            if (casillas == null)
            {
                casillas = new Casilla[puzzle.rows, puzzle.columns];

                transform.localScale = new Vector3(SCALE_FACTOR_C * casillas.GetLength(1),
                                                   transform.localScale.y, SCALE_FACTOR_R * casillas.GetLength(0));
            }
            else if (casillas.GetLength(0) != puzzle.rows || casillas.GetLength(1) != puzzle.columns)
            {
                DestroyCasillas();
                casillas = new Casilla[puzzle.rows, puzzle.columns];

                transform.localScale = new Vector3(SCALE_FACTOR_C * casillas.GetLength(1),
                                                   transform.localScale.y, SCALE_FACTOR_R * casillas.GetLength(0));
            }

            GenerateCasillas(puzzle);
        }