Ejemplo n.º 1
0
    public void ExitMerchant()
    {
        ThreatUIManager.GetInstance().Show();

        List <WholeMonsterRiskManager.MonsterRisk> tonightHunted =
            WholeMonsterRiskManager.GetInstance().DecreaseThreat(WholeMonsterRiskManager.GetInstance().LetsHuntingAtEndOfDay());

        List <WholeMonsterRiskManager.MonsterRisk> increasedThreat = WholeMonsterRiskManager.GetInstance().IncreaseThreat();



        ThreatUIManager.GetInstance().exitBtn.onClick.AddListener(
            () => {
            AdAsk();        //위협도 정산 후 광고 묻기로 이동. 알아서 머챈트와 위협도는 꺼져있음.
        }
            );
        ThreatUIManager.GetInstance().exitBtn.interactable = false;

        StartCoroutine(ThreatUIAnim(tonightHunted, increasedThreat));


        GameEndJudgeManager.GetInstance().didThreatHitsMax(WholeMonsterRiskManager.GetInstance().IsThreatHitsMax());



        //이 로직은 따로 빼야함.
    }
Ejemplo n.º 2
0
    IEnumerator FirstShowAnimation(List <WholeMonsterRiskManager.MonsterRisk> list)  //밑에서 부터 올라감.
    {
        state = E_ThreatUIState.FIRST_SHOW_ANIM;
        float maxNowThreat = 0;

        float[] barLength = new float[mobTypeCount];

        for (int i = 0; i < mobTypeCount; i++)
        {
            int maxThreatNum = WholeMonsterRiskManager.GetInstance().GetMaxMobThreat((E_Monster)i);
            barLength[i] = (float)list[i].nowNum / (float)maxThreatNum;
            if (barLength[i] > 1f)
            {
                barLength[i] = 1f;
            }
            if (maxNowThreat < barLength[i])
            {
                maxNowThreat = barLength[i];
            }
            //     Debug.LogFormat("몬스터 {0}의 최대치는 {1} 현재 치는 {2} 필마운트는 {3}", ((E_Monster)i).ToString(), maxThreatNum, list[i].nowNum, barLength[i]);
        }
        //    Debug.Log(maxNowThreat);

        skullImg.color = Color.white;
        Color skullColor = new Color(1, 1, 1, 1);
        float skullRedDegree;

        float nowTime = 0f;

        while (nowTime <= animSec)
        {
            nowTime += Time.deltaTime;
            float toFill = (nowTime * animSecDiv);

            for (int i = 0; i < mobTypeCount; i++)
            {
                bars[i].fillAmount = toFill * barLength[i];
            }

            skullRedDegree = maxNowThreat * toFill;

            skullColor.g = 1f - skullRedDegree;
            skullColor.b = 1f - skullRedDegree;

            skullImg.color = skullColor;

            yield return(null);
        }
        for (int i = 0; i < mobTypeCount; i++)
        {
            bars[i].fillAmount = barLength[i];
        }

        state = E_ThreatUIState.IDLE;
    }
