Beispiel #1
0
    public void DayOff()    //연관된 캐릭터 없는 퀘스트를 삭제
    {
        List <CharactorIdea> charaList = CharactorManager.GetInstance().CharaList;

        Dictionary <string, Quest> .Enumerator enu = questMg.GetEnumerator();
        bool associated = false;

        List <string> deleteTarget = new List <string>();

        while (enu.MoveNext())
        {
            associated = false;
            string Qkey = enu.Current.Key;

            for (int i = 0; i < charaList.Count; i++)
            {
                if (Qkey == charaList[i].associatedQuestKey)    //연관된 애가 있으므로 삭제 대상 패쓰.
                {
                    associated = true;
                    break;
                }
            }

            if (false == associated)
            {
                deleteTarget.Add(Qkey);
            }
        }
        for (int i = 0; i < deleteTarget.Count; i++)
        {
            questMg.Remove(deleteTarget[i]);
        }
    }
    public void CharactorLeave(E_Charactor charactor)
    {
        QuestRoomSceneUIManager.GetInstance().OnlyShowMainUIOrigin();
        Stack <FSMState> stateStack = CharactorFrame.GetInstance().CharaController.GetStateStack();
        CharactorIdea    nowChara;

        //여기가 너무 안좋은데.
        switch (charactor)
        {
        case E_Charactor.CLIENT:
            nowChara = CharactorFrame.GetInstance().clientIdea;

            if (stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.COMMISSION_CANCEL)))
            {
                CharactorManager.GetInstance().RemoveCharactor(nowChara);
                break;
            }
            if (stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.CHECK_IMPERFACT_00))
                ||
                stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.CHECK_IMPERFACT_50))
                ||
                stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.CHECK_IMPERFACT_80))
                ||
                stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.CHECK_IMPERFACT_95))
                ||
                stateStack.Contains(ClientFSMFactory.GetInstance().GetState(E_ClientState.CHECK_PERFACT))
                )
            {
                ClientCommissionCheckCalculateLastincome();
                CharactorManager.GetInstance().RemoveCharactor(nowChara);
            }

            break;

        case E_Charactor.HUNTER:
            nowChara = CharactorFrame.GetInstance().hunterIdea;

            if (stateStack.Contains(HunterFSMFactory.GetInstance().GetState(E_HunterState.INQUIRE_QUEST_CANCEL)))
            {
                CharactorManager.GetInstance().RemoveCharactor(nowChara);
                break;
            }
            if (stateStack.Contains(HunterFSMFactory.GetInstance().GetState(E_HunterState.HUNT_REWARD_ALL_PAYMENT))
                ||
                stateStack.Contains(HunterFSMFactory.GetInstance().GetState(E_HunterState.HUNT_REWARD_PARTIAL_PAYMENT))
                ||
                stateStack.Contains(HunterFSMFactory.GetInstance().GetState(E_HunterState.HUNT_REWARD_DENIED))
                )
            {
                CharactorManager.GetInstance().RemoveCharactor(nowChara);
                break;
            }
            break;
        }
        CharactorFrame.GetInstance().LeaveAnim();
        Debug.Log("캐릭터 리브");
    }
Beispiel #3
0
    void EndOfDay() //하루가 끝났을 떄 호출.
    {
        Debug.Log("게임매니져 = 엔드 오브 데이");
        dayOnGoing     = false;
        dayDone        = false;
        timeCursor     = 0f;
        wineDineCursor = 0f;

        CharactorManager.GetInstance().DayOff();    //캐릭터들 취합
        QuestManager.GetInstance().DayOff();        //연관된 캐릭터가 없는 퀘스트는 삭제.

        StartCoroutine(LoadingScene("DayOff", () => { }));
    }
Beispiel #4
0
    void OnClickQuestBtn(GameObject btn, string key)
    {
        AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.SLIDE);
        if (selected == null)
        {
            selected = btn;
            btn.GetComponent <Image>().color = selectedColor;
            questDetailPan.SetActive(true);
        }
        else if (selected == btn)
        {
            //디테일 패널 접는 로직. 2137 에서 944 임 와이는 786
            ClearQuestDetailBtns();
            questDetailPan.SetActive(false);
            btn.GetComponent <Image>().color = Color.white;
            selected = null;
            return;
        }
        else
        {
            questDetailPan.SetActive(true);
            selected.GetComponent <Image>().color = Color.white;
            btn.GetComponent <Image>().color      = selectedColor;
            selected = btn;
        }



        ClearQuestDetailBtns();
        Quest quest = QuestManager.GetInstance().GetQuest(key);

        List <QuestPerMob> questContext = quest.QuestList;
        List <HunterIdea>  hunters      = CharactorManager.GetInstance().GetHuntersByQuestKey(key);

        for (int i = 0; i < questContext.Count; i++)
        {
            GameObject temp = Instantiate(itemBtn, questDetailMobEviContents.transform);
            SetMobEviBtnTexts(temp, questContext[i]);
            Destroy(temp.GetComponent <Button>());
        }
        for (int i = 0; i < hunters.Count; i++)
        {
            if (hunters[i] == null)
            {
                continue;
            }
            GameObject temp = Instantiate(questDetailhunterBtn, questDetailHunterContents.transform);
            SetQDHunterBtnTexts(temp, hunters[i]);
            Destroy(temp.GetComponent <Button>());
        }
    }
