private void Update() { if (!_currObjectiveComplete) { switch (_objectiveCounter) { case 0: { Inventory pInv = GameManager.Instance.PlayerAvatar.GetComponent <Inventory>(); if (pInv.GetAmtResource(Inventory.ResourceType.Wood) >= 10) { _currObjectiveComplete = true; NextButton.gameObject.SetActive(true); NextClicked(); } } break; case 1: if (Input.GetButtonDown("Interact")) { // Place desk PlayerController player = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>(); GuildManagementDesk desk = GameManager.Instance.PlayerGuildDesk.GetComponent <GuildManagementDesk>(); Vector3 deskPos = player.transform.position; deskPos += player.transform.forward * 5; deskPos.y -= 1.7f; desk.transform.position = deskPos; Vector3 deskRotEuler = player.transform.rotation.eulerAngles; deskRotEuler.x -= 90.0f; deskRotEuler.y += 180.0f; Quaternion deskRot = new Quaternion(); deskRot.eulerAngles = deskRotEuler; desk.transform.rotation = deskRot; desk.gameObject.SetActive(true); desk.CanSpawnRecruitCards = false; // Consume wood Inventory pInv = player.GetComponent <Inventory>(); pInv.RemoveResources(Inventory.ResourceType.Wood, 10); // Go to next objective _currObjectiveComplete = true; NextButton.gameObject.SetActive(true); NextClicked(); desk.GuildNameChangedEvent.AddListener(DeskGuildNameChanged); } break; } } }
// OBJECTIVE 7 private void RecruitedFirstGuildie() { if (!_currObjectiveComplete && (_objectiveCounter == 7)) { _currObjectiveComplete = true; NextButton.gameObject.SetActive(true); NextClicked(); // remove listener GuildManagementDesk desk = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>().MyGuild.Desk.GetComponent <GuildManagementDesk>(); desk.RecruitedSomeone.RemoveAllListeners(); } }
// OBJECTIVE 6 private void KilledFirstEnemy(GameObject source) { if (!_currObjectiveComplete && (_objectiveCounter == 6)) { _currObjectiveComplete = true; NextButton.gameObject.SetActive(true); NextClicked(); // no need to remove listener, enemy's dead anyway // prepare for next objective GuildManagementDesk desk = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>().MyGuild.Desk.GetComponent <GuildManagementDesk>(); desk.CanSpawnRecruitCards = true; desk.RecruitedSomeone.AddListener(RecruitedFirstGuildie); } }
// OBJECTIVE 2 private void DeskGuildNameChanged() { // Objective 2 completed if (!_currObjectiveComplete && (_objectiveCounter == 2)) { _currObjectiveComplete = true; NextButton.gameObject.SetActive(true); NextClicked(); // remove listener PlayerController player = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>(); GuildManagementDesk desk = player.MyGuild.Desk; desk.GuildNameChangedEvent.RemoveListener(DeskGuildNameChanged); // add listener for objective 3 player.GetComponent <QuestHolder>().QuestAcquiredEvent.AddListener(PickedUpAQuest); } }
private void ItemClicked(InvItem item) { bool canTake = false; Guild PlayersGuild = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>().MyGuild; GuildMemberController gmContr = GetComponent <GuildMemberController>(); if (gmContr) { if (gmContr.NPCsGuild == PlayersGuild) { canTake = true; } } else { GuildManagementDesk gmDesk = GetComponent <GuildManagementDesk>(); if (gmDesk) { if (gmDesk.DeskGuild == PlayersGuild) { canTake = true; } } } if (!canTake) { Debug.Log("You can't take items from an inventory which does not belong to your guild"); return; } Inventory targetInv = GameManager.Instance.PlayerAvatar.GetComponent <Inventory>(); targetInv.GiveItem(item); }
private void GiveResource(ResourceType type) { int amtToGive = 0; int maxAmtToGive = 0; Inventory sourceInv = null; GuildManagementDesk desk = null; // if this inventory is on an NPC GuildMemberController memberContr = GetComponent <GuildMemberController>(); if (memberContr) { // set the source inv to the guild leader's inventory sourceInv = memberContr.NPCsGuild.GuildLeader.GetComponent <Inventory>(); } else { // this inventory is on a desk desk = GetComponent <GuildManagementDesk>(); if (desk) { // source inv is the guild leader's inventory sourceInv = desk.DeskGuild.GuildLeader.GetComponent <Inventory>(); } } maxAmtToGive = sourceInv.GetAmtResource(type); // set amts based on which type switch (type) { case ResourceType.Gold: amtToGive = int.Parse(GoldInput.text); break; case ResourceType.Wood: amtToGive = int.Parse(WoodInput.text); break; case ResourceType.Stone: amtToGive = int.Parse(StoneInput.text); break; case ResourceType.Food: amtToGive = int.Parse(FoodInput.text); break; } if (amtToGive <= maxAmtToGive) { if (sourceInv) { // take the resources from the source inv sourceInv.RemoveResources(type, amtToGive); // add the resources to this inv switch (type) { case ResourceType.Gold: _amtGold += amtToGive; GoldAmt.text = "Gold: " + _amtGold.ToString(); break; case ResourceType.Wood: _amtWood += amtToGive; WoodAmt.text = "Amount of wood: " + _amtWood.ToString(); break; case ResourceType.Stone: _amtStone += amtToGive; StoneAmt.text = "Amount of stone: " + _amtStone.ToString(); break; case ResourceType.Food: _amtFood += amtToGive; FoodAmt.text = "Amount of food: " + _amtFood.ToString(); break; } } } }
private void TakeResource(ResourceType type) { int amtToTake = 0; int maxAmtToTake = 0; // set amts based on which type switch (type) { case ResourceType.Gold: amtToTake = int.Parse(GoldInput.text); maxAmtToTake = _amtGold; break; case ResourceType.Wood: amtToTake = int.Parse(WoodInput.text); maxAmtToTake = _amtWood; break; case ResourceType.Stone: amtToTake = int.Parse(StoneInput.text); maxAmtToTake = _amtStone; break; case ResourceType.Food: amtToTake = int.Parse(FoodInput.text); maxAmtToTake = _amtFood; break; } // is possible to take if (amtToTake <= maxAmtToTake) { Inventory targetInv = null; // get the guild leader who probably requested this GuildMemberController memberContr = GetComponent <GuildMemberController>(); // get the target inv if (memberContr) { targetInv = memberContr.NPCsGuild.GuildLeader.GetComponent <Inventory>(); } else { GuildManagementDesk desk = GetComponent <GuildManagementDesk>(); targetInv = desk.DeskGuild.GuildLeader.GetComponent <Inventory>(); } if (targetInv) { // give the resources to the target inv targetInv.AddResource(type, amtToTake); // take the resources away from this inv switch (type) { case ResourceType.Gold: _amtGold -= amtToTake; GoldAmt.text = "Gold: " + _amtGold.ToString(); break; case ResourceType.Wood: _amtWood -= amtToTake; WoodAmt.text = "Amount of wood: " + _amtWood.ToString(); break; case ResourceType.Stone: _amtStone -= amtToTake; StoneAmt.text = "Amount of stone: " + _amtStone.ToString(); break; case ResourceType.Food: _amtFood -= amtToTake; FoodAmt.text = "Amount of food: " + _amtFood.ToString(); break; } } } }