コード例 #1
0
ファイル: Game.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Возвращает  игровой префаб или существующую модель персонажа в зависимости от типа клетки
    /// </summary>
    GameObject CellToPrefabType(LevelEditor.PenType CellType)
    {
        switch (CellType)
        {
        case LevelEditor.PenType.Point:
            return(PrefabPoint);

        case LevelEditor.PenType.Energy:
            return(PrefabPowerUp);

        case LevelEditor.PenType.Fruit:
            return(PrefabFruit);

        case LevelEditor.PenType.Wall:
            return(PrefabWall);

        case LevelEditor.PenType.BunkerCenter:
            return(PrefabWall);

        case LevelEditor.PenType.BunkerDoor:
            return(PrefabDoor);

        case LevelEditor.PenType.BunkerBricks:
            return(PrefabWall);

        default:
            return(PrefabClear);
        }
    }
コード例 #2
0
ファイル: Cell.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Проверяет попадает ли новая клетка в бункер с привидениями
    /// </summary>
    bool CheckInBunker(LevelEditor.PenType _cellType)
    {
        int cx = (int)(prm.CurrentMap.Ghosts.x);
        int cy = (int)(prm.CurrentMap.Ghosts.y);

        return((_cellType != LevelEditor.PenType.BunkerCenter) && ((cx - 2 <= Xpos) && (cx + 2 >= Xpos) && (cy - 3 <= Ypos) && (cy >= Ypos)));
    }
コード例 #3
0
ファイル: Cell.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Возвращает название спрайта соответствующее типу клетки
    /// </summary>
    string GetSpriteName(LevelEditor.PenType _penType)
    {
        switch (_penType)
        {
        case LevelEditor.PenType.BunkerBricks:
            return("item_clear");

        case LevelEditor.PenType.BunkerCenter:
            return("item_bunker");

        case LevelEditor.PenType.BunkerClear:
            return("item_clear");

        case LevelEditor.PenType.BunkerDoor:
            return("item_clear");

        case LevelEditor.PenType.Clear:
            return("item_clear");

        case LevelEditor.PenType.Energy:
            return("item_powerup");

        case LevelEditor.PenType.Fruit:
            return("item_fruit");

        case LevelEditor.PenType.PacmanSpawn:
            return("item_pacmanspawn");

        case LevelEditor.PenType.Point:
            return("item_point");

        case LevelEditor.PenType.Wall:
            return("item_brick");

        case LevelEditor.PenType.BlinkySpawn:
            return("item_blinky");

        case LevelEditor.PenType.PinkySpawn:
            return("item_pinky");

        case LevelEditor.PenType.InkySpawn:
            return("item_inky");

        case LevelEditor.PenType.ClydeSpawn:
            return("item_clyde");

        default:
            return("item_clear");
        }
    }
コード例 #4
0
ファイル: Game.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Возвращает принадлежность к неподвижным объектам
    /// </summary>
    bool isRealStatic(LevelEditor.PenType CellType)
    {
        switch (CellType)
        {
        case LevelEditor.PenType.Clear:
        case LevelEditor.PenType.BlinkySpawn:
        case LevelEditor.PenType.InkySpawn:
        case LevelEditor.PenType.PinkySpawn:
        case LevelEditor.PenType.ClydeSpawn:
        case LevelEditor.PenType.PacmanSpawn:
        case LevelEditor.PenType.BunkerClear:
            return(false);

        default:
            return(true);
        }
    }
コード例 #5
0
ファイル: Game.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Создаёт нужный префаб в нужной клетке
    /// </summary>
    GameObject SetCell(LevelEditor.PenType CellType, int posX, int posY)
    {
        if (isRealStatic(CellType))
        {
            if (CellType == LevelEditor.PenType.Point)
            {
                prm.PointsCount++;
            }
            GameObject tempGO = Instantiate(CellToPrefabType(CellType)) as GameObject;
            tempGO.transform.parent        = transform;
            tempGO.transform.localScale    = Vector3.one;
            tempGO.transform.localPosition = new Vector3(posX, 0, -posY);
            Blocks.Add(tempGO);
            return(tempGO);
        }
        else
        {
            switch (CellType)
            {
            case LevelEditor.PenType.BlinkySpawn:
                Blinky.transform.position = new Vector3(posX, 0, -posY);
                Blinky.GetComponent <Move>().TargetPoint     = new Vector3(posX, 0, -posY);
                Blinky.GetComponent <GhostAI>().RespawnPoint = new Vector3(posX, 0, -posY);
                Blinky.GetComponent <GhostAI>().ChangeMode(GhostAI.ModeBehavior.around);
                Blinky.SetActive(prm.ShowBlinky);
                return(Blinky);

            case LevelEditor.PenType.InkySpawn:
                Inky.transform.position = new Vector3(posX, 0, -posY);
                Inky.GetComponent <Move>().TargetPoint     = new Vector3(posX, 0, -posY);
                Inky.GetComponent <GhostAI>().RespawnPoint = new Vector3(posX, 0, -posY);
                Inky.GetComponent <GhostAI>().ChangeMode(GhostAI.ModeBehavior.around);
                Inky.SetActive(prm.ShowInky);
                return(Inky);

            case LevelEditor.PenType.PinkySpawn:
                Pinky.transform.position = new Vector3(posX, 0, -posY);
                Pinky.GetComponent <Move>().TargetPoint     = new Vector3(posX, 0, -posY);
                Pinky.GetComponent <GhostAI>().RespawnPoint = new Vector3(posX, 0, -posY);
                Pinky.GetComponent <GhostAI>().ChangeMode(GhostAI.ModeBehavior.around);
                Pinky.SetActive(prm.ShowPinky);
                return(Pinky);

            case LevelEditor.PenType.ClydeSpawn:
                Clyde.transform.position = new Vector3(posX, 0, -posY);
                Clyde.GetComponent <Move>().TargetPoint     = new Vector3(posX, 0, -posY);
                Clyde.GetComponent <GhostAI>().RespawnPoint = new Vector3(posX, 0, -posY);
                Clyde.GetComponent <GhostAI>().ChangeMode(GhostAI.ModeBehavior.around);
                Clyde.SetActive(prm.ShowClyde);
                return(Clyde);

            case LevelEditor.PenType.PacmanSpawn:
                Pacman.transform.position = new Vector3(posX, 0, -posY);
                Pacman.GetComponent <Move>().TargetPoint = new Vector3(posX, 0, -posY);
                Pacman.SetActive(true);
                return(Pacman);

            case LevelEditor.PenType.Clear:
            case LevelEditor.PenType.BunkerClear:
            default:
                GameObject tempGO = Instantiate(PrefabClear) as GameObject;
                tempGO.transform.parent        = transform;
                tempGO.transform.localScale    = Vector3.one;
                tempGO.transform.localPosition = new Vector3(posX, 0, -posY);
                return(tempGO);
            }
        }
    }
