Inheritance: MonoBehaviour
示例#1
0
        public SceneManager()
        {
            collisionManager = new Collision.CollisionManager();
            player           = new Player(new Input.KeyboardReader());
            blokken          = new List <Blok>();
            enemies          = new List <Enemy>();
            wanderingEnemies = new List <WanderingEnemy>();
            endTile          = new EndTile();

            startScreen = Globals.Content.Load <Texture2D>("startScreen");
            endScreen   = Globals.Content.Load <Texture2D>("winScreen");

            LoadLevel(currLevel);             //load our first level
        }
    public void TryChangeTile(Tile Tile, Tile.TileType Type)
    {
        //May I change tile?
        if (Tile.Type == Tile.TileType.Border)
        {
            Log.Instance.AddToQueue("You can't edit the border tiles! :'(");
            return;
        }

        //Is the changing type end or start
        if (Type == Tile.TileType.Start)
        {
            if (StartTile != null)
            {
                StartTile.ChangeType(Tile.TileType.Walkable);
            }

            StartTile = Tile;
            StartTile.ChangeType(Tile.TileType.Start);
            return;
        }
        else if (Type == Tile.TileType.End)
        {
            if (EndTile != null)
            {
                EndTile.ChangeType(Tile.TileType.Walkable);
            }

            EndTile = Tile;
            EndTile.ChangeType(Tile.TileType.End);
            return;
        }

        //Is the tile the end or start
        if (Tile.Type == Tile.TileType.Start)
        {
            StartTile = null;
        }
        else if (Tile.Type == Tile.TileType.End)
        {
            EndTile = null;
        }

        //Change
        Tile.ChangeType(Type);
    }
示例#3
0
    void PlaceEndTile()
    {
        // Instantiate tile
        endTile = Instantiate(endTilePrefab) as EndTile;
        endTile.transform.parent = this.transform;

        // Create doorway lists to loop over
        List <Doorway> allAvailableDoorways = new List <Doorway>(availableDoorways);
        Doorway        doorway = endTile.doorways[0];

        bool tilePlaced = false;

        // Try all available doorways
        foreach (Doorway availableDoorway in allAvailableDoorways)
        {
            // Position tile
            Tile tile = (Tile)endTile;
            PositionTileAtDoorway(ref tile, doorway, availableDoorway);

            // Check if tile overlaps
            if (CheckTileOverlap(endTile))
            {
                continue;
            }

            tilePlaced = true;

            // Remove doorways
            doorway.gameObject.SetActive(false);
            availableDoorways.Remove(doorway);

            availableDoorway.gameObject.SetActive(false);
            availableDoorways.Remove(availableDoorway);

            // Exit loop if tile has been placed
            break;
        }

        // Tile could not be placed so restart the generator
        if (!tilePlaced)
        {
            Destroy(endTile.gameObject);
            ResetLevelGenerator();
        }
    }
