void SelectExpires() //만기일 온 애들 큐에 집어넣는 과정. { string visitMsg = UIGeneralTextsManager.GetUIGeneralText("quickMessage", "visited"); int idx = 0; while (idx < charaList.Count) { if (charaList[idx].hasCommission && !charaList[idx].haveComeBeforeExpire) //기본 조건. { if (!expired(charaList[idx])) { idx++; continue; } CharactorIdea expireOne = charaList[idx]; charaList.RemoveAt(idx); expireCharaQue.Enqueue(new VisitChara(InGameTimeManager.GetInstance().GetNowInGameTimeStamp(), expireOne)); QuickMessageUIManager.GetInstance().ShowQuickMessage(expireOne.CharaName + visitMsg); Debug.Log(expireOne.CharaName + "만기 큐에 들어옴. 현재시각 - " + InGameTimeManager.GetInstance().GetNowTime() + "캐릭터의 만기는" + expireOne.GetExpire() + "였음" ); } else { idx++; } } }
void CheckMonsterShowUp() { mobShowUpScreen.SetActive(false); int daysAfter = InGameTimeManager.GetInstance().GetDaysAfterGameStart(); string noticeBase = UIGeneralTextsManager.GetUIGeneralText("mobshowup", "notice"); mobShowUpExitBtn.onClick.AddListener(() => { mobShowUpScreen.SetActive(false); }); for (int i = (int)E_Monster.GARGOYLE; i < (int)E_Monster.MAX; i++) //가고일 부터 체크 시작. { E_Monster mob = (E_Monster)i; int showUpDay = MobEviInfoManager.GetInstance().GetMonsterShowUpDay(mob); string mobname = MobEviInfoManager.GetInstance().GetMobName(mob); string notice = noticeBase.Replace("[0]", mobname); if (daysAfter == showUpDay) { AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.GROWL); PhaseManager.GetInstance().MonsterShowUp(mob); //몬스터 출현하도록 처리 showUpMobStampedImage.sprite = SpriteManager.GetInstance().GetMobStampedSprite(mob); mobShowUpText.text = notice; mobShowUpScreen.SetActive(true); PhaseManager.GetInstance().LogDebug(); return; } } }
public void SetExpireAfterDays(int days) { InGameTime exTemp = InGameTimeManager.GetInstance().GetNowTime(); exTemp.PlusDays(days); exTemp.SetInGameTimeHourMin((uint)(Random.Range(Constant.dayStartHour, (Constant.dayEndHour - 1))), 0); expireDate = exTemp; }
/* * 퀘스트 목록 셑팅 */ void InitQuestList() { questCap = 0; for (int i = 0; i < questsListContent.transform.childCount; i++) { Destroy(questsListContent.transform.GetChild(i).gameObject); } List <Quest> nowQuests = QuestManager.GetInstance().GetNowWrittenQuestList(); InGameTime nowTime = InGameTimeManager.GetInstance().GetNowTime(); var hq = from q in nowQuests where q.ExpireDate.GetDays() > nowTime.GetDays() + 1 //현재 일 보다 이틀 많은 일 수 (헌터의 만기는 의뢰인의 만기보다 하루 빨라야함.) select q; List <Quest> hunterAbleQuesttemp = hq.ToList <Quest>(); //이 헌터가 수임 가능한 퀘스트만 고른것 (만기 상태가) hunterAbleQuest = new List <Quest>(); for (int i = 0; i < hunterAbleQuesttemp.Count; i++) { hunterAbleQuest.Add(hunterAbleQuesttemp[i]); } for (int i = 0; i < hunterAbleQuest.Count; i++) { //대체가 도대체 어째서 i를 쓰면 0 번째 자리에서도 i 맨 마지막이 들어가는 거야???????? int num = i; GameObject iqBtnTemp = Instantiate(iquestBtn, questsListContent.transform); SetTxtsIQBtn(hunterAbleQuest[num], iqBtnTemp); //퀘스트 버튼. Quest a = hunterAbleQuest[num]; iqBtnTemp.GetComponent <Button>().onClick.AddListener( () => { qradio.SelectIQBtn( num, questsListContent, () => { AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.SLIDE); // Debug.Log(i + "번째 온클릭 란다식 메소드 진입." // + hunterAbleQuest[num].ToString() // ); OnClickIQBtn(hunterAbleQuest[num], num); //왜 이 헌터에이블에 접근을 못하지? //도대체 왜 a 대신 hunterAbleQuest[i] 로 들어가면 접근을 못핮;??????????????????? } ); } ); qradio.SetQDic(num, hunterAbleQuest[num]); } }
int GetNumOfQPM() { int basic = 9; int days = InGameTimeManager.GetInstance().GetDaysAfterGameStart(); int plus = (int)(days / 7); //일주일 마다 하나씩 올림. if (plus > 90) { plus = 90; //그래도 한 번에 최대는 99 } return(Random.Range(1, basic + plus + 1)); //(1~9) ~ (1~99) }
bool expired(CharactorIdea idea) { uint nowTime = InGameTimeManager.GetInstance().GetNowInGameTimeStamp(); uint expireTime = idea.GetExpire().InGameTimeMinuteStamp; if (expireTime <= nowTime) { return(true); } //나중에 만기시각 몇 시간 정도 까지 랜덤? 하게 봐줄지 결정하기. return(false); }
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(); } } } }
void ClientCommissionCheckCalculateLastincome() //만기여부와 등등을 고려하여 정산할것!! 클라이언트가 qc 정산 하는 단계! { ClientIdea client = CharactorFrame.GetInstance().clientIdea; int outDue = 0; if (client.haveComeBeforeExpire) { InGameTime clientExpire = client.GetExpire(); InGameTime nowTime = InGameTimeManager.GetInstance().GetNowTime(); outDue = nowTime.GetDaysGap(clientExpire); } int lastClientPayment = PayFormula.CalculateClientRequestLastPayment(client.OriginOrderedQuest, client.DaysExpire, EventParameterStorage.GetInstance().QuestCompareCompleteness, outDue); GoldManager.GetInstance().AdjustGold(lastClientPayment, GoldManager.E_PayType.FROM_CLIENT); }
void GoBackExpires() //만기일 온 애들 기다리다가 그냥 가는 애들. { string leaveMsg = UIGeneralTextsManager.GetUIGeneralText("quickMessage", "leaved"); if (expireCharaQue.Count <= 0) { return; } uint nowTime = InGameTimeManager.GetInstance().GetNowInGameTimeStamp(); VisitChara visited; visited = expireCharaQue.Peek(); while (visited != null) //1시간 기다리다 감. { if (visited.comeTimeStamp + 60 >= nowTime) { CharactorIdea goback = expireCharaQue.Dequeue().one; goback.haveComeBeforeExpire = true; visitedToday.Add(goback); QuickMessageUIManager.GetInstance().ShowQuickMessage(goback.CharaName + leaveMsg); Debug.Log(goback.CharaName + "만기 기다리다 그냥 돌아감 현재 시각 " + InGameTimeManager.GetInstance().GetNowTime() + "캐릭터의 만기는" + goback.GetExpire() + "였음 비지트 타음스탬프 =" + visited.comeTimeStamp + "현재시각 타임스탬프 =" + nowTime ); if (expireCharaQue.Count <= 0) { return; } visited = expireCharaQue.Peek(); } else { return; } } }
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; }
public void StartNewMorning() { InGameTimeManager.GetInstance().NewMorningStart(); //하루 올라가고 9시 00분. Debug.Log(InGameTimeManager.GetInstance().GetNowTime()); string dateTxt = LanguageManager.GetInstance().GetDateString(InGameTimeManager.GetInstance().GetNowTime()); MainUIManager.GetInstance().AdjustYMD(dateTxt); MainUIManager.GetInstance().AdjustTime(InGameTimeManager.GetInstance().Hour, InGameTimeManager.GetInstance().Minute); dayOnGoing = true; dayDone = false; timeCursor = 0f; wineDineCursor = 0f; #if UNITY_ANDROID if (Social.localUser.authenticated) { if (InGameTimeManager.GetInstance().GetNowTime().GetDaysGap(Constant.GameStartTime) >= 10) { Social.ReportProgress(GPGSIds.achievement_hold_10_days, 100.0, (sucess) => { }); } if (InGameTimeManager.GetInstance().GetNowTime().GetDaysGap(Constant.GameStartTime) >= 20) { Social.ReportProgress(GPGSIds.achievement_hold_20_days, 100.0, (sucess) => { }); } Social.ReportScore(GoldManager.GetInstance().Gold, GPGSIds.leaderboard_gold_leaderboard, (s) => { }); } #endif }
public string GetClientText(E_ClientState state, ClientIdea client) { string result = ""; Client_TextData textData = clientText.dataArray[(int)state]; switch (LanguageManager.GetInstance().Language) { case E_Language.KOREAN: result = textData.Charatextkor; break; case E_Language.ENGLISH: result = textData.Charatexteng; break; } int deposit = PayFormula.CalculateClientRequestDeposit(client.OriginOrderedQuest, client.DaysExpire); switch (state) //치환해야하는 문자열의 경우. { case E_ClientState.COMMISSION: int clientLastPayin100per = PayFormula.CalculateClientRequestLastPayment( client.OriginOrderedQuest, client.DaysExpire, 100f, 0 ); result = result.Replace("[0]", deposit.ToString()); result = result.Replace("[1]", clientLastPayin100per.ToString()); break; case E_ClientState.COMMISION_MAKE_DONE: result = result.Replace("[0]", client.DaysExpire.ToString()); result = result.Replace("[1]", deposit.ToString()); break; case E_ClientState.CHECK_NO_EXPIRE: result = result.Replace("[0]", client.DaysExpire.ToString()); break; case E_ClientState.CHECK_IMPERFACT_00: //뺐을 착수금으로 치환 result = result.Replace("[0]", deposit.ToString()); break; case E_ClientState.CHECK_IMPERFACT_50: //성공보수금으로 치환 case E_ClientState.CHECK_IMPERFACT_80: case E_ClientState.CHECK_IMPERFACT_95: case E_ClientState.CHECK_PERFACT: int outDue = 0; if (client.haveComeBeforeExpire) { InGameTime clientExpire = client.GetExpire(); InGameTime nowTime = InGameTimeManager.GetInstance().GetNowTime(); outDue = nowTime.GetDaysGap(clientExpire); } int lastClientPayment = PayFormula.CalculateClientRequestLastPayment(client.OriginOrderedQuest, client.DaysExpire, EventParameterStorage.GetInstance().QuestCompareCompleteness, outDue); result = result.Replace("[0]", lastClientPayment.ToString()); break; } return(result); }
public List <QuestPerMob> HuntingAtNight(out bool isLastDayHunt) //위협 매니저에서 밤에 얘를 호출. { Quest quest = QuestManager.GetInstance().GetQuest(associatedQuestKey); if (quest == null || !hasCommission) { isLastDayHunt = true; Debug.LogError("헌팅 나이트 불려오면 안됨."); return(null); } InGameTime nowTime = InGameTimeManager.GetInstance().GetNowTime(); InGameTime questExpireDay = questHuntExpireDay; int wholeQTerm = questExpireDay.GetDaysGap(questTakeOnDay); int daysAfterTakeQuest = nowTime.GetDaysGap(questTakeOnDay); //0~ 부터 기간-1 까지 나옮. if (wholeQTerm <= 0) { isLastDayHunt = true; Debug.LogError("헌터" + charaName + " 헌팅나이트 수임 부터 만기 까지 0일 이하임." + wholeQTerm + "퀘스트 만기 = " + questExpireDay + "퀘스트 입기" + questTakeOnDay); return(null); } if (daysAfterTakeQuest >= wholeQTerm) { isLastDayHunt = true; Debug.Log(charaName + " 헌터는 이미 만기일이 지났으므로 사냥을 하지 않아용"); return(null); } if (huntedList == null) { huntedList = new List <QuestPerMob>(); } List <QuestPerMob> orderedQuest = quest.QuestList; List <QuestPerMob> tonightHunted; float huntCapTillTonight = (GetHuntCapabillityForRealhunt() / wholeQTerm) * (daysAfterTakeQuest + 1); //능력치를 전체 기간으로 나누고 수임한 날부터 이 밤까지 곱해서 나오는 값. Debug.LogFormat("{0}의 밤사냥 {1} 일 기간 , 수임날 부터 {2} 지남 , 전체 헌터 무기포함 능력치 = {3} , 오늘 사용할 수 있는 능력치 = {4} , 지금까지 잡은 목록 = {5}", charaName, wholeQTerm, daysAfterTakeQuest, GetHuntCapabillityForRealhunt(), huntCapTillTonight, huntedList.DebugString()); if (daysAfterTakeQuest == wholeQTerm - 1) //마지막 날임. { isLastDayHunt = true; tonightHunted = HuntCompactOrder(orderedQuest, huntCapTillTonight); Debug.LogFormat("{0}이 오늘 잡은 목록 - 컴팩트 오더 {1}", charaName, tonightHunted.DebugString()); huntedList.AddQPMList(tonightHunted); BrakeGambleRentalWeapons(); //사냥 할때 마다 갬블을 한 번씩. return(tonightHunted); } isLastDayHunt = false; //수임~ 만기 까지의 마지막 밤이 아닌 밤임. tonightHunted = HuntBigOrder(orderedQuest, huntCapTillTonight); Debug.LogFormat("{0}이 오늘 잡은 목록 - 빅 오더 {1}", charaName, tonightHunted.DebugString()); huntedList.AddQPMList(tonightHunted); BrakeGambleRentalWeapons(); return(tonightHunted); }
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); }
public override void SetHasCommission(string Qkey) { base.SetHasCommission(Qkey); questTakeOnDay = InGameTimeManager.GetInstance().GetNowTime(); }
public static string MakeQuestKey(string charaName) { return(charaName + "-" + InGameTimeManager.GetInstance().GetNowInGameTimeStamp().ToString()); }
public void SetOrderDateAtNowTime() { InGameTime orTemp = InGameTimeManager.GetInstance().GetNowTime(); orderDate = orTemp; }