コード例 #6
0
ファイル: Cell.cs プロジェクト: malan-x/Pacman
 /// <summary>
 /// Обновляет положение и типа клетки
 /// </summary>
 public void UpdateCell(LevelEditor.PenType _cellType)
 {
     CellType = _cellType;
     UpdateCell();
 }
コード例 #7
0
ファイル: Cell.cs プロジェクト: malan-x/Pacman
    /// <summary>
    /// Устанавливает выбранный тип клетки
    /// </summary>
    public void SetUpCell(LevelEditor.PenType _cellType)
    {
        if (!CheckInBunker(_cellType))
        {
            switch (_cellType)
            {
            case LevelEditor.PenType.PacmanSpawn:               // Устанавливает клетку с пакманом, а предыдущее место затирает
                MainController.Instance._LevelEditor.Cells[(int)(prm.CurrentMap.PacmanSpawn.x), (int)(prm.CurrentMap.PacmanSpawn.y)].UpdateCell(LevelEditor.PenType.Clear);
                prm.CurrentMap.PacmanSpawn = new Vector2(Xpos, Ypos);
                UpdateCell(_cellType);
                break;

            case LevelEditor.PenType.BunkerCenter:              // Устанавливает клетку с бункером, а предыдущее место затирает
                int px = (int)(prm.CurrentMap.PacmanSpawn.x);
                int py = (int)(prm.CurrentMap.PacmanSpawn.y);
                if (((Xpos + 2 < prm.CurrentMap.width) && (Xpos - 2 >= 0) && (Ypos < prm.CurrentMap.height) && (Ypos - 3 >= 0)) && //входит ли в границы карты
                    ((Xpos + 2 < px) || (Xpos - 2 >= px) || (Ypos < py) || (Ypos - 3 >= py)))                                      //не пересекается ли с местом респауна игрока
                {
                    int cx = (int)(prm.CurrentMap.Ghosts.x);
                    int cy = (int)(prm.CurrentMap.Ghosts.y);

                    for (int x = cx - 2; x <= cx + 2; x++)
                    {
                        for (int y = cy - 3; y <= cy; y++)
                        {
                            MainController.Instance._LevelEditor.Cells[x, y].UpdateCell(LevelEditor.PenType.Clear);
                        }
                    }

                    prm.CurrentMap.Ghosts = new Vector2(Xpos, Ypos);
                    for (int x = Xpos - 2; x <= Xpos + 2; x++)
                    {
                        for (int y = Ypos - 3; y <= Ypos; y++)
                        {
                            MainController.Instance._LevelEditor.Cells[x, y].UpdateCell(LevelEditor.PenType.Clear);
                        }
                    }
                    MainController.Instance._LevelEditor.Cells[Xpos, Ypos - 3].UpdateCell(prm.CurrentMap.Blinky ? LevelEditor.PenType.BlinkySpawn : LevelEditor.PenType.Clear);
                    MainController.Instance._LevelEditor.Cells[Xpos, Ypos - 2].UpdateCell(LevelEditor.PenType.BunkerDoor);
                    MainController.Instance._LevelEditor.Cells[Xpos, Ypos - 1].UpdateCell(prm.CurrentMap.Pinky ? LevelEditor.PenType.PinkySpawn : LevelEditor.PenType.Clear);
                    MainController.Instance._LevelEditor.Cells[Xpos - 1, Ypos - 1].UpdateCell(prm.CurrentMap.Inky ? LevelEditor.PenType.InkySpawn : LevelEditor.PenType.Clear);
                    MainController.Instance._LevelEditor.Cells[Xpos + 1, Ypos - 1].UpdateCell(prm.CurrentMap.Clyde ? LevelEditor.PenType.ClydeSpawn : LevelEditor.PenType.Clear);
                    MainController.Instance._LevelEditor.Cells[Xpos, Ypos].UpdateCell(LevelEditor.PenType.BunkerCenter);

                    MainController.Instance._LevelEditor.Cells[Xpos - 2, Ypos - 2].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos - 1, Ypos - 2].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos + 1, Ypos - 2].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos + 2, Ypos - 2].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos - 2, Ypos - 1].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos + 2, Ypos - 1].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos - 2, Ypos].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos - 1, Ypos].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos + 1, Ypos].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    MainController.Instance._LevelEditor.Cells[Xpos + 2, Ypos].UpdateCell(LevelEditor.PenType.BunkerBricks);
                    UpdateCell(_cellType);
                }
                break;

            default:
                if (CellType != LevelEditor.PenType.PacmanSpawn)
                {
                    UpdateCell(_cellType);
                }
                break;
            }
        }
    }