Ejemplo n.º 3
0
    private void OnEnable()
    {
        List <WholeMonsterRiskManager.MonsterRisk> nowMonsterRiskList = WholeMonsterRiskManager.GetInstance().MonsterRiskList;

        if (nowMonsterRiskList.Count != mobTypeCount)
        {
            return;
        }

        Debug.Log("위협도 ui 킴 표시할 위협도는 " + WholeMonsterRiskManager.GetInstance().DebugString());
        StartCoroutine(FirstShowAnimation(nowMonsterRiskList));

        note.SetActive(false);
    }
    public void HunterInquireQuestSubmit(string Qkey, bool didDetermined, List <Weapon> rentalSelected) //헌터에게 퀘스트를 맡기고 렌탈등과 퀘스트 등과 선택 했을 때.
    {
        if (!didDetermined)                                                                             //ui에서 제출이면 true 인자로 넣어서 보내주기!
        {
            EventParameterStorage.GetInstance().PlayerChoice = false;
            CharactorFrame.GetInstance().UpdateFSM();
            return;
        }

        EventParameterStorage.GetInstance().PlayerChoice = true;
        HunterIdea hunter        = CharactorFrame.GetInstance().hunterIdea;
        Quest      selectedQuest = QuestManager.GetInstance().GetQuest(Qkey);

        //본래 퀘스트의 만기보다 하루 빨리. 그리고 10시~ 17시 사이를 랜덤으로 지정.
        InGameTime dayOneMinus  = InGameTime.GetOnlyOneDayMinus(selectedQuest.ExpireDate);
        uint       hour         = (uint)Random.Range(Constant.dayStartHour, Constant.dayEndHour - 1);
        InGameTime hunterExpire = new InGameTime(dayOneMinus.Year, dayOneMinus.Month, dayOneMinus.Day, hour, 0);

        hunter.SetHasCommission(Qkey);
        hunter.SetHuntExpireDay(hunterExpire);

        if (rentalSelected != null)
        {
            //렌탈 처리 해주기.
            hunter.SetRentalTheseWeapon(rentalSelected);
            Inventory.GetInstance().RemoveWeaponsFromInven(rentalSelected);//렌탈해간 물건들 인벤에서 뺴주는 처리.
        }

        WholeMonsterRiskManager.GetInstance().AddHunter(hunter);    //수임을 받은날 위협도 매니져에서 일함.(그 날의 데이오프 부터)

        QuestRoomSceneUIManager.GetInstance().OnlyShowMainUIOrigin();

        int deposit = PayFormula.CalculateHuntDeposit(selectedQuest, hunter.GetHunterExpireGap());   //헌터 착수금 지불.

        GoldManager.GetInstance().AdjustGold(-1 * deposit, GoldManager.E_PayType.TO_HUNTER);

        CharactorFrame.GetInstance().UpdateFSM();
    }
Ejemplo n.º 5
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));
    }
Ejemplo n.º 6
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;
    }
Ejemplo n.º 7
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();
            }
        }
    }
Ejemplo n.º 8
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);
    }
