Пример #1
0
    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);
    }
Пример #2
0
 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;
 }
Пример #3
0
    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();
        }
    }
Пример #4
0
    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);
        }
    }