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); })); }
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)); }