Beispiel #5
0
    public void Update()
    {
        if (!dayDone && !dayOnGoing)    //데이 오프.
        {
            return;
        }

        if (dayDone)    //하루가 끝났으면.
        {
            dayOnGoing      = false;
            wineDineCursor += Time.deltaTime;

            if (wineDineCursor >= wineDineCheck)
            {
                wineDineCursor = 0f;
                if (false == RoomEventManager.GetInstance().IsNowWineAndDine)   //접대 중이 아니라면
                {
                    EndOfDay();
                }
            }
            return;
        }

        else if (dayOnGoing) //하루의 시작
        {
            timeCursor     += Time.deltaTime;
            wineDineCursor += Time.deltaTime;

            if (timeCursor >= time15Min)
            {
                timeCursor = 0f;
                InGameTimeManager.GetInstance().Update15Minute(out dayDone); //15분 지나게 처리.
                MainUIManager.GetInstance().AdjustTime(InGameTimeManager.GetInstance().Hour, InGameTimeManager.GetInstance().Minute);
            }

            if (wineDineCursor >= wineDineCheck)
            {
                wineDineCursor = 0f;
                if (false == RoomEventManager.GetInstance().IsNowWineAndDine)   //접대 중이 아니라면
                {
                    VisitNextOne();
                }
                else
                {
                    //접대 중이면. 만기 방문자 부름.
                    CharactorManager.GetInstance().SelectExpireVisit();
                }
            }
        }
    }
Beispiel #6
0
        /// <summary>
        /// 初期化
        /// </summary>
        public void Initialize()
        {
            //乱数を取得
            rnd = new Random();
            //終了フラグをオフ
            isEndFlag = false;
            //キャラクターマネージャを生成
            charactorManager = new CharactorManager();
            //パドルを追加
            charactorManager.Add(new RightPaddle());
            charactorManager.Add(centerPaddle = new CenterPaddle());
            charactorManager.Add(new LeftPaddle());
            //ブロックを追加
            for (int i = 0; i <= Screen.Height /*横の長さ*/; i += 35)
            {
                for (int j = 100; j <= 138 /*縦の長さ*/; j += 19)
                {
                    block = new Block(new Rectangle(100 + i, j, 32, 16));
                    charactorManager.Add(block);
                }
            }
            //アイテムブロックを追加
            for (int i = 0; i <= 770; i += 70)
            {
                itemBlock = new ItemBlock(new Rectangle(100 + i, 210, 32, 16));
                charactorManager.Add(itemBlock);
            }
            //ボールを追加
            charactorManager.Add(new Ball(new Vector2(512, 578)));
            //サウンド関係
            var gameDevice = GameDevice.Instance();

            sound = gameDevice.GetSound();
            //カウントダウンタイマー1秒に設定
            timer = new CountDownTimer(1);


            //アイテムカウントの初期化
            itemCount = 0;
            //バレットカウントの初期化
            bulletCount = 0;

            //バレットUIの生成、初期化
            bulletUI = new BulletUI(bulletCount);
        }
Beispiel #7
0
    void VisitNextOne() //다음 놈 부르기.
    {
        if (RoomEventManager.GetInstance().IsNowWineAndDine)
        {
            return;                                                     //접대중이면 패쓰함.
        }
        EventParameterStorage.GetInstance().ParametersReset();

        CharactorIdea nextOne = CharactorManager.GetInstance().GetNextCharactor();

        if (nextOne == null)
        {
            return;
        }

        nextOne.AnamnesisToCharactorFrame();
        CharactorFrame.GetInstance().ComeAnim();
    }
