Ejemplo n.º 1
0
    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;
            }
        }
    }
Ejemplo n.º 2
0
    // 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();
        }
    }
Ejemplo n.º 3
0
    // 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);
        }
    }
Ejemplo n.º 4
0
    // 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);
        }
    }
Ejemplo n.º 5
0
    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);
    }
Ejemplo n.º 6
0
    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;
                }
            }
        }
    }
Ejemplo n.º 7
0
    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;
                }
            }
        }
    }