Example #1
0
    void Start()
    {
        dungeonGenerator = GetComponent <DungeonGenerator>();

        dungeonGenerator.InitializeDungeon();
        dungeonGenerator.GenerateDungeon();

        FoV.Initialize(RangeOfView);

        FirstTurn();
    }
Example #2
0
    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();
        }
    }