public static bool CheckObjective(GameObject building) { if (building.GetComponent <CraftableItem> () == null) { return(false); } CraftableItem b = building.GetComponent <CraftableItem> (); foreach (GameObject objective in _manager.objectiveItems) { CraftableItem craftableItem = objective.GetComponent <CraftableItem>(); if (b.ItemName == craftableItem.ItemName) { _manager.objectiveItems.Remove(objective); if (_manager.objectiveItems.Count == 0) { return(true); } else { return(false); } } } return(false); }
/// <summary> /// Takes the item's cost resources out of the inventory. /// </summary> /// <param name="building">Building.</param> void TakeResources(CraftableItem craftableItem) { foreach (CraftableItem.Cost buildingCost in craftableItem.BuildingCost) { _inventory.Add(buildingCost.item, -buildingCost.amount, this); } _craftCostUI.DrawCostView(craftableItem, _inventory); }
/// <summary> /// Takes the item's cost resources out of the inventory. /// </summary> /// <param name="building">Building.</param> void TakeResources(CraftableItem craftableItem) { foreach (CraftableItem.CraftCost craftCost in craftableItem.GetCraftCost) { _inventory.Add(craftCost.item, -craftCost.amount, this); } _craftCostUI.DrawCostView(craftableItem, _inventory); }
/// <summary> /// Check if there are enough resources on the inventory in order /// to craft the item. /// </summary> /// <returns><c>true</c>, if resources was hased, <c>false</c> otherwise.</returns> /// <param name="building">Building.</param> bool HaveResources(CraftableItem craftableItem) { foreach (CraftableItem.CraftCost cost in craftableItem.GetCraftCost) { if (!_inventory.HasItem(cost.item, cost.amount)) { return(false); } } return(true); }
/// <summary> /// Check if there are enough resources on the inventory in order /// to craft the item. /// </summary> /// <returns><c>true</c>, if resources was hased, <c>false</c> otherwise.</returns> /// <param name="building">Building.</param> bool HaveResources(CraftableItem craftableItem) { foreach (CraftableItem.Cost cost in craftableItem.BuildingCost) { if (!_inventory.Items.ContainsKey(cost.item)) { return(false); } if (_inventory.Items [cost.item] < cost.amount) { return(false); } } return(true); }
public void DestroyItem() { if (_data.GetType() == typeof(Item)) { return; } CraftableItem data = _data as CraftableItem; foreach (CraftableItem.CraftCost cost in data.GetCraftCost) { float amount = ((cost.amount < 1) ? 1 : (cost.amount / 2)); Manager.InstantiateItem(cost.item, transform.position, amount); } Destroy(gameObject); }
public static bool CheckObjective(CraftableItem craftableItem) { if (craftableItem == null) { return(false); } foreach (CraftableItem item in _manager.objectiveItems) { if (craftableItem.ItemName == item.ItemName) { _manager.objectiveItems.Remove(item); if (_manager.objectiveItems.Count == 0) { return(true); } else { return(false); } } } return(false); }
void Update() { // also quite suspicios around here..... if (timer + 1 < Time.time) { someHugeDataPackage = new System.Object[1000000]; timer = Time.time; } if (Input.GetKeyDown(KeyCode.Escape) && !_inventoryUI.IsActive()) { ShowPauseMenu(); } if ((Input.GetKeyDown(KeyCode.I) || Input.GetKeyDown(KeyCode.Tab)) && !_showingMenu) { _inventoryUI.Toogle(); } if (_showingMenu || _inventoryUI.IsActive()) { return; } //Enter the Crafting Mode if (Input.GetKeyDown(KeyCode.B)) { _craftingMode = !_craftingMode; if (_itemObj == null) { _itemObj = Manager.GetCraftableItem(_craftTypeIdx, _itemIdx); } if (_itemObj != null) { _itemObj.SetActive(_craftingMode); _actionText.Text = ""; _craftCostUI.gameObject.SetActive(_craftingMode); _currCraftItem = _itemObj.GetComponent <CraftableItem> (); _craftCostUI.DrawCostView(_currCraftItem, _inventory); _craftCostUI.setTypeText(_craftTypeIdx); } } if (Input.GetKeyDown(KeyCode.G)) { if (_toolHandler.CurrentTool != null) { _currItem = _toolHandler.CurrentTool.ItemName; Drop(); _currItem = ""; } } if (_craftingMode) { OnCraftingMode(); } else { if (Input.GetMouseButtonDown(0) && _toolHandler.CurrentTool != null) { _toolHandler.Attack(); } //Perform some action when E is pressed if (Input.GetKeyDown(KeyCode.E) && _interactionObj != null) { if (_interaction == Interaction.GrabTool) { Tool tool = _interactionObj.GetComponent <Tool> (); _inventory.Add(tool.ItemName, tool.Amount, this); if (_toolHandler.CurrentTool == null) { _toolHandler.ChangeTool(_interactionObj); } else { Destroy(_interactionObj); } _interactionObj = null; } else if (_interaction == Interaction.GrabItem) { Item item = _interactionObj.GetComponent <Item> (); float amountTaken = _inventory.Add(item.ItemName, item.Amount, this); if (amountTaken == item.Amount) { Destroy(_interactionObj); } else { item.Amount -= amountTaken; } } else if (_interaction == Interaction.OpenContainer) { //get the container inventory Inventory inventory = _interactionObj.GetComponent <Inventory> (); //draw the player's inventory _inventoryUI.Draw(_inventory); //draw the container inventory _inventoryUI.Draw(inventory); } } CheckPlayerFocus(); } }
void OnCraftingMode() { if (_currCraftItem == null) { return; } //use a raycast from above the player //using the offset distance forward to the player's position _raycaster.position = transform.position + transform.forward * _currCraftItem.Offset; _raycaster.position = new Vector3(_raycaster.position.x, _raycaster.position.y + 5, _raycaster.position.z); //position the item to be crafted using a ray from the raycaster transform if (UnityEngine.Physics.Raycast(_raycaster.position, _raycaster.forward, out _hit, 20, _craftLayers.value)) { //keep the object away from the player by the offset distance if (Vector3.Distance(_hit.point, this.gameObject.transform.position) >= _currCraftItem.Offset) { if (_currCraftItem.OnlyOnGround) { //position the item if the raycast hits a valid navmesh point if (UnityEngine.AI.NavMesh.SamplePosition(_hit.point, out _hitTerrain, 100.0f, UnityEngine.AI.NavMesh.AllAreas)) { _itemObj.transform.position = new Vector3(_hitTerrain.position.x, _hitTerrain.position.y, _hitTerrain.position.z); } } else //poisiton the item at the raycast hit position { _itemObj.transform.position = new Vector3(_hit.point.x, _hit.point.y + 0.2f, _hit.point.z); } } } if (_currCraftItem != null) { //if it is a valid place if (!_currCraftItem.CanBuild()) { _actionText.Text = "Can't build there!"; } else if (!HaveResources(_currCraftItem)) { _actionText.Text = "Lack of the required resources!"; } else { _actionText.Text = ""; } } bool changeType = false; //Previous Category //go back to zero after the end if (Input.GetKeyDown(KeyCode.Q)) { if (_craftTypeIdx > 0) { _craftTypeIdx -= 1; } else { _craftTypeIdx = Manager.GetCraftableTypeLength() - 1; } _itemIdx = 0; changeType = true; } //Next Category //go back to zero after the end if (Input.GetKeyDown(KeyCode.R)) { if (_craftTypeIdx < Manager.GetCraftableTypeLength() - 1) { _craftTypeIdx += 1; } else { _craftTypeIdx = 0; } _itemIdx = 0; changeType = true; } //change the category labels if (changeType) { _craftCostUI.setTypeText(_craftTypeIdx); } //Change the current craftableItem if (Input.GetAxis("Mouse ScrollWheel") != 0 || changeType) { if (Input.GetAxis("Mouse ScrollWheel") > 0) { if (_itemIdx < Manager.GetCraftableitemsLength(_craftTypeIdx) - 1) { _itemIdx += 1; } else { _itemIdx = 0; } } else if (Input.GetAxis("Mouse ScrollWheel") < 0) { if (_itemIdx > 0) { _itemIdx -= 1; } else { _itemIdx = Manager.GetCraftableitemsLength(_craftTypeIdx) - 1; } } //Destroy the previous and instiante the next item _itemObj.SetActive(false); Destroy(_itemObj); _itemObj = null; _itemObj = Manager.GetCraftableItem(_craftTypeIdx, _itemIdx); _itemObj.SetActive(true); _currCraftItem = _itemObj.GetComponent <CraftableItem> (); //update the cost view _craftCostUI.DrawCostView(_currCraftItem, _inventory); if (_currCraftItem.HasRigidBody && _itemObj.GetComponent <Rigidbody> () != null) { _itemObj.GetComponent <Rigidbody> ().detectCollisions = false; } } //Rotate item on mouse click if (Input.GetMouseButton(1)) { _itemObj.transform.Rotate(0, 30 * Time.deltaTime, 0); } else if (Input.GetMouseButton(0)) { _itemObj.transform.Rotate(0, -30 * Time.deltaTime, 0); } //try to place the item if (Input.GetKeyDown(KeyCode.E)) { if (this.HaveResources(_currCraftItem) && _currCraftItem.CanBuild()) { TakeResources(_currCraftItem); GameObject g = Instantiate(_itemObj); if (Manager.CheckObjective(_itemObj)) { _quickMessage.ShowMessage("Objective Completed", 5); } if (_currCraftItem.HasRigidBody && g.GetComponent <Rigidbody> () != null) { g.GetComponent <Rigidbody> ().detectCollisions = true; } g.GetComponent <CraftableItem> ().IsActive = true; } } }
void Update() { if (Input.GetKeyDown(KeyCode.Escape) && !_inventoryUI.IsActive()) { ShowPauseMenu(); } if ((Input.GetKeyDown(KeyCode.I) || Input.GetKeyDown(KeyCode.Tab)) && !_showingMenu) { _inventoryUI.Toogle(); _trading = false; } if (_showingMenu || _inventoryUI.IsActive()) { return; } //Enter/Exit the Crafting Mode if (Input.GetKeyDown(KeyCode.B) || Input.GetKeyDown(KeyCode.C)) { _craftingMode = !_craftingMode; if (_itemObj == null) { _itemObj = Manager.GetCraftableItemObj(_craftTypeIdx, _itemIdx); } if (_itemObj != null) { _itemObj.SetActive(_craftingMode); _actionText.Text = ""; _craftCostUI.gameObject.SetActive(_craftingMode); _currCraftItem = Manager.GetCraftableItem(_craftTypeIdx, _itemIdx); _craftCostUI.DrawCostView(_currCraftItem, _inventory); _craftCostUI.setTypeText(_craftTypeIdx); } } if (Input.GetKeyDown(KeyCode.G)) { if (_toolHandler.CurrentTool != null) { _currItem = _toolHandler.CurrentTool; Drop(); _currItem = null; } } if (_craftingMode) { OnCraftingMode(); } else { if (Input.GetButtonDown("Fire1") && _toolHandler.CurrentTool != null) { _toolHandler.Attack(); } //Perform some action when E is pressed if ((Input.GetKeyDown(KeyCode.E) || Input.GetButton("Fire2")) && _interactionObj != null) { if (_interaction == Interaction.GrabTool) { ItemReference tool = _interactionObj.GetComponent <ItemReference> () as ItemReference; Tool item = _interactionObj.GetComponent <ItemReference>().Data as Tool; _inventory.Add(item, tool.Amount, this); if (_toolHandler.CurrentTool == null) { _toolHandler.ChangeTool(item); Destroy(_interactionObj); } else { Destroy(_interactionObj); } _interactionObj = null; } else if (_interaction == Interaction.GrabItem) { ItemReference item = _interactionObj.GetComponent <ItemReference> (); float amountTaken = _inventory.Add(item.Data, item.Amount, this); if (amountTaken == item.Amount) { Destroy(_interactionObj); } else { item.Amount -= amountTaken; } } else if (_interaction == Interaction.OpenContainer) { //get the container inventory Inventory inventory = _interactionObj.GetComponent <Inventory> (); //draw the player's inventory _inventoryUI.Draw(_inventory); _trading = (inventory.InvType == Inventory.Type.Store); //draw the container inventory _inventoryUI.Draw(inventory); } } CheckPlayerFocus(); } }
// Use this for initialization void Start() { _craftableItem = this.GetComponent <CraftableItem> (); InvokeRepeating("GenerateItem", _interval, _interval); }