Beispiel #8
0
    public void NewStartGame()  //완전 새로운 게임 시작.
    {
        SaveManager.GetInstance().DeleteSavedGame();

        SettingUIManager.GetInstance().PauseBtn.interactable = true;
        Debug.Log("게임매니져 - 뉴스타트게임-");

        InGameTimeManager.GetInstance().SetMainTime(1, 1, 1, 1, 1);
        WholeMonsterRiskManager.GetInstance().Init();
        PhaseManager.GetInstance().InitForNewStart();
        GoldManager.GetInstance().SetGold(Constant.newStartGolds);
        QuestManager.GetInstance().QuestDic.Clear();
        Inventory.GetInstance().MobEvidenceInven.Clear();
        Inventory.GetInstance().WeaponInventory.Clear();
        GameEndJudgeManager.GetInstance().InitForNewStart();
        CharactorManager.GetInstance().InitForNewStart();
        TextManager.GetInstance().DistributedNames.Clear();

        //모킹/
        for (int i = 0; i < (int)E_Monster.MAX; i++)
        {
            for (int j = 0; j < (int)E_Evidence.MAX; j++)
            {
                Inventory.GetInstance().AddMobEvi(new QuestPerMob((E_Monster)i, (E_Evidence)j, 3));
            }
        }
        List <Weapon> temp = new List <Weapon>();
        Weapon        w    = WeaponInfoManager.GetInstance().CreateWeapon(E_Weapon.AXE);

        temp.Add(w);
        Inventory.GetInstance().AddWeaponsToInven(temp);

        //모킹종료


        StartCoroutine(LoadingScene("QuestRoom_1", StartNewMorning));
    }
Beispiel #9
0
    public void SavePrepare()
    {
        lang  = LanguageManager.GetInstance().Language;
        golds = GoldManager.GetInstance().Gold;
        goldRunOutContinuityDays = GameEndJudgeManager.GetInstance().GoldRunOutContinuityDays;
        threatMaxContinuityDays  = GameEndJudgeManager.GetInstance().ThreatMaxContinuityDays;
        savedDate = InGameTimeManager.GetInstance().GetNowTime();

        charactorList_Client = CharactorManager.GetInstance().GetClientListSave();
        charactorList_Hunter = CharactorManager.GetInstance().GetHunterListSave();

        questDic          = QuestManager.GetInstance().QuestDic;
        inventoryMobEvi   = Inventory.GetInstance().MobEvidenceInven;
        inventoryWeapon   = Inventory.GetInstance().GetWeaponInvenSave();
        threatState       = WholeMonsterRiskManager.GetInstance().MonsterRiskList;
        threatHunters     = WholeMonsterRiskManager.GetInstance().HuntersWhohaveQuest;
        phaseMobShowedUp  = PhaseManager.GetInstance().MobShowedUp;
        phaseMobOpen      = PhaseManager.GetInstance().MobOpen;
        phaseEvidenceOpen = PhaseManager.GetInstance().EvidenceOpen;
        phaseUpgradeOpen  = PhaseManager.GetInstance().UpgradeOpen;
        phaseInteriorOpen = PhaseManager.GetInstance().InteriorOpen;

        distributedNames = TextManager.GetInstance().DistributedNames;
    }
 private void Awake()
 {
     Instance = this;
 }
Beispiel #11
0
    private void OnGUITest()
    {
        // ShowNowCFrame();
        // Debug.Log("qweqwe");
        CharactorManager     cm                       = CharactorManager.GetInstance();
        List <CharactorIdea> charaList                = cm.CharaList;
        List <CharactorIdea> visitedToday             = cm.VisitedToday;
        Queue <CharactorManager.VisitChara> expireQue = cm.ExpireCharaQue;

        EditorGUILayout.Separator();

        showArr[0] = EditorGUILayout.Foldout(showArr[0], "캐릭터리스트");
        if (showArr[0])
        {
            foreach (CharactorIdea ci in charaList)
            {
                // Debug.Log(charaList.Count + "만큼 래릭터 리스트");
                ShowCharaIdea(ci);
                EditorGUILayout.Separator();
            }
        }
        EditorGUILayout.Separator();

        showArr[1] = EditorGUILayout.Foldout(showArr[1], "방문자 리스트");
        if (showArr[1])
        {
            foreach (CharactorIdea ci in visitedToday)
            {
                //  Debug.Log(visitedToday.Count + "만큼 방문자 리스트");
                ShowCharaIdea(ci);
                EditorGUILayout.Separator();
            }
        }
        EditorGUILayout.Separator();
        showArr[2] = EditorGUILayout.Foldout(showArr[2], "만기큐 ");
        if (showArr[2])
        {
            foreach (CharactorManager.VisitChara ci in expireQue)
            {
                //  Debug.Log(visitedToday.Count + "만큼 방문자 리스트");
                ShowCharaIdea(ci.one);
                EditorGUILayout.Separator();
            }
        }

        EditorGUILayout.Separator();
        //EditorGUILayout.LabelField("퀘스트 매니저");

        showArr[5] = EditorGUILayout.Foldout(showArr[5], "퀘스트 매니저");
        if (showArr[5])
        {
            QuestManager qm = QuestManager.GetInstance();
            foreach (Quest q in qm.GetNowWrittenQuestList())
            {
                ShowQuest(q);
                EditorGUILayout.Separator();
            }
        }

        EditorGUILayout.Separator();
        showArr[3] = EditorGUILayout.Foldout(showArr[3], "인벤토리 - 증거품 ");
        if (showArr[3])
        {
            foreach (QuestPerMob qpm in Inventory.GetInstance().GetNowMobEvidencesInven())
            {
                EditorGUILayout.TextField(qpm.ToString());
            }
        }

        showArr[4] = EditorGUILayout.Foldout(showArr[4], "인벤토리 - 무기 ");
        if (showArr[4])
        {
            foreach (Inventory.weaponInven wi in Inventory.GetInstance().WeaponInventory)
            {
                EditorGUILayout.TextField("갯수 = " + wi.number, wi.weapon.ToString());
            }
        }

        EditorGUILayout.Separator();
        showArr[7] = EditorGUILayout.Foldout(showArr[7], "위협도에 애드된 헌터 리스트");
        if (showArr[7])
        {
            foreach (HunterIdea ci in WholeMonsterRiskManager.GetInstance().HuntersWhohaveQuest)
            {
                //  Debug.Log(visitedToday.Count + "만큼 방문자 리스트");
                ShowCharaIdea(ci);
                EditorGUILayout.Separator();
            }
        }
    }