示例#4
0
        /// <summary>
        /// Method for initializing the maps with a setup of a normal ludo map.
        /// </summary>
        ///
        private void initializeMaps()
        {
            //Instantiate map array.
            Maps = new Map[5];

            //Initialize maps
            sharedMap = (Maps[(int)MapSection.SHARED] = new Map(size: (int)MapSectionSize.SHARED, isLoopMap: true));
            redMap    = (Maps[(int)MapSection.RED] = new Map(size: (int)MapSectionSize.RED, isLoopMap: false));
            blueMap   = (Maps[(int)MapSection.BLUE] = new Map(size: (int)MapSectionSize.BLUE, isLoopMap: false));
            yellowMap = (Maps[(int)MapSection.YELLOW] = new Map(size: (int)MapSectionSize.YELLOW, isLoopMap: false));
            greenMap  = (Maps[(int)MapSection.GREEN] = new Map(size: (int)MapSectionSize.GREEN, isLoopMap: false));

            sharedMap.Name = "SharedMap";
            redMap.Name    = "RedMap";
            blueMap.Name   = "BlueMap";
            yellowMap.Name = "YellowMap";
            greenMap.Name  = "GreenMap";

            // Defines Team specific maps
            Map[] submaps = { redMap, greenMap, yellowMap, blueMap };

            // creates Team Special tiles on the shared map
            for (int i = 0; i < submaps.Length; i++)
            {
                int idx = i * ((int)(MapSectionSize.SHARED) / 4);

                Tile newTile = new ExitTile(sharedMap, idx, submaps[i].FirstTile, (PlayerTeam)(i));
                sharedMap.SetTile(idx, newTile); //Create exit tiles.

                newTile = new SpawnTile(sharedMap, idx + 2, (PlayerTeam)(i));
                sharedMap.SetTile(idx + 2, newTile); //Create spawn tiles.

                newTile             = new EndTile(submaps[i], submaps[i].Tiles.Length - 1, (PlayerTeam)(i));
                submaps[i].LastTile = newTile; //Create end tiles.
            }

            // Set tile actors
            foreach (Map map in Maps)
            {
                foreach (Tile tile in map.Tiles)
                {
                    tile.Actor = new ConsoleTileActor(Game.GetConsoleActorMatrix(), tile);
                }
            }
        }
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.W) || Input.GetKeyDown(KeyCode.A) || Input.GetKeyDown(KeyCode.S) || Input.GetKeyDown(KeyCode.D))
        {
            playerManager.StepsTaken++;
            Vector3 OldPos = transform.position;
            MovePos();

            if (OldPos != transform.position)
            {
                if (StandingTile.ToggleType)
                {
                    PressurePlate pressurePlate = StandingTile.GetComponent <PressurePlate>();
                    pressurePlate.ToggleState();
                }
                else if (StandingTile.SpikeType)
                {
                    SpikeTile spike = StandingTile.GetComponent <SpikeTile>();
                    if (spike.State)
                    {
                        playerManager.GetHurt();
                    }
                }
                else if (StandingTile.KeyType)
                {
                    KeyTile key = StandingTile.GetComponent <KeyTile>();
                    TotalKeys = key.ToggleState(TotalKeys);
                }
                else if (StandingTile.ChestType)
                {
                    LockedChest chest = StandingTile.GetComponent <LockedChest>();
                    TotalKeys = chest.ToggleState(TotalKeys);
                }
                else if (StandingTile.EndType)
                {
                    EndTile Finish = StandingTile.GetComponent <EndTile>();
                    Finish.ToggleState();
                    MyFiredArrows?.Invoke();
                }
            }
        }
    }
示例#6
0
    private void GenerateGridFromCSV(string filepath, string filename)
    {
        Tile[] obstacleTiles =
        {
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-481")),
                type = "ObstacleTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-484")),
                type = "ObstacleTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-487")),
                type = "ObstacleTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-489")),
                type = "ObstacleTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-554")),
                type = "ObstacleTile"
            }
        };

        Tile[] normalTiles =
        {
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-105")),
                type = "NormalTile"
            }, // uncracked
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-81")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-82")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-83")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-103")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-104")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-292")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-293")),
                type = "NormalTile"
            },
            new Tile()
            {
                tile = (GameObject)Instantiate(Resources.Load("tileset-294")),
                type = "NormalTile"
            }
        };

        Tile start = new Tile()
        {
            tile = (GameObject)Instantiate(Resources.Load("StartTile")),
            type = "StartTile"
        };

        Tile end = new Tile()
        {
            tile = (GameObject)Instantiate(Resources.Load("EndTile")),
            type = "EndTile"
        };

        Tile trap = new Tile()
        {
            tile = (GameObject)Instantiate(Resources.Load("SpikeTile")),
            type = "TrapTile"
        };

        Tile ice = new Tile()
        {
            tile = (GameObject)Instantiate(Resources.Load("IceTile")),
            type = "IceTile"
        };


        string[,] GridCSV = CsvUtil.readData(filepath, filename);
        rows = GridCSV.GetLength(0);
        cols = GridCSV.GetLength(1);

        float centerOffsetX = -cols * tileSize / 2; // center
        float centerOffsetY = rows * tileSize / 2;

        for (int i = 0; i < GridCSV.GetLength(0); i++)
        {
            List <Tile> tileRow = new List <Tile>();

            for (int j = 0; j < GridCSV.GetLength(1); j++)
            {
                GameObject tile;
                if (GridCSV[i, j] == "S")
                {
                    tile = (GameObject)Instantiate(start.tile, transform);
                    StartTile startTile = new StartTile()
                    {
                        tile = tile,
                        type = "StartTile"
                    };
                    tileRow.Add(startTile);
                }
                else if (GridCSV[i, j] == "E")
                {
                    tile = (GameObject)Instantiate(end.tile, transform);
                    EndTile endTile = new EndTile()
                    {
                        tile = tile,
                        type = "EndTile"
                    };
                    tileRow.Add(endTile);
                }
                else if (GridCSV[i, j] == "W") //W = wallobstacle
                {
                    int randomChoice = (int)Random.Range(0, obstacleTiles.Length - 0.001f);
                    tile = (GameObject)Instantiate(obstacleTiles[randomChoice].tile, transform);
                    ObstacleTile obstacleTile = new ObstacleTile()
                    {
                        tile = tile,
                        type = "ObstacleTile"
                    };
                    tileRow.Add(obstacleTile);
                }
                else if (GridCSV[i, j] == "T")
                {
                    tile = (GameObject)Instantiate(trap.tile, transform);
                    TrapTile trapTile = new TrapTile()
                    {
                        tile = tile,
                        type = "TrapTile"
                    };
                    tileRow.Add(trapTile);
                }
                else if (GridCSV[i, j] == "I")
                {
                    tile = (GameObject)Instantiate(ice.tile, transform);
                    IceTile iceTile = new IceTile()
                    {
                        tile = tile,
                        type = "IceTile"
                    };
                    tileRow.Add(iceTile);
                }
                else
                {
                    int randomChoice = (int)Random.Range(0, normalTiles.Length - 0.001f);
                    tile = (GameObject)Instantiate(normalTiles[randomChoice].tile, transform);
                    NormalTile normalTile = new NormalTile()
                    {
                        tile = tile,
                        type = "NormalTile"
                    };
                    tileRow.Add(normalTile);
                }

                float posX = j * tileSize + centerOffsetX;
                float posY = i * -tileSize + centerOffsetY;
                if (GridCSV[i, j] == "S")
                {
                    StartPos = new Vector2(posX, posY);
                }
                tile.transform.position = new Vector2(posX, posY);
            }
            Tiles.Add(tileRow);
        }

        foreach (Tile obstacleTile in obstacleTiles)
        {
            Destroy(obstacleTile.tile);
        }
        foreach (Tile normalTile in normalTiles)
        {
            Destroy(normalTile.tile);
        }
        Destroy(start.tile);
        Destroy(end.tile);
        Destroy(trap.tile);
        Destroy(ice.tile);

        //bool x = await Task.FromResult(false);
    }
