Esempio n. 1
0
        public void ResetData()
        {
            Notify.Text = "";

            if (HaveDic != null)
            {
                HaveDic.Clear();
                SaveGameData(HaveDic, HaveDicPath);
            }

            if (ItemOpenList != null)
            {
                ItemOpenList.Clear();
                SaveGameData(ItemOpenList, ItemOpenListPath);
            }

            if (NewBookList != null)
            {
                NewBookList.Clear();
                SaveGameData(NewBookList, NewBookListPath);
            }

            if (NewItemList != null)
            {
                NewItemList.Clear();
                SaveGameData(NewItemList, NewItemListPath);
            }

            // 관찰자들에게 이벤트 메세지 송출
            foreach (var target in ResetList)
            {
                ExecuteEvents.Execute <IResetables>(target, null, (x, y) => x.OnReset());
            }

            NowIndex = 300101;

            PlayerPrefs.DeleteAll();
        }
Esempio n. 2
0
 /// <summary>
 ///     현재 이 아이템을 보유하고 있는지 확인하는 함수
 /// </summary>
 /// <param name="index">haveDic의 index값</param>
 /// <returns></returns>
 private bool CheckExistItem(int index)
 {
     return(HaveDic.ContainsKey(index));
 }
Esempio n. 3
0
        /// <summary>
        ///     아이템을 추가하는 함수
        /// </summary>
        /// <param name="key">추가하는 아이템의 Index</param>
        /// <param name="itemId">아이템 고유의 id</param>
        /// <param name="itemPos">아이템 위치</param>
        public void InsertNewItem(int key, int itemId, Vector3 itemPos)
        {
            var isBook = DataDictionary.IndexToGroup(key) == ItemGroup.Book;

            if (!CheckExistItem(key))
            {
                ItemOpenList.Add(key);
                SaveGameData(ItemOpenList, ItemOpenListPath);

                //Debug.Log("itemOpenList - DataSerialize");

                var posList = new Dictionary <int, SerializableVector3>
                {
                    { itemId, itemPos }
                };

                HaveDic.Add(key, posList);

                // !마크 띄우기
                if (isBook) //서적
                {
                    NewBookList.Add(key);
                    SaveGameData(NewBookList, NewBookListPath);
                    var setInfo = _dataDic.CheckSetItemCombine(key);
                    if (setInfo.Result != 0)
                    {
                        InsertNewItem(setInfo.Result, 1);
                    }
                }
                else //도감
                {
                    NewItemList.Add(key);
                    SaveGameData(NewItemList, NewItemListPath);
                }
            }
            else
            {
                var id = itemId;
                // id 에러 방지용 땜빵 코드. itemid 에 아무 정수나 넣어도 충돌을 방지해준다.
                if (HaveDic[key].ContainsKey(id))
                {
                    while (HaveDic[key].ContainsKey(id))
                    {
                        id++;
                    }
                }

                HaveDic[key].Add(id, itemPos);
            }

            if (!isBook) //서적이 아니면 아이템 카운트 늘림
            {
                ItemCount += 1;
            }
            // 관찰자들에게 이벤트 메세지 송출
            foreach (var target in Observers)
            {
                ExecuteEvents.Execute <IEventListener>(target, null, (x, y) => x.OnObtain(_dataDic.FindItemDic[key]));
            }

            SaveGameData(HaveDic, HaveDicPath);
        }