Beispiel #12
0
    public bool LoadGame()  //이닛 후에 불려져야함.
    {
#if UNITY_ANDROID
        if (st == null || !savedGame)
        {
            Debug.Log("로드게임 - 세이브 데이타가 존재하지 않음 또는 " + savedGame);
            return(false);
        }


        if (false == PlayGamesPlatform.Instance.localUser.authenticated)
        {
            PlayGamesClientConfiguration config = new PlayGamesClientConfiguration.Builder().EnableSavedGames().Build();
            PlayGamesPlatform.InitializeInstance(config);
            PlayGamesPlatform.DebugLogEnabled = true;
            PlayGamesPlatform.Activate();
            Social.localUser.Authenticate((bool success, string msg) =>
            {
                if (false == success)
                {
                    Debug.Log("로드 실패 - 로그인 불가");
                    return;
                }
            });
        }
        ISavedGameClient saveClient = PlayGamesPlatform.Instance.SavedGame;
        saveClient.OpenWithAutomaticConflictResolution(Constant.saveFileNameInGPGSCloud, DataSource.ReadCacheOrNetwork, ConflictResolutionStrategy.UseMostRecentlySaved, (status, metaData) =>
        {
            if (status != SavedGameRequestStatus.Success)
            {
                Debug.Log("로드 실패 - 메타데이타 오픈 불가");
                return;
            }
            saveClient.ReadBinaryData(metaData, (readStatus, savedData) =>
            {
                if (readStatus == SavedGameRequestStatus.Success)
                {
                    Debug.Log("바이너리 데이타 리드 읽기 성공!");
                    byte[] savedDataByteArr = savedData;

                    BinaryFormatter bt = new BinaryFormatter();
                    MemoryStream ms    = new MemoryStream(savedDataByteArr);
                    st = bt.Deserialize(ms) as SaveStructure;
                    ms.Dispose();
                    ms.Close();

                    if (st == null)
                    {
                        Debug.Log("리드는 했으나 스트럭쳐가 널임.");
                    }
                }
                else
                {
                    Debug.Log("바이너리 데이타 리드 읽기 실패!");
                    saveClient.ShowSelectSavedGameUI("리드가 안됨.", 5, false, false, (stq, md) => { });
                }
            });
        });
        if (st == null)
        {
            Debug.Log("리드 실패");
            return(false);
        }
#else
        BinaryFormatter bt   = new BinaryFormatter();
        FileStream      file = File.Open(Constant.saveDataAllPath, FileMode.Open);

        if (file != null && file.Length > 0)
        {
            st = bt.Deserialize(file) as SaveStructure;
            file.Close();
            if (st == null)
            {
                Debug.Log("파일이 없음.");
                return(false);
            }
        }
        else
        {
            file.Close();
            return(false);
        }
#endif
        Debug.Log("로드 게임");
        //  LanguageManager.GetInstance().SetLanguage(st.lang);   언어설정은 새로 할 수 있게.
        GoldManager.GetInstance().SetGold(st.golds);
        GameEndJudgeManager.GetInstance().Load(st);
        InGameTimeManager.GetInstance().Load(st);
        CharactorManager.GetInstance().Load(st);
        QuestManager.GetInstance().Load(st);
        Inventory.GetInstance().Load(st);
        WholeMonsterRiskManager.GetInstance().Load(st);
        PhaseManager.GetInstance().Load(st);
        TextManager.GetInstance().Load(st);

        return(true);
    }