Exemplo n.º 1
0
    private void GuildMemberAddedToCouncil(AddGuildCouncilMemberCard card)
    {
        // find a spot to put the member

        // this button being available should mean that there is
        int freeIdx = -1;

        for (int i = 0; i < _vill.Council.Count; ++i)
        {
            if (!_vill.Council[i])
            {
                freeIdx = i;
                break;
            }
        }
        if (freeIdx == -1)
        {
            Debug.Log("This shouldn't happen");
            return;
        }

        // spot found! put the member in power
        _vill.Council[freeIdx] = card.GuildMember;

        // adapt the current council overview
        {
            // separate scope for reuse of variable names
            CouncilMemberInfoCard infoCard = CouncilMemberInfoCards[freeIdx].GetComponent <CouncilMemberInfoCard>();
            GuildMemberController gmContr  = card.GuildMember.GetComponent <GuildMemberController>();
            infoCard.NameText.text = gmContr.NameMesh.text;
            infoCard.RemoveButton.gameObject.SetActive(true);
            infoCard.onRemove.RemoveAllListeners();
            infoCard.onRemove.AddListener(GuildMemberRemovedFromCouncil);
            infoCard.CouncilMember = card.GuildMember;
        }

        // check if we should remove the "add" buttons from the list

        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;

        if (councilSpotsFree == 0) // yes we should remove the add buttons
        {
            for (int i = 0; i < ManageCouncilMenuGuildMembersHolder.transform.childCount; ++i)
            {
                AddGuildCouncilMemberCard thisCard = ManageCouncilMenuGuildMembersHolder.transform.GetChild(i).GetComponent <AddGuildCouncilMemberCard>();

                thisCard.AddButton.gameObject.SetActive(false);
            }
        }

        // get rid of the card
        Destroy(card.gameObject);

        // activate the button
        CouncilDecisionsButton.gameObject.SetActive(true);
    }
Exemplo n.º 2
0
    private void GuildMemberRemovedFromCouncil(CouncilMemberInfoCard card)
    {
        // re-add the guild member to the available list below
        GameObject newCard = Instantiate(AddCouncilMemberOptionCardPrefab, ManageCouncilMenuGuildMembersHolder.transform);
        AddGuildCouncilMemberCard newCardScript = newCard.GetComponent <AddGuildCouncilMemberCard>();

        newCardScript.GuildMember   = card.CouncilMember;
        newCardScript.NameText.text = card.NameText.text;


        // remove the guild member from the council
        bool found = false;

        for (int i = 0; i < _vill.Council.Count; ++i)
        {
            if (_vill.Council[i] == card.CouncilMember)
            {
                _vill.Council[i]   = null;
                card.CouncilMember = null;
                found = true;
                break;
            }
        }
        if (!found)
        {
            Debug.Log("This should never get called");
            return;
        }

        // update the council member info card
        card.RemoveButton.gameObject.SetActive(false);
        card.onRemove.RemoveAllListeners();
        card.NameText.text = "No one";

        // add the add button again to everything
        for (int i = 0; i < ManageCouncilMenuGuildMembersHolder.transform.childCount; ++i)
        {
            AddGuildCouncilMemberCard thisCard = ManageCouncilMenuGuildMembersHolder.transform.GetChild(i).GetComponent <AddGuildCouncilMemberCard>();

            thisCard.AddButton.gameObject.SetActive(true);
        }

        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];
            GuildMemberController gmContr    = thisMember.GetComponent <GuildMemberController>();
            if (gmContr)
            {
                if (gmContr.NPCsGuild == pGuild)
                {
                    councilSpotsOccupied++;
                }
            }
        }

        if (councilSpotsOccupied == 0)
        {
            // there are no more council spots occupied by your guildies

            // remove the button
            CouncilDecisionsButton.gameObject.SetActive(false);
        }
    }
Exemplo n.º 3
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);
        }
    }