void Start() { dungeonGenerator = GetComponent <DungeonGenerator>(); dungeonGenerator.InitializeDungeon(); dungeonGenerator.GenerateDungeon(); FoV.Initialize(RangeOfView); FirstTurn(); }
private void Update() { // advance time MoveCooldown = Mathf.Max(MoveCooldown - Time.deltaTime, 0); if (manager.isPlayerTurn && canMove) { if (MoveCooldown == 0) { Vector2Int move = new Vector2Int(); if (Controls.GetKeyDown(Controls.Inputs.MoveUp) || Controls.GetKey(Controls.Inputs.MoveUp)) { move.y = 1; } if (Controls.GetKeyDown(Controls.Inputs.MoveDown) || Controls.GetKey(Controls.Inputs.MoveDown)) { move.y = -1; } if (Controls.GetKeyDown(Controls.Inputs.MoveLeft) || Controls.GetKey(Controls.Inputs.MoveLeft)) { move.x = -1; } if (Controls.GetKeyDown(Controls.Inputs.MoveRight) || Controls.GetKey(Controls.Inputs.MoveRight)) { move.x = 1; } if (Controls.GetKeyDown(Controls.Inputs.MoveUpLeft) || Controls.GetKey(Controls.Inputs.MoveUpLeft)) { move.x = -1; move.y = 1; } if (Controls.GetKeyDown(Controls.Inputs.MoveUpRight) || Controls.GetKey(Controls.Inputs.MoveUpRight)) { move.x = 1; move.y = 1; } if (Controls.GetKeyDown(Controls.Inputs.MoveDownRight) || Controls.GetKey(Controls.Inputs.MoveDownRight)) { move.x = 1; move.y = -1; } if (Controls.GetKeyDown(Controls.Inputs.MoveDownLeft) || Controls.GetKey(Controls.Inputs.MoveDownLeft)) { move.x = -1; move.y = -1; } if (Controls.GetKeyDown(Controls.Inputs.CloseDoors) || Controls.GetKey(Controls.Inputs.CloseDoors)) { if (MapManager.map[position.x - 1, position.y + 1]?.structure is Door door) { door.CloseDoor(); } if (MapManager.map[position.x, position.y + 1]?.structure is Door door1) { door1.CloseDoor(); } if (MapManager.map[position.x + 1, position.y + 1]?.structure is Door door2) { door2.CloseDoor(); } if (MapManager.map[position.x + 1, position.y]?.structure is Door door4) { door4.CloseDoor(); } if (MapManager.map[position.x + 1, position.y - 1]?.structure is Door door5) { door5.CloseDoor(); } if (MapManager.map[position.x, position.y - 1]?.structure is Door door6) { door6.CloseDoor(); } if (MapManager.map[position.x - 1, position.y - 1]?.structure is Door door7) { door7.CloseDoor(); } if (MapManager.map[position.x - 1, position.y]?.structure is Door door8) { door8.CloseDoor(); } manager.FinishPlayersTurn(); } if (move.sqrMagnitude > 0) { Move(InputToVector(move.x, move.y)); MoveCooldown = MoveDelay; } } Selector.Current.SelectedTile(position.x, position.y); if (Controls.GetKeyUp(Controls.Inputs.Use)) { if (MapManager.map[position.x, position.y].item != null) { if (playerStats.maximumInventorySpace > playerStats.currentItems && playerStats.currentWeight + MapManager.map[position.x, position.y].item.GetComponent <Item>().iso.I_weight <= playerStats.maxWeight) { playerStats.currentWeight += MapManager.map[position.x, position.y].item.GetComponent <Item>().iso.I_weight; playerStats.Pickup(MapManager.map[position.x, position.y].item, MapManager.map[position.x, position.y].item.GetComponent <Item>().iso, target); MapManager.map[position.x, position.y].letter = ""; MapManager.map[position.x, position.y].baseChar = "."; MapManager.map[position.x, position.y].exploredColor = new Color(1, 1, 1); MapManager.map[position.x, position.y].hasPlayer = false; MapManager.map[position.x, position.y].timeColor = new Color(0, 0, 0); position = target; MapManager.map[position.x, position.y].hasPlayer = true; MapManager.map[position.x, position.y].baseChar = "."; MapManager.map[position.x, position.y].timeColor = new Color(0.5f, 1, 0); MapManager.map[position.x, position.y].letter = "@"; MapManager.playerPos = new Vector2Int(position.x, position.y); } else if (playerStats.maximumInventorySpace < playerStats.currentItems) { manager.UpdateMessages("Your backpack can't hold any more items!"); MapManager.map[position.x, position.y].letter = ""; MapManager.map[position.x, position.y].hasPlayer = false; MapManager.map[position.x, position.y].timeColor = new Color(0, 0, 0); position = target; MapManager.map[position.x, position.y].hasPlayer = true; MapManager.map[position.x, position.y].timeColor = new Color(0.5f, 1, 0); MapManager.map[position.x, position.y].letter = "@"; MapManager.playerPos = new Vector2Int(position.x, position.y); } else if (playerStats.currentWeight + MapManager.map[target.x, target.y].item.GetComponent <Item>().iso.I_weight > playerStats.maxWeight) { if (!MapManager.map[target.x, target.y].item.GetComponent <Item>().identified) { manager.UpdateMessages($"The {MapManager.map[target.x, target.y].item.GetComponent<Item>().iso.I_unInName} is too heavy. It weighs {MapManager.map[target.x, target.y].item.GetComponent<Item>().iso.I_weight}"); } else { manager.UpdateMessages($"The {MapManager.map[target.x, target.y].item.GetComponent<Item>().iso.I_name} is too heavy. It weighs {MapManager.map[target.x, target.y].item.GetComponent<Item>().iso.I_weight}"); } MapManager.map[position.x, position.y].letter = ""; MapManager.map[position.x, position.y].hasPlayer = false; MapManager.map[position.x, position.y].timeColor = new Color(0, 0, 0); position = target; MapManager.map[position.x, position.y].hasPlayer = true; MapManager.map[position.x, position.y].timeColor = new Color(0.5f, 1, 0); MapManager.map[position.x, position.y].letter = "@"; MapManager.playerPos = new Vector2Int(position.x, position.y); } } else if (MapManager.map[position.x, position.y].structure != null) { MapManager.map[position.x, position.y].structure.Use(); //FOVNEW.fv.Initialize(FOVNEW.fv.CanLightPass, FOVNEW.fv.SetToVisible, FOVNEW.fv.Distance); FoV.Initialize(); //manager.UpdateVisibility(); manager.StartPlayersTurn(); manager.fv.Compute(position, playerStats.viewRange); DungeonGenerator.dungeonGenerator.DrawMap(MapManager.map); } } } else if (isStunned) { isStunned = false; canMove = true; manager.FinishPlayersTurn(); } }