public void GenerateLevel() { int unixTimestamp = ((long)(System.DateTime.UtcNow.Subtract(new System.DateTime(1970, 1, 1))).TotalSeconds).GetHashCode(); LevelGenerator levelGenerator = new LevelGenerator(CurrentDungeon.numberOfTiles, 0.9f, unixTimestamp, CurrentDungeon.frequencyOfHallwayDiversions, CurrentDungeon.lengthOfHallways); levelGenerator.GenerateLevel(); foreach (var room in levelGenerator.AllRooms) { EncounterScriptableObject encounter = null; if (!(room.Position.x == 0 && room.Position.y == 0)) { encounter = (Random.Range(0, 2) == 1) ? CurrentDungeon.encounters[Random.Range(0, CurrentDungeon.encounters.Length)] : null; } DungeonTile dt = new DungeonTile(room, encounter); if (room.Position.x == 0 && room.Position.y == 0) { currentTile = dt; currentTile.TileVisited(); currentTile.TileSeen(); } dt.TileSeen(); Tiles.Add(dt); } }
public DungeonTile(LevelGenerator.Room room, EncounterScriptableObject encounter) { Encounter = encounter; Room = room; Visited = false; Seen = false; }
public void StartBattle(EncounterScriptableObject encounterSO, List <Player> players, int maxCardForPlayers) { currentEncounter = new Encounter(encounterSO); List <EnemyScriptableObject> enemyList = new List <EnemyScriptableObject>(); foreach (var enemy in currentEncounter.enemies) { enemyList.Add(enemy); } this.players = players; this.enemies = enemyManager.SpawnEnemies(enemyList, this, OnEnemyDeath); this.maxCardForPlayers = maxCardForPlayers; StartCoroutine(DrawFullHand(maxCardForPlayers)); foreach (var p in players) { p.RefreshUI(); } HideTargettingButtons(); turn = TurnSelection.Players; StartTurn(); //FindObjectOfType<AudioManager>().PlayMusic(); }
public void Display(EncounterScriptableObject encounter) { spoilsArea.DiscardItems(); foreach (var spoil in encounter.drops) { Item newItem = Item.CreateItem(spoil); spoilsArea.AddToDrop(newItem); } }
public void Input_TileSelected(DungeonTile tile) { if (!tile.Visited) { currentEncounterSelected = tile.Encounter; ShowPanel(tileResultModal); tileResultModal.Display(tile.Encounter, StartCombat); } RunManager.Instance.TileVisited(tile); Refresh(); }
void OnCombatEnd(bool defeat = false) { if (defeat) { EndRun(); } else { currentEncounter = null; GameManager.Instance.ChangeState(GameManager.State.Dungeon); } }
public void Display(EncounterScriptableObject encounter, System.Action OnCombatStarted) { combatButton.interactable = false; combatButton.onClick.RemoveAllListeners(); if (encounter != null) { description.text = "You found:\n" + encounter.enemies.Length.ToString() + " enemies!"; combatButton.interactable = true; combatButton.onClick.AddListener(delegate { OnCombatStarted(); }); combatButton.onClick.AddListener(delegate { OnClick(); }); } else { description.text = "You found:\nNothing!"; } }
public void StartCombat(EncounterScriptableObject encounterSO, List <Player> players, System.Action <bool> callback) { //List<EnemyScriptableObject> enemyList = new List<EnemyScriptableObject>(); int i = 0; foreach (var enemy in encounterSO.enemies) { EnemyCombatObject newEnemy = SpawnEntity(enemy, enemyManager.enemyPanel) as EnemyCombatObject; newEnemy.enemyIndex = this.enemies.Count; newEnemy.transform.localPosition = new Vector3(-encounterSO.enemies.Length / 2 + i, 0f, 0f); newEnemy.transform.localEulerAngles = new Vector3(0, 180f, 0); this.enemies.Add(newEnemy); i++; } enemyManager.SpawnEnemies(this.enemies, OnEnemyDeath); currentEncounter = encounterSO; combatOver = false; i = 0; foreach (var p in players) { if (p.Health < 1) { p.Health = 1; } PlayerCombatObject newPlayer = SpawnEntity(p, playersLocation.transform, hands[i], uis[i]) as PlayerCombatObject; newPlayer.transform.localPosition = new Vector3(-1 + i * 2, 0, 0); this.players.Add(newPlayer); i++; } foreach (var p in this.players) { p.RefreshUI(); } OnCombatEnd += callback; turn = TurnSelection.Players; StartTurn(); }
public Encounter(EncounterScriptableObject encounterData) { enemies = encounterData.enemies; }
public void StartCombat(EncounterScriptableObject encounter) { currentEncounter = encounter; GameManager.Instance.ChangeState(GameManager.State.Combat, OnCombatSceneLoaded); }