private void NewPlayerInventoryDataObject(int InventoryObjectID, int InventoryQuantity, INVENTORY_CLASS InventoryObjectClass, INVENTORY_TYPE InventoryObjectType) { this.inventoryObjectID = InventoryObjectID; this.inventoryQuantity = InventoryQuantity; this.inventoryObjectClass = InventoryObjectClass; this.inventoryObjectType = InventoryObjectType; }
public Inventory(World world, int numSlots, INVENTORY_TYPE type, System.Object parent) { this.world = world; this.type = type; this.numSlots = numSlots; slots = new List <InventorySlot>(); restrictions = new Dictionary <string, int>(); this.parent = parent; if (parent.GetType() == typeof(WorkItem)) { this.work = (WorkItem)parent; } else if (parent.GetType() == typeof(Tile)) { this.tile = (Tile)parent; //} else if (parent.GetType() == typeof(Character)) { // this.character = (Character)parent; } else if (parent.GetType() == typeof(Entity)) { this.entity = (Entity)parent; } world.inventoryManager.RegisterInventory(this); }
private void OnEnable() { m_CurItemName.text = ""; m_CurItemLevel.text = "Lv."; m_iCurSelectChar = GameManager.instance.ReturnCurSelectChar(); //바꾸려고 하는 캐릭터 m_eSelectType = GameManager.instance.ReturnSelectType(); //바꾸고자 하는 것 m_ChangeItem.text = Util.ConvertToString(m_eSelectType); //현재 바꾸려는 것 INVENTORY_TYPE eInven = GameManager.instance.ReturnInvenType(); List <ItemData> Data = UserInfo.instance.GetInventoryList(eInven); for (int i = 0; i < Data.Count; i++) { ITEM_TYPE eType = (ITEM_TYPE)Data[i].GetItemData(ITEM_DATA.ITEM_TYPE); if (eType == m_eSelectType) { //장비 장착은 현재 아이템 인벤토리에 획득 순서를 기반으로 한다. //스프라이트의 선택은 레이캐스트와 콜백을 사용한다 //콜백으로 현재 선택한 아이템의 리스트 인덱스를 저장한 뒤 선택 버튼을 누르면 갱신된다. GameObject Item = ResourceLoader.CreatePrefab("Prefabs/ItemSprite"); Item.transform.SetParent(m_GridChar.transform, false); int iIndex = Util.ConvertToInt(UserInfo.instance.GetItemForList(i, eInven, ITEM_DATA.ITEM_INDEX)); Item.GetComponent <ItemSprite>().Setting(iIndex, i, (ITEM_TYPE)Data[i].GetItemData(ITEM_DATA.ITEM_TYPE), eInven); Item.GetComponent <ItemSprite>().SetCallBack(ItemSelect); } } m_GridChar.GetComponent <UIGrid>().Reposition(); //리 포지셔닝으로 그리드 재정렬 m_ItemView.GetComponent <UIScrollView>().ResetPosition(); m_ItemView.GetComponent <UIPanel>().Refresh(); }
void ItemSelect(int iIndex) //콜백으로 선언 { //리스트 기준의 아이템 순서 //선택 시 if (m_iCurSelectItem != iIndex) { for (int i = 0; i < m_GridChar.transform.childCount; i++) { if (iIndex != i) //현재 선택 된 것과 다르다면 { m_GridChar.transform.GetChild(i).GetComponent <ItemSprite>().ButtonSelect(false); } //나머지 버튼들은 비 선택 처리를 해줘라 } INVENTORY_TYPE eInven = GameManager.instance.ReturnInvenType(); m_iCurSelectChar = iIndex; transform.parent.GetChild(1).GetComponent <ItemInfoUI>().ItemInfo((int)ITEM_INFO_UI.ITEM_INFO_SELECT, iIndex); //아이템 유아이에 장착 시 오를 능력치를 보여준다. m_CurItemName.text = Util.ConvertToString(UserInfo.instance.GetItemForList(iIndex, eInven, ITEM_DATA.ITEM_NAME)); m_CurItemLevel.text = "Lv." + Util.ConvertToString(UserInfo.instance.GetItemForList(iIndex, eInven, ITEM_DATA.ITEM_LEVEl)); //현재 선택한 아이템의 이름과 레벨 GameManager.instance.SelectCurItem(iIndex); //선택한 인덱스를 게임 매니저가 저장한다. } }
public void Save() { for (int i = 0; i < m_ListInven.Length; i++) { if (m_ListInven[i] != null) { int iCount = m_ListInven[i].Count; try { ItemInfoData[] Item = new ItemInfoData[iCount]; for (int j = 0; j < iCount; j++) { Item[j] = new ItemInfoData { ItemType = (ITEM_TYPE)m_ListInven[i][j].GetItemData(ITEM_DATA.ITEM_TYPE), ItemIndex = Util.ConvertToInt(m_ListInven[i][j].GetItemData(ITEM_DATA.ITEM_INDEX)), ItemEquipChar = Util.ConvertToInt(m_ListInven[i][j].GetItemData(ITEM_DATA.ITEM_EQUIP_CHAR)), ItemLevel = Util.ConvertToInt(m_ListInven[i][j].GetItemData(ITEM_DATA.ITEM_LEVEl)), ItemCurEXP = Util.ConvertToInt(m_ListInven[i][j].GetItemData(ITEM_DATA.ITEM_CUR_EXP)) }; } string Inven = JSON.JsonUtil.ToJson <ItemInfoData>(Item); Debug.Log(Inven); INVENTORY_TYPE eType = (INVENTORY_TYPE)i; JSON.JsonUtil.CreateJson(eType.ToString(), Inven); } catch (System.NullReferenceException ex) { Debug.Log(ex); } } } }
/// <summary> /// 아이템 장착에 관련된 함수 /// </summary> /// <param name="eType"></param> public void ItemSelect(ITEM_TYPE eType) { m_eItemType = eType; //내가 현재 이것의 장비 장착을 요구하였다. if (m_eItemType == ITEM_TYPE.ITEM_STIGMA_TOP || m_eItemType == ITEM_TYPE.ITEM_STIGMA_CENTER || m_eItemType == ITEM_TYPE.ITEM_STIGMA_BOTTOM) { m_eInvenType = INVENTORY_TYPE.INVENTORY_STIGMA; } else { m_eInvenType = INVENTORY_TYPE.INVENTORY_WEAPON; } }
public object GetItemForIndex(int itemIndex, INVENTORY_TYPE eType, ITEM_DATA eIndex) { for (int i = 0; i < m_ListInven[(int)eType].Count; i++) { int iIndex = Util.ConvertToInt(m_ListInven[(int)eType][i].GetItemData(ITEM_DATA.ITEM_INDEX)); if (iIndex == itemIndex) { return(m_ListInven[(int)eType][i].GetItemData(eIndex)); } } return(null); //아이템 인덱스 기반의 반환 }
public void InventoryUpdate(ITEM_TYPE ItemType, INVENTORY_TYPE eInven, int itemIndex) //새로운 아이템 획득 { //아이템이나 스티그마 획득 시 /*새로운 아이템을 얻을 시 해당 아이템의 인덱스를 기반으로 새로운 데이터 기반을 생성하고 * 플레이어의 제이슨을 갱신하며 * 인벤토리에 순서대로 넣어준다. * 그리고 해당 아이템을 장착할 시에는 캐릭터 인덱스는 내가 해당 아이템을 가진 인덱스 순서대로 넣어준다. */ ItemInfoData ItemInfo = new ItemInfoData(ItemType, itemIndex); //새로운 아이템 생성 ItemData Data = new ItemData(ItemInfo); m_ListInven[(int)eInven].Add(Data); //새로운 데이터 셋팅 }
public void Setting(int iIndex, int iList, ITEM_TYPE eType, INVENTORY_TYPE eInven) { m_iItemIndex = iIndex; m_iListIndex = iList; m_eItemType = eType; m_eInvenType = eInven; string sprite = m_iItemIndex + "_" + m_eItemType.ToString() + "_Icon"; m_ItemSprite.spriteName = sprite; //스프라이트 교체 sprite = "Excel/Table/" + m_eItemType.ToString() + "_" + m_iItemIndex; var List = EXCEL.ExcelLoad.Read(sprite); m_ItemLabel.text = Util.ConvertToString(List[0][ITEM_DATA.ITEM_NAME.ToString()]); //이름 교채 //아이템 인덱스 기반 }
public void ItemInfo(int iarrPos, int iWeaponIndx) { string strHP = "0", strATK = "0", strDEF = "0", strCRI = "0"; if (iWeaponIndx >= 0) { INVENTORY_TYPE eType = GameManager.instance.ReturnInvenType(); strHP = Util.ConvertToString(UserInfo.instance.GetItemForList(iWeaponIndx, eType, ITEM_DATA.ITEM_HP)); strATK = Util.ConvertToString(UserInfo.instance.GetItemForList(iWeaponIndx, eType, ITEM_DATA.ITEM_ATK)); strDEF = Util.ConvertToString(UserInfo.instance.GetItemForList(iWeaponIndx, eType, ITEM_DATA.ITEM_DEF)); strCRI = Util.ConvertToString(UserInfo.instance.GetItemForList(iWeaponIndx, eType, ITEM_DATA.ITEM_CRI)); } m_ItemInfo[0, iarrPos].text = strHP; m_ItemInfo[1, iarrPos].text = strATK; m_ItemInfo[2, iarrPos].text = strDEF; m_ItemInfo[3, iarrPos].text = strCRI; }
public bool IsWeaponInventoryType(INVENTORY_TYPE type) { bool result = false; switch (type) { case INVENTORY_TYPE.ONE_HAND_SWORD: case INVENTORY_TYPE.TWO_HAND_SWORD: case INVENTORY_TYPE.SPEAR: case INVENTORY_TYPE.PAIR_SWORDS: case INVENTORY_TYPE.ARROW: case INVENTORY_TYPE.ALL_WEAPON: case INVENTORY_TYPE.ALL_EQUIP: case INVENTORY_TYPE.ALL_EVOLVE_EQUIP: result = true; break; } return(result); }
void ViewInventory(INVENTORY_TYPE eType) { if (m_iCurPannel != (int)eType) //버튼 중복 클릭을 방지 { InventoryReset(); //무슨 인벤토리를 보여줄 것인가. List <ItemData> Data = UserInfo.instance.GetInventoryList(eType); for (int i = 0; i < Data.Count; i++) { GameObject Item = ResourceLoader.CreatePrefab("Prefabs/ItemSprite"); Item.transform.SetParent(m_GridChar.transform, false); int iIndex = Util.ConvertToInt(UserInfo.instance.GetItemForList(i, eType, ITEM_DATA.ITEM_INDEX)); Item.GetComponent <ItemSprite>().Setting(iIndex, i, (ITEM_TYPE)Data[i].GetItemData(ITEM_DATA.ITEM_TYPE), eType); } m_GridChar.GetComponent <UIGrid>().Reposition(); //리 포지셔닝으로 그리드 재정렬 m_ItemView.GetComponent <UIScrollView>().ResetPosition(); m_ItemView.GetComponent <UIPanel>().Refresh(); m_iCurPannel = (int)eType; } }
public void ItemUpdateForChar(INVENTORY_TYPE eInven, int itemIndex, bool bUpgrade) { //현재 해당 아이템을 장착한 캐릭터의 능력치를 상승시켜준다. int iInven = (int)eInven; int iCurChar = Util.ConvertToInt(m_ListInven[iInven][itemIndex].GetItemData(ITEM_DATA.ITEM_EQUIP_CHAR)); if (iCurChar >= 0) { int iData = Util.SumData(UserInfo.instance.GetCharData(CHAR_DATA.CHAR_MAX_HP, iCurChar), m_ListInven[iInven][itemIndex].GetItemData(ITEM_DATA.ITEM_HP), bUpgrade); UserInfo.instance.CharUpdate(CHAR_DATA.CHAR_MAX_HP, iData, iCurChar); iData = Util.SumData(UserInfo.instance.GetCharData(CHAR_DATA.CHAR_ATK, iCurChar), m_ListInven[iInven][itemIndex].GetItemData(ITEM_DATA.ITEM_ATK), bUpgrade); UserInfo.instance.CharUpdate(CHAR_DATA.CHAR_ATK, iData, iCurChar); iData = Util.SumData(UserInfo.instance.GetCharData(CHAR_DATA.CHAR_DEF, iCurChar), m_ListInven[iInven][itemIndex].GetItemData(ITEM_DATA.ITEM_DEF), bUpgrade); UserInfo.instance.CharUpdate(CHAR_DATA.CHAR_DEF, iData, iCurChar); iData = Util.SumData(UserInfo.instance.GetCharData(CHAR_DATA.CHAR_CRI, iCurChar), m_ListInven[iInven][itemIndex].GetItemData(ITEM_DATA.ITEM_CRI), bUpgrade); UserInfo.instance.CharUpdate(CHAR_DATA.CHAR_CRI, iData, iCurChar); } //아이템 기준으로 정보 업데이트 }
public PlayerInventoryDataObject(int InventoryObjectID, int InventoryQuantity, INVENTORY_CLASS InventoryObjectClass, INVENTORY_TYPE InventoryObjectType) { NewPlayerInventoryDataObject(InventoryObjectID, InventoryQuantity, InventoryObjectClass, InventoryObjectType); }
public void OnClick() { //버튼 클릭은 여기서 처리 int iCurItem = GameManager.instance.ReturnCurSelectItem(); if (iCurItem >= 0) //선택한 것이 있으며 { int iSelectChar = GameManager.instance.ReturnCurSelectChar(); //장착할 캐릭터 리턴 INVENTORY_TYPE eInven = GameManager.instance.ReturnInvenType(); ITEM_TYPE eType = GameManager.instance.ReturnSelectType(); CHAR_DATA eData; if (eType == ITEM_TYPE.ITEM_STIGMA_TOP) eData = CHAR_DATA.CHAR_STIGMA_TOP_INDEX; else if (eType == ITEM_TYPE.ITEM_STIGMA_CENTER) eData = CHAR_DATA.CHAR_STIGMA_CENTER_INDEX; else if (eType == ITEM_TYPE.ITEM_STIGMA_BOTTOM) eData = CHAR_DATA.CHAR_STIGMA_BOTTOM_INDEX; else eData = CHAR_DATA.CHAR_WEAPON_INDEX; //아이템 타입에 따른 데이터 갱신 int iWeaponEquip = Util.ConvertToInt(UserInfo.instance.GetItemForList(iCurItem, eInven, ITEM_DATA.ITEM_EQUIP_CHAR)); //해당 아이템을 장착한 캐릭터가 있는가? int iSelectWeapon = Util.ConvertToInt(UserInfo.instance.GetCharData(eData, iSelectChar)); //무언가 장착한 것이 있는가? bool bSet = false; if (iWeaponEquip != iSelectWeapon) //중복 장착이 아니지만 bSet = true; else if(iWeaponEquip < 0 && iSelectWeapon < 0) //만약 둘 다 처음 장착이라는 특수한 상황이라면 bSet = true; if (bSet) { //장착했다는 의미이므로 캐릭터의 데이터를 갱신해준다. m_ItemInfo.GetComponent<ItemInfoUI>().ItemInfo((int)ITEM_INFO_UI.ITEM_INFO_CUR, iCurItem); m_ItemInfo.GetComponent<ItemInfoUI>().ItemInfo((int)ITEM_INFO_UI.ITEM_INFO_SELECT, -1); //장착 했으니 정보를 갱신해주고 //해당 아이템을 장착한 캐릭터가 있다. 그렇다면 두명의 데이터를 교환 해준다. if(iWeaponEquip >= 0) { UserInfo.instance.CharUpdate(eData, iSelectWeapon, iWeaponEquip); //해당 아이템을 장착한 캐릭터는 현재 캐릭터의 장비를 이어 받고 if(iSelectWeapon >= 0) //해당 캐릭터가 무언가를 장착한 상태라면 { UserInfo.instance.InventoryUpdate(eInven, iSelectWeapon, ITEM_DATA.ITEM_EQUIP_CHAR, iWeaponEquip); //현재 캐릭터의 장비 또한, 해당 아이템을 장착한 캐릭터로 갱신된다. UserInfo.instance.ItemUpdateForChar(eInven, iSelectWeapon, true); //그에따라서 바뀐 장비 만큼의 능력치가 업데이트 된다. } else { //해당 캐릭터가 장착한 아이템이 없을 시에는 아이템이 빼진 것이기에 아이템의 능력치만큼 뺴준다. UserInfo.instance.ItemUpdateForChar(eInven, iCurItem, false); } } UserInfo.instance.CharUpdate(eData, iCurItem, iSelectChar); //해당 아이템을 장착할 캐릭터 UserInfo.instance.InventoryUpdate(eInven, iCurItem, ITEM_DATA.ITEM_EQUIP_CHAR, iSelectChar); //아이템 또한 해당 캐릭터가 장착했다는 것을 알린다 UserInfo.instance.ItemUpdateForChar(eInven, iCurItem, true); //해당 아이템 기준으로 능력치 업데이트 UserInfo.instance.UserCharSave(); UserInfo.instance.UserInvenSave(); //세이브 데이터 } //아이템 중복 장착을 피해주고, 현재 누군가 장착 중인 아이템이라면 해당 캐릭터에게 빼주고 새로 장착 시켜준다. } //데이터 갱신 }
public CItemProfile(INVENTORY_TYPE Type) : this(testPINVOKE.new_CItemProfile((int)Type), true) { }
public List <ItemData> GetInventoryList(INVENTORY_TYPE eType) { return(m_UserInventory.GetInventoryList(eType)); }
public void InventoryUpdate(ITEM_TYPE ItemType, INVENTORY_TYPE eInven, int itemIndex) //새로운 아이템 획득 { m_UserInventory.InventoryUpdate(ItemType, eInven, itemIndex); //인벤토리 새로운 아이템 획득 }
public static string GetInventoryTypeString(INVENTORY_TYPE invType) { switch (invType) { case INVENTORY_TYPE.HEAD: return(StaticDB.GetString("INVTYPE_HEAD", null)); case INVENTORY_TYPE.NECK: return(StaticDB.GetString("INVTYPE_NECK", null)); case INVENTORY_TYPE.SHOULDER: return(StaticDB.GetString("INVTYPE_SHOULDER", null)); case INVENTORY_TYPE.BODY: return(StaticDB.GetString("INVTYPE_BODY", null)); case INVENTORY_TYPE.CHEST: return(StaticDB.GetString("INVTYPE_CHEST", null)); case INVENTORY_TYPE.WAIST: return(StaticDB.GetString("INVTYPE_WAIST", null)); case INVENTORY_TYPE.LEGS: return(StaticDB.GetString("INVTYPE_LEGS", null)); case INVENTORY_TYPE.FEET: return(StaticDB.GetString("INVTYPE_FEET", null)); case INVENTORY_TYPE.WRIST: return(StaticDB.GetString("INVTYPE_WRIST", null)); case INVENTORY_TYPE.HAND: return(StaticDB.GetString("INVTYPE_HAND", null)); case INVENTORY_TYPE.FINGER: return(StaticDB.GetString("INVTYPE_FINGER", null)); case INVENTORY_TYPE.TRINKET: return(StaticDB.GetString("INVTYPE_TRINKET", null)); case INVENTORY_TYPE.WEAPON: return(StaticDB.GetString("INVTYPE_WEAPON", null)); case INVENTORY_TYPE.SHIELD: return(StaticDB.GetString("INVTYPE_SHIELD", null)); case INVENTORY_TYPE.RANGED: return(StaticDB.GetString("INVTYPE_RANGED", null)); case INVENTORY_TYPE.CLOAK: return(StaticDB.GetString("INVTYPE_CLOAK", null)); case INVENTORY_TYPE.TWO_H_WEAPON: return(StaticDB.GetString("INVTYPE_2HWEAPON", null)); case INVENTORY_TYPE.BAG: return(StaticDB.GetString("INVTYPE_BAG", null)); case INVENTORY_TYPE.TABARD: return(StaticDB.GetString("INVTYPE_TABARD", null)); case INVENTORY_TYPE.ROBE: return(StaticDB.GetString("INVTYPE_ROBE", null)); case INVENTORY_TYPE.WEAPONMAINHAND: return(StaticDB.GetString("INVTYPE_WEAPONMAINHAND", null)); case INVENTORY_TYPE.WEAPONOFFHAND: return(StaticDB.GetString("INVTYPE_WEAPONOFFHAND", null)); case INVENTORY_TYPE.HOLDABLE: return(StaticDB.GetString("INVTYPE_HOLDABLE", null)); case INVENTORY_TYPE.AMMO: return(StaticDB.GetString("INVTYPE_AMMO", null)); case INVENTORY_TYPE.THROWN: return(StaticDB.GetString("INVTYPE_THROWN", null)); case INVENTORY_TYPE.RANGEDRIGHT: return(StaticDB.GetString("INVTYPE_RANGEDRIGHT", null)); case INVENTORY_TYPE.QUIVER: return(StaticDB.GetString("INVTYPE_QUIVER", null)); case INVENTORY_TYPE.RELIC: return(StaticDB.GetString("INVTYPE_RELIC", null)); default: return(string.Empty); } }
public object GetItemForIndex(int itemIndex, INVENTORY_TYPE eType, ITEM_DATA eIndex) { //아이템 인덱스 순서 return(m_UserInventory.GetItemForIndex(itemIndex, eType, eIndex)); }
public void ItemUpdateForChar(INVENTORY_TYPE eInven, int itemIndex, bool bUpgrade) //true 면 장비 장착, false면 장비 해제 { m_UserInventory.ItemUpdateForChar(eInven, itemIndex, bUpgrade); }
public List <ItemData> GetInventoryList(INVENTORY_TYPE eType) { return(m_ListInven[(int)eType]); //전체 리스트 }
public object GetItemForList(int inventoryIndex, INVENTORY_TYPE eType, ITEM_DATA eIndex) { //인벤토리 인덱스 순서 return(m_UserInventory.GetItemForList(inventoryIndex, eType, eIndex)); }
public object GetItemForList(int inventoryIndex, INVENTORY_TYPE eType, ITEM_DATA eIndex) { //인벤토리 아이템은 중복 획득이 가능하므로 리스트 순서 기반으로 한다. return(m_ListInven[(int)eType][inventoryIndex].GetItemData(eIndex)); }
public void InventoryUpdate(INVENTORY_TYPE eInven, int itemIndex, ITEM_DATA eData, object UpdateData) { //무슨 인벤토리에 무슨 아이템에 무슨 데이터가 업데이트 되었다. m_UserInventory.InventoryUpdate(eInven, itemIndex, eData, UpdateData); }
public void InventoryUpdate(INVENTORY_TYPE eInven, int itemIndex, ITEM_DATA eData, object UpdateData) { //기존 아이템 업데이트, 레벨 업 등 m_ListInven[(int)eInven][itemIndex].ItemUpdate(eData, UpdateData); }
public INVENTORY_TYPE GetType() { INVENTORY_TYPE ret = (INVENTORY_TYPE)testPINVOKE.CInventoryItem_GetType(swigCPtr); return(ret); }