Beispiel #1
0
        public ListItemUi AddItem(GameObject itemObject)
        {
            if (items == null)
            {
                items = new List <GameObject>();
            }
            if (inventoryUi != null)
            {
                ListItemUi result = inventoryUi.GetListItemUi(itemObject); if (result != null)
                {
                    return(result);
                }
            }
            items.Add(itemObject);
            InventoryItem item = itemObject.GetComponent <InventoryItem>();

            if (item != null)
            {
                item.AddToInventory(this);
            }
            itemObject.SetActive(false);
            Vector3 playerLoc     = Global.GetComponent <Character.CharacterProxy>().transform.position;
            Vector3 localPosition = itemObject.transform.position - playerLoc;

            itemObject.transform.SetParent(transform);
            itemObject.transform.localPosition = localPosition;
            //Show.Log("POS IN" + localPosition);
            string name = item != null ? item.itemName : null;

            if (string.IsNullOrEmpty(name))
            {
                name = itemObject.name;
            }
            onAddItem.Invoke(itemObject);
            if (inventoryUi == null)
            {
                return(null);
            }
            return(inventoryUi.AddItem(itemObject, name, () => {
                RemoveItem(itemObject);
            }));
        }
Beispiel #2
0
    public ListItemUi AddMember(GameObject memberObject)
    {
        //Show.Log("adding member " + memberObject);
        if (members == null)
        {
            members = new List <GameObject>();
        }
        // make sure this character adds to the communal inventory! (assuming there is one)
        TeamMember teamMember = memberObject.GetComponent <TeamMember>();

        if (teamMember == null)
        {
            teamMember = memberObject.AddComponent <TeamMember>();
        }
        // add them to the roster
        if (members.IndexOf(memberObject) < 0)
        {
            members.Add(memberObject);
            teamMember.onJoinTeam?.Invoke(this);
            CharacterRoot cr = memberObject.GetComponent <CharacterRoot>();
            if (cr)
            {
                EventBind.IfNotAlready(cr.activateFunction, this, ActivateTeamMember);
            }
        }
        if (members.Count > 1)
        {
            if (prev)
            {
                prev.gameObject.SetActive(true);
            }
            if (next)
            {
                next.gameObject.SetActive(true);
            }
            if (team)
            {
                team.gameObject.SetActive(true);
            }
        }
        if (rosterUi != null)
        {
            ListItemUi result = rosterUi.GetListItemUi(memberObject);
            if (result != null)
            {
                //Show.Log("already ui");
                return(result);
            }
        }
        string name = teamMember != null ? teamMember.name : null;

        if (string.IsNullOrEmpty(name))
        {
            name = memberObject.name;
        }

        Interact3dItem i3i = teamMember.GetComponent <Interact3dItem>();
        //void ActivateTeamMember() {
        //	CharacterControlManager ccm = Global.Get<CharacterControlManager>();
        //	ccm.SetCharacter(memberObject);
        //	i3i.showing = false;
        //}
        Action activateMember = () => ActivateTeamMember(memberObject);

        if (i3i != null)
        {
            i3i.OnInteract             = activateMember;
            i3i.Text                   = "switch";
            i3i.internalState.alwaysOn = true;
        }
        if (rosterUi == null)
        {
            Show.Log("missing roster UI");
            return(null);
        }
        return(rosterUi.AddItem(memberObject, name, activateMember));
    }