示例#1
0
    public static void AddPresentToHistory(InventoryTile inventoryElementUsed)
    {
        for (int i = currentPointOfTime + 1; i < gridHistory.Count;)
        {
            gridHistory.RemoveAt(i);
            inventoryHistory.RemoveAt(i);
        }
        inventoryHistory.Add(inventoryElementUsed);
        gridHistory.Add(new List <GridChange>(gridPresent));
        gridPresent.Clear();
        currentPointOfTime = gridHistory.Count - 1;

        bUndo.interactable  = true;
        bRedo.interactable  = false;
        bClear.interactable = true;
        if (PuzzleManager.CheckIfCurrentCanBeSubmitted())
        {
            bSubmit.interactable = true;
            //Debug.Log("PuzzleComplete!");
            puzzleCompletePS.Play();
        }
        else
        {
            bSubmit.interactable = false;
        }
    }
示例#2
0
 public static InventoryTile ConfirmRequest()
 {
     if (request == null)
     {
         return(null);
     }
     else
     {
         InventoryTile r = request;
         request = null;
         return(r);
     }
 }
示例#3
0
 public static bool RequestUse(Vector2 worldPos)
 {
     request = inventoryGrid.WorldPosToGrid(MainCamera.mousePos);
     if (request == null || !request.isAvailable)
     {
         request = null;
         return(false);
     }
     else if (request.UpdateAvailability(false))
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#4
0
    /// <summary>
    /// Executes an Action depending on the CurrentEquipped Item. (Build or use Weapon)
    /// </summary>
    internal void ProcessAction()
    {
        if (Attributes.IsAlive)
        {
            IInventoryItem currentItem = Attributes.CurrentEquippedItem;
            if (currentItem is InventoryTile)
            {
                InventoryTile inventoryTile = (InventoryTile)currentItem;
                PrefabTile    tileToBuild   = inventoryTile.Tile;

                if (resourceManager.ConstructionMaterialAvailable >= tileToBuild.BuildingCosts)
                {
                    if (!tileController.TryAddTile(tileToBuild, transform.position))
                    {
                        var fadeout = Instantiate(fadeoutTextPrefab, transform);
                        fadeout.TextMesh.text  = "#@!&$%";
                        fadeout.TextMesh.color = new Color(1.0f, 0.0f, 0.0f, 1);
                    }
                    // Consume should always work in this case, because we checked for available resources
                    else if (!resourceManager.TryConsume(tileToBuild.BuildingCosts))
                    {
                        Debug.LogError("Could not consume resources for building even though enough resources were available");
                    }
                    else
                    {
                        // Success, create building
                        var fadeout = Instantiate(fadeoutTextPrefab, transform);
                        fadeout.TextMesh.text  = $"-{(float)tileToBuild.BuildingCosts}";
                        fadeout.TextMesh.color = new Color(0.6392157F, 0.5019608F, 0.3892157F, 1.0F);
                    }
                }
                else
                {
                    var fadeout = Instantiate(fadeoutTextPrefab, transform);
                    fadeout.TextMesh.text  = "Not enought Resources!";
                    fadeout.TextMesh.color = new Color(1.0f, 0.0f, 0.0f, 1);
                }
            }
            else if (currentItem is InventoryWeapon)
            {
                InventoryWeapon inventoryWeapon = (InventoryWeapon)currentItem;
                inventoryWeapon.Weapon.GetComponent <IPlayerWeapon>().Fire();
            }
        }
    }
示例#5
0
    public override void CreateGrid()
    {
        base.CreateGrid();
        grid = new InventoryTile[gridTransforms.Length][];

        for (int y = 0, i = 0; y < grid.Length; y++)
        {
            grid[y] = new InventoryTile[gridTransforms[y].Length];

            for (int x = 0; x < grid[y].Length; x++, i++)
            {
                int elementID = -1;
                if (i < InventoryOS.elements.Length && InventoryOS.elements[i] != null)
                {
                    elementID = InventoryOS.elements[i].id;
                }
                grid[y][x] = new InventoryTile(gridTransforms[y][x], new Vector2Int(x, y), elementID);
            }
        }
    }
示例#6
0
    /// <summary>
    /// Opens the Menu with the Inventory with the available Tiles and Weapons.
    /// </summary>
    internal void OpenInventory()
    {
        if (Attributes.IsAlive)
        {
            this.playerMovement.enabled = false;
            var itemList = new List <IInventoryItem>();

            foreach (GameObject weapon in weapons)
            {
                Sprite         sprite = weapon.GetComponent <SpriteRenderer>().sprite;
                IInventoryItem item   = new InventoryWeapon(Instantiate(weapon, weaponCache.transform), sprite);
                itemList.Add(item);
            }

            foreach (PrefabTile tile in tiles)
            {
                IInventoryItem item = new InventoryTile(tile);
                itemList.Add(item);
            }

            this.inventory.EnableMenuView(itemList);
            this.inventory.EnableItemSelection();
        }
    }
示例#7
0
 public void UnsetTile()
 {
     tile = null;
 }
示例#8
0
 public void SetTile(InventoryTile tile)
 {
     this.tile = tile;
 }
示例#9
0
 public static void CancelRequest()
 {
     request.UpdateAvailability(true);
     request = null;
 }