private void CreateCellAt(Level.Level level, int x, int y) { var existingCell = level.GetCellAt(x, y); if (existingCell != null) { return; } Vector3 position = new Vector3 ( transform.position.x + x * cellWidth, 0.0f, transform.position.y + y * cellHeight ); LevelObject.Cell cell = Instantiate(CellPrefab, position, transform.rotation); foreach (Transform child in cell.transform) { if (child.CompareTag("Minimap")) { child.gameObject.SetActive(false); break; } } cell.Location = new Vector2Int(x, y); level.AddCell(cell); }
private void ConnectRooms(Level.Level level, List <RectInt> rooms) { if (rooms.Count == 0) { return; } List <RectInt> disconnectedRooms = new List <RectInt>(); disconnectedRooms.AddRange(rooms); List <RectInt> connectedRooms = new List <RectInt>(); connectedRooms.Add(rooms[random.Next(rooms.Count)]); while (disconnectedRooms.Count > 0) { var disconnectedIndex = random.Next(disconnectedRooms.Count); var connectedIndex = random.Next(connectedRooms.Count); var disconnectedRoom = disconnectedRooms[disconnectedIndex]; var connectedRoom = connectedRooms[connectedIndex]; ConnectWithPassage(level, disconnectedRoom, connectedRoom); disconnectedRooms.RemoveAt(disconnectedIndex); connectedRooms.Add(disconnectedRoom); } }
public Level.Level ReadNewLevelOnFile() { var reader = new System.Xml.Serialization.XmlSerializer(typeof(Level.Level)); var file = new System.IO.StreamReader("levels/" + _currentLevel.ToString() + ".xml"); Level.Level newLevel = (Level.Level)reader.Deserialize(file); return(newLevel); }
private void PlaceRoom(Level.Level level, RectInt position) { for (int i = position.xMin + 1; i < position.xMax; ++i) { for (int j = position.yMin + 1; j < position.yMax; ++j) { CreateCellAt(level, i, j); } } }
// Start is called before the first frame update void Start() { CurrentLevelIndex = 0; Debug.Log("level : " + CurrentLevelIndex); GameFSM.GetState(GameStateLevel).OnStateInEvent.AddListener(() => { LevelFsm = new FSMLite(); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateOpen }); LevelFsm.RegisterState(new FSMLite.State() { Name = LevelStateClose }); LevelFsm.GetState(LevelStateOpen).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(false); }); LevelFsm.GetState(LevelStateClose).OnStateInEvent.AddListener(() => { DistortionMask.SetActive(true); }); UI.SetLevelFSM(LevelFsm); LevelFsm.Start(LevelStateOpen); if (LevelPrefabList.Count > CurrentLevelIndex) { var levelPrefab = LevelPrefabList[CurrentLevelIndex]; var levelGo = Instantiate(levelPrefab, transform); if (!(levelGo is null)) { Level = levelGo.GetComponent <Level.Level>(); } switchCameraLimit(); } }); GameFSM.GetState(GameStateLevel).OnStateOutEvent.AddListener(() => { UI.UnSetLevelFSM(LevelFsm); LevelFsm.Clear(); LevelFsm = null; Destroy(Level.gameObject); }); UI.SetGameFSM(GameFSM); GameFSM.Start(GameStateMenu); }
private void save_Click(object sender, EventArgs e) { Level.Level result = new Level.Level(); result.wall = _wallCoordinates; result.enemys = _enemyCoordinates; result.pacMan = _pacManCoordinate; result.numberColumns = _numberColumns; result.numberLines = _numberLines; using (Stream fStream = new FileStream(_numerLevel.ToString() + ".xml", FileMode.Create, FileAccess.Write, FileShare.None)) { var writer = new System.Xml.Serialization.XmlSerializer(typeof(Level.Level)); writer.Serialize(fStream, result); } _numerLevel++; }
private void CreateBackground(Level.Level level) { GameObject background = Instantiate(BackgroundPrefab); var dx = ((level.Cells.XMax + level.Cells.XMin) / 2) * cellWidth; var dy = ((level.Cells.YMax + level.Cells.YMin) / 2) * cellHeight; background.transform.position += new Vector3(dx, -1f, dy); var levelWidth = level.Cells.XMax - level.Cells.XMin; var levelHeight = level.Cells.YMax - level.Cells.YMin; var backgroundSize = background.GetComponent <Renderer>().bounds.size; var sx = levelWidth * cellWidth / backgroundSize.x * 2; var sy = levelHeight * cellHeight / backgroundSize.z * 2; background.transform.localScale = new Vector3(sx, 1.0f, sy); }
public Game(int currentLevel) { this._currentLevel = currentLevel; this._numberLevels = ConsiderNumberLevels(); Level.Level LevelInfo = new Level.Level(); LevelInfo = ReadNewLevelOnFile(); _pacMan = new PacMan(LevelInfo.pacMan); Wall levelWall = new Wall(); levelWall.WallCordinate = LevelInfo.wall; this._map = new Map(levelWall, LevelInfo.numberColumns, LevelInfo.numberLines); this._pacMan = new PacMan(LevelInfo.pacMan); EnemyArtificialIntelligence _enemyAI = new EnemyArtificialIntelligence(_map.LevelFood.FoodCoordinates); this._enemys = new Enemys(LevelInfo.enemys, _enemyAI); _enemyTimer = new Timer(MakeMoveEnemy, null, 0, GameSettings.EnemySpeed); }
private void ConnectWithPassage(Level.Level level, RectInt room1, RectInt room2) { int startX = random.Next(room1.xMin + 1, room1.xMax - 1); int startY = random.Next(room1.yMin + 1, room1.yMax - 1); int endX = random.Next(room2.xMin + 1, room2.xMax - 1); int endY = random.Next(room2.yMin + 1, room2.yMax - 1); int stepX = startX < endX ? 1 : -1; int stepY = startY < endY ? 1 : -1; int i = startX; int j = startY; while (true) { bool xChanged = false; if (Math.Abs(startX - i) < Math.Abs(startX - endX)) { i += stepX; xChanged = true; } bool yChanged = false; if (Math.Abs(startY - j) < Math.Abs(startY - endY)) { j += stepY; yChanged = true; } if (xChanged && yChanged) { CreateCellAt(level, i, j); CreateCellAt(level, i - stepX, j); CreateCellAt(level, i, j - stepY); } else if (xChanged || yChanged) { CreateCellAt(level, i, j); } else { break; } } }
public Game(int currentLevel) { this._currentLevel = currentLevel; this._numberLevels = ConsiderNumberLevels(); Level.Level LevelInfo = new Level.Level(); LevelInfo = ReadNewLevelOnFile(); _pacMan = new PacMan(LevelInfo.pacMan); Wall levelWall = new Wall(); levelWall.WallCordinate = LevelInfo.wall; this._map = new Map(levelWall, LevelInfo.numberColumns, LevelInfo.numberLines); this._pacMan = new PacMan(LevelInfo.pacMan); EnemyArtificialIntelligence _enemyAI = new EnemyArtificialIntelligence(_map.LevelFood.FoodCoordinates); this._enemys = new Enemys(LevelInfo.enemys, _enemyAI); _enemyTimer = new Timer(MakeMoveEnemy, null, 0, GameSettings.EnemySpeed); }
public Level.Level GenerateLevel() { Level.Level result = gameObject.AddComponent <Level.Level>(); var rooms = GenerateRooms(); result.Rooms = rooms; foreach (var room in rooms) { PlaceRoom(result, room); } ConnectRooms(result, rooms); CreateBackground(result); return(result); }
void Start() { gameState = GameObject.FindObjectsOfType <GameState>()[0]; kills = gameState.GetInt(KILLS_KEY, 0); Player.Hp = gameState.GetInt(HP_KEY, Player.Hp); LevelText.text = $"Level: {gameState.GetInt(LEVEL_KEY, 1)}"; PauseCanvas.enabled = false; ResumeButton.onClick.AddListener(OnResume); QuitButton.onClick.AddListener(OnQuit); level = levelGeneratorInstance.GenerateLevel(); PlacePlayer(); UpdateCellsVisibility(); PlaceMonsters(); PlaceNextLevel(); }
private void save_Click(object sender, EventArgs e) { Level.Level result = new Level.Level(); result.wall = _wallCoordinates; result.enemys = _enemyCoordinates; result.pacMan = _pacManCoordinate; result.numberColumns = _numberColumns; result.numberLines = _numberLines; using (Stream fStream = new FileStream(_numerLevel.ToString() + ".xml", FileMode.Create, FileAccess.Write, FileShare.None)) { var writer = new System.Xml.Serialization.XmlSerializer(typeof(Level.Level)); writer.Serialize(fStream, result); } _numerLevel++; }