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()); //이 로직은 따로 빼야함. }
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; }
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(); }
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)); }
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 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(); } } }
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); }
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; }