Example #1
0
    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);
        }
    }
Example #2
0
 public DungeonTile(LevelGenerator.Room room, EncounterScriptableObject encounter)
 {
     Encounter = encounter;
     Room      = room;
     Visited   = false;
     Seen      = false;
 }
Example #3
0
    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();
    }
Example #4
0
 public void Display(EncounterScriptableObject encounter)
 {
     spoilsArea.DiscardItems();
     foreach (var spoil in encounter.drops)
     {
         Item newItem = Item.CreateItem(spoil);
         spoilsArea.AddToDrop(newItem);
     }
 }
Example #5
0
 public void Input_TileSelected(DungeonTile tile)
 {
     if (!tile.Visited)
     {
         currentEncounterSelected = tile.Encounter;
         ShowPanel(tileResultModal);
         tileResultModal.Display(tile.Encounter, StartCombat);
     }
     RunManager.Instance.TileVisited(tile);
     Refresh();
 }
Example #6
0
 void OnCombatEnd(bool defeat = false)
 {
     if (defeat)
     {
         EndRun();
     }
     else
     {
         currentEncounter = null;
         GameManager.Instance.ChangeState(GameManager.State.Dungeon);
     }
 }
Example #7
0
 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!";
     }
 }
Example #8
0
    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();
    }
Example #9
0
 public Encounter(EncounterScriptableObject encounterData)
 {
     enemies = encounterData.enemies;
 }
Example #10
0
 public void StartCombat(EncounterScriptableObject encounter)
 {
     currentEncounter = encounter;
     GameManager.Instance.ChangeState(GameManager.State.Combat, OnCombatSceneLoaded);
 }