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); }
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(); } }
/// <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(); } } } }
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); }
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); }