Ejemplo n.º 9
0
    IEnumerator IADAnimation(bool increase, List <WholeMonsterRiskManager.MonsterRisk> list)
    {
        if (list.Count != mobTypeCount)
        {
            Debug.LogError("오류");
        }

        while (state != E_ThreatUIState.IDLE)
        {
            yield return(ws);
        }

        string result = "증감리스트 ";

        foreach (WholeMonsterRiskManager.MonsterRisk m in list)
        {
            result += "[" + m.mob.ToString() + "-" + m.nowNum + "]";
        }

        Debug.Log(increase.ToString() + "애니메이션" + result);


        float[] nowBarsLength = new float[mobTypeCount];
        for (int i = 0; i < mobTypeCount; i++)
        {
            nowBarsLength[i] = bars[i].fillAmount;
        }

        state = E_ThreatUIState.ADJUST_SHOW_ANIM;
        float[] iadArr = new float[mobTypeCount];   //증감되는 수치.

        for (int i = 0; i < mobTypeCount; i++)
        {
            int maxThreatNum = WholeMonsterRiskManager.GetInstance().GetMaxMobThreat((E_Monster)i);
            iadArr[i] = (float)list[i].nowNum / (float)maxThreatNum;

            //   Debug.LogFormat("몬스터 {0}의 최대치는 {1} 현재 필마운트치는 {2} 증감 필마운트는 {3}", ((E_Monster)i).ToString(), maxThreatNum, nowBarsLength[i], iadArr[i]);
        }

        if (increase)
        {
            float maxThreatRedDegree = 0f;
            for (int i = 0; i < mobTypeCount; i++)
            {
                if (nowBarsLength[i] + iadArr[i] > 1f)
                {
                    iadArr[i] = 1f - nowBarsLength[i];
                }

                if (nowBarsLength[i] + iadArr[i] > maxThreatRedDegree)
                {
                    maxThreatRedDegree = nowBarsLength[i] + iadArr[i];
                }
                //  Debug.LogFormat("몬스터 {0}의 증감치{1} , 현재+증감치 = {2}" , ((E_Monster)i).ToString() , iadArr[i],  (nowBarsLength[i] + iadArr[i])        );
            }
            //   Debug.Log("증감최대치=" + maxThreatRedDegree);



            noteText.text = UIGeneralTextsManager.GetUIGeneralText("threat", "increase");

            /*  Vector2 noteStart = new Vector2(-960, 0);
             * note.transform.localPosition = noteStart;
             * Vector2 noteArrive = new Vector2(2450, 0);
             */
            note.SetActive(true);

            float nowTime     = 0f;
            float redDegreeIA = maxThreatRedDegree - (1f - skullImg.color.g);  //요만큼 이동.
            if (redDegreeIA < 0)
            {
                redDegreeIA = 0;
            }

            Color skullColor = new Color(1, 1, 1, 1);
            float originG    = skullImg.color.g;
            float originB    = skullImg.color.b;

            while (nowTime <= animSec)
            {
                nowTime += Time.deltaTime;
                float toFill = (nowTime * animSecDiv);

                for (int i = 0; i < mobTypeCount; i++)
                {
                    bars[i].fillAmount = nowBarsLength[i] + (toFill * iadArr[i]);
                }

                float redIA = redDegreeIA * toFill;

                skullColor.g = originG - redIA;
                skullColor.b = originB - redIA;

                skullImg.color = skullColor;

                // note.transform.localPosition = Vector2.Lerp(noteStart, noteArrive, toFill);

                yield return(null);
            }
            for (int i = 0; i < mobTypeCount; i++)
            {
                bars[i].fillAmount = nowBarsLength[i] + iadArr[i];
            }
            skullImg.color = new Color(1, originG - redDegreeIA, originG - redDegreeIA, 1);
            //   note.transform.localPosition = noteStart;
            note.SetActive(false);
        }
        else
        {
            //감소 애니메이션.

            float maxThreatRedDegree = 0f;
            for (int i = 0; i < mobTypeCount; i++)
            {
                if (nowBarsLength[i] - iadArr[i] < 0f)
                {
                    iadArr[i] = nowBarsLength[i];
                }

                if (nowBarsLength[i] - iadArr[i] > maxThreatRedDegree)
                {
                    maxThreatRedDegree = nowBarsLength[i] - iadArr[i];
                }
            }

            float nowTime     = 0f;
            float redDegreeID = (1f - skullImg.color.g) - maxThreatRedDegree;  //요만큼 이동.

            Color skullColor = new Color(1, 1, 1, 1);
            float originG    = skullImg.color.g;
            float originB    = skullImg.color.b;



            noteText.text = UIGeneralTextsManager.GetUIGeneralText("threat", "hunters");

            /*
             * Vector2 noteStart = new Vector2(-960, 0);
             * note.transform.localPosition = noteStart;
             * Vector2 noteArrive = new Vector2(2450, 0);
             */
            note.SetActive(true);

            while (nowTime <= animSec)
            {
                nowTime += Time.deltaTime;
                float toFill = (nowTime * animSecDiv);

                for (int i = 0; i < mobTypeCount; i++)
                {
                    bars[i].fillAmount = nowBarsLength[i] - (toFill * iadArr[i]);
                }
                float redIA = redDegreeID * toFill;

                skullColor.g = originG + redIA;
                skullColor.b = originB + redIA;

                skullImg.color = skullColor;


                // note.transform.localPosition = Vector2.Lerp(noteStart, noteArrive, toFill);


                yield return(null);
            }
            for (int i = 0; i < mobTypeCount; i++)
            {
                bars[i].fillAmount = nowBarsLength[i] - iadArr[i];
            }
            skullImg.color = new Color(1, originG + redDegreeID, originG + redDegreeID, 1);
            // note.transform.localPosition = noteStart;
            note.SetActive(false);
        }

        state = E_ThreatUIState.IDLE;
    }