示例#7
0
    private void DetermineBestStartEndPoints()
    {
        Room  BestStartRoom   = null;
        Room  BestEndRoom     = null;
        float LongestDistance = 0;

        for (int i = 0; i < RoomGroup.transform.childCount; i++)
        {
            Room r = RoomGroup.transform.GetChild(i).GetComponent <Room>();
            for (int j = i + 1; j < RoomGroup.transform.childCount; j++)
            {
                Room  r2   = RoomGroup.transform.GetChild(j).GetComponent <Room>();
                float dist = Vector2.Distance(new Vector2(r.Xcenter, r.Ycenter), new Vector2(r2.Xcenter, r2.Ycenter));
                if (dist > LongestDistance)
                {
                    BestStartRoom   = r;
                    BestEndRoom     = r2;
                    LongestDistance = dist;
                }
            }
        }

        if (RoomGroup.transform.childCount == 1)
        {
            BestStartRoom = RoomGroup.transform.GetChild(0).GetComponent <Room>();
            BestEndRoom   = RoomGroup.transform.GetChild(0).GetComponent <Room>();
        }

        GameObject BestStart = null;
        GameObject BestEnd   = null;

        List <GameObject> R1Tiles = BestStartRoom.GetFloors();
        List <GameObject> R2Tiles = BestEndRoom.GetFloors();

        LongestDistance = 0;

        for (int i = 0; i < R1Tiles.Count; i++)
        {
            GameObject o = R1Tiles[i];
            for (int j = 0; j < R2Tiles.Count; j++)
            {
                GameObject o2   = R2Tiles[j];
                float      dist = Vector2.Distance(o.transform.position, o2.transform.position);
                if (dist > LongestDistance)
                {
                    BestStart       = o;
                    BestEnd         = o2;
                    LongestDistance = dist;
                }
            }
        }

        //TODO: add start/end behavior scripts to the selected tiles
        Player.transform.position = (Vector2)BestStart.transform.position;
        end = BestEnd.AddComponent <EndTile>();
        end.SetPlayer(Player);

        /*sr = gameObject.AddComponent<SpriteRenderer>();
         * sprite = Resources.Load<Sprite>("Enemy");
         * sr.sprite = sprite;*/

        SpriteRenderer StartSprite = BestStart.GetComponent <SpriteRenderer>();
        SpriteRenderer EndSprite   = BestEnd.GetComponent <SpriteRenderer>();

        Sprite startSprite = Resources.Load <Sprite>("Start");

        StartSprite.sprite = startSprite;

        Sprite endSprite = Resources.Load <Sprite>("Start");

        EndSprite.sprite  = endSprite;
        StartSprite.color = new Color(0.75f, 1.0f, 0.75f);
        EndSprite.color   = new Color(1.0f, 0.75f, 0.75f);
    }