public void AddMemberFromVillager(VillagerBehaviour vill) { GameObject newMember = Instantiate(MemberPrefab, MemberSpawnPoint.transform); GuildMemberController gmContr = newMember.GetComponent <GuildMemberController>(); gmContr.NameMesh.text = vill.VillagerName; gmContr.MemberMenuName.text = vill.VillagerName; GuildMembers.Add(newMember); gmContr.SetGuild(this); // newMember.transform.position = MemberSpawnPoint.transform.position; // newMember.transform.localPosition = new Vector3(0, 0, 0); Vector3 SpawnOffset = new Vector3(); SpawnOffset.x = Random.Range(-NewMemberSpawnPointRadius, NewMemberSpawnPointRadius); SpawnOffset.z = Random.Range(-NewMemberSpawnPointRadius, NewMemberSpawnPointRadius); int test = Random.Range(0, 2); if (test == 0) { SpawnOffset.z *= -1; } newMember.transform.localPosition += SpawnOffset; newMember.transform.parent = /*MemberSpawnPoint.*/ transform; newMember.transform.localScale = new Vector3(1, 1, 1); }
void Start() { if (transform.gameObject.name != "Canvas") { if (transform.parent.name != "BossGate") { buttonCanvas = transform.FindChild("Canvas").gameObject; } } else { buttonCanvas = transform.gameObject; } chestLoot = GetComponent <ChestLoot>(); ett = GetComponent <EnterTransitionTrigger>(); villagerB = GetComponent <VillagerBehaviour>(); altOS = GameManager.instance.altOS; }
private void SpawnVillager() { GameObject newVill = Instantiate(VillagerPrefab, VillagerSpawnPoint.transform); Villagers.Add(newVill); VillagerBehaviour vBehav = newVill.GetComponent <VillagerBehaviour>(); if (vBehav) { vBehav.MyVillage = this; NavMeshPath navPath = new NavMeshPath(); NavMeshAgent navAgent = vBehav.gameObject.GetComponent <NavMeshAgent>(); if (!navAgent) { return; } Vector3 newVillPos; bool pathExists = false; do { newVillPos.x = VillagerSpawnPoint.transform.position.x + Mathf.Cos(Random.Range(0, 360)) * Random.Range(0, VillageRadius); newVillPos.y = VillagerSpawnPoint.transform.position.y; newVillPos.z = VillagerSpawnPoint.transform.position.z + Mathf.Sin(Random.Range(0, 360)) * Random.Range(0, VillageRadius); newVillPos.y += 100.0f; Ray topDownRay = new Ray(newVillPos, new Vector3(0, -1, 0)); RaycastHit hitInfo; if (Physics.Raycast(topDownRay, out hitInfo, LayerMask.GetMask("Ground"))) { newVillPos.y = hitInfo.point.y; } navAgent.CalculatePath(newVillPos, navPath); if (navPath.status == NavMeshPathStatus.PathComplete) { pathExists = true; navAgent.SetPath(navPath); } } while (!pathExists); newVill.transform.position = newVillPos; } else { Debug.Log("Your Villager prefab doesn't have a VillagerBehaviour on it!"); } if (_initDone) { TownHall.GetComponent <Townhall>().HandleVillagerAmtChanged(); } }
private void ManageCouncilMembersClicked() { MainMenu.SetActive(false); CouncilManagementMenu.SetActive(true); _whichMenuUp = MenuType.ManageCouncil; // how to check for free spots in your guild's council? Guild pGuild = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>().MyGuild; // count how many spots in the council are your guildies int councilSpotsOccupied = 0; for (int i = 0; i < _vill.Council.Count; ++i) { GameObject thisMember = _vill.Council[i]; if (thisMember) { GuildMemberController gmContr = thisMember.GetComponent <GuildMemberController>(); if (gmContr) { if (gmContr.NPCsGuild == pGuild) { councilSpotsOccupied++; } } } } // get amount of spots that are free int councilSpotsFree = pGuild.GetAmtCouncilPositionsFor(_vill.gameObject) - councilSpotsOccupied; // make the list List <GameObject> members = GameManager.Instance.PlayerAvatar.GetComponent <PlayerController>().MyGuild.GuildMembers; for (int i = 0; i < members.Count; ++i) { if (_vill.IsCouncilMember(members[i])) { continue; } GameObject newCard = Instantiate(AddCouncilMemberOptionCardPrefab, ManageCouncilMenuGuildMembersHolder.transform); newCard.transform.localPosition = new Vector3(0, 0, 0); newCard.transform.localScale = new Vector3(1, 1, 1); newCard.transform.localRotation = new Quaternion(0, 0, 0, 0); AddGuildCouncilMemberCard card = newCard.GetComponent <AddGuildCouncilMemberCard>(); card.GuildMember = members[i]; card.NameText.text = members[i].GetComponent <GuildMemberController>().NameMesh.text; card.onAdd.AddListener(GuildMemberAddedToCouncil); if (councilSpotsFree == 0) { card.AddButton.gameObject.SetActive(false); } } // Check names & types of the current Council Members for (int i = 0; i < CouncilMemberInfoCards.Count; ++i) { CouncilMemberInfoCard card = CouncilMemberInfoCards[i].GetComponent <CouncilMemberInfoCard>(); GameObject cMember = _vill.Council[i]; card.CouncilMember = cMember; if (cMember) { VillagerBehaviour vBehav = cMember.GetComponent <VillagerBehaviour>(); GuildMemberController gmContr; if (vBehav) { card.NameText.text = vBehav.VillagerName + " (Villager)"; card.RemoveButton.gameObject.SetActive(false); } else if (gmContr = cMember.GetComponent <GuildMemberController>()) { card.NameText.text = gmContr.NameMesh.text + " (Member of " + gmContr.NPCsGuild.GuildName + ')'; if (pGuild == gmContr.NPCsGuild) { card.RemoveButton.gameObject.SetActive(true); } else { card.RemoveButton.gameObject.SetActive(false); } } else if (cMember.GetComponent <PlayerController>()) { card.NameText.text = "You"; card.RemoveButton.gameObject.SetActive(true); } } else { card.NameText.text = "No one"; card.RemoveButton.gameObject.SetActive(false); } card.onRemove.RemoveAllListeners(); card.onRemove.AddListener(GuildMemberRemovedFromCouncil); } }