public PlayerChoiceDecision() { decide = () => { return(EventParameterStorage.GetInstance().PlayerChoice); }; }
public void HunterRewardSubmit(int payment) //그냥 eps 처리를 이 단에서 해주려고 한거. { //완전지불 버튼이면 0 , 부분지불 버튼이면 1 , 거부면 2 //버튼에서 인자 확실하게 넘겨줄것!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! EventParameterStorage.GetInstance().PlayerMultipleChoice = payment; QuestRoomSceneUIManager.GetInstance().OnlyShowMainUIOrigin(); CharactorFrame.GetInstance().UpdateFSM(); }
public void QuestCheckIsDone(List <QuestPerMob> checkedList) { ClientIdea client = CharactorFrame.GetInstance().clientIdea; float completeness = client.GetCompletenessClientOriginQuest(checkedList); EventParameterStorage.GetInstance().QuestCompareCompleteness = completeness; CharactorFrame.GetInstance().UpdateFSM(); }
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 VisitNextOne() //다음 놈 부르기. { if (RoomEventManager.GetInstance().IsNowWineAndDine) { return; //접대중이면 패쓰함. } EventParameterStorage.GetInstance().ParametersReset(); CharactorIdea nextOne = CharactorManager.GetInstance().GetNextCharactor(); if (nextOne == null) { return; } nextOne.AnamnesisToCharactorFrame(); CharactorFrame.GetInstance().ComeAnim(); }
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(); }
protected override void MakeTransitions(FSMState state, E_HunterState e) { state.ClearTransitions(); switch (e) { case E_HunterState.IDLE: state.AddTransitions( new MyTransition( () => { bool hasCommision = true; //캐릭터 틀에서 수임 여부 hasCommision = CharactorFrame.GetInstance().hunterIdea.hasCommission; if (hasCommision) { return(true); } else { return(false); } }, GetState(E_HunterState.HUNT_REWARD), GetState(E_HunterState.INQUIRE_QUEST) ) ); break; case E_HunterState.INQUIRE_QUEST: state.AddTransitions(new PlayerChoiceTransition( GetState(E_HunterState.INQUIRE_QUEST_SELECT_START) , GetState(E_HunterState.INQUIRE_QUEST_CANCEL))); break; case E_HunterState.INQUIRE_QUEST_SELECT_START: //퀘스트 인콰이;어 ui에서 플레이어초이스에 퀘스트 선택 여부를 담음. state.AddTransitions( new PlayerChoiceTransition( GetState(E_HunterState.INQUIRE_QUEST_ACCEPT), GetState(E_HunterState.INQUIRE_QUEST_CANCEL))); /* 무기렌탈 로직을 퀘스트 인콰이어와 합쳤음. * , * new MyTransition( * ()=> * { * bool pc = EventParameterStorage.GetInstance().PlayerChoice; * * if (pc == true)//퀘스트 선택창의 제출 버튼을 누른것. * { * //요구능력 치에 따라서 징징과 어셉트를 구분해야함. #if DEBUG_TEST * if (fsmTestHunter.GetInstance().isHuntersPowerMoreThanQuest) * { * return true; * } #else * if ( * QuestManager.GetInstance().GetQuest( * EventParameterStorage.GetInstance().selectedQuestKey) * .GetWeight() * <= * CharactorFrame.GetInstance().hunterIdea.HuntingCapabillity * * ) //만약 헌터의 능력치가 퀘스트의 요구 능력치를 상회한다면. ) * { * return true; * } #endif * else return false;//헌터의 능력치가 퀘스트의 요구 능력치에 못미침. * } * return false; //의미 없음. * } * ,GetState(E_HunterState.INQUIRE_QUEST_ACCEPT), * GetState(E_HunterState.INQUIRE_QUEST_RENTAL_REQUIRE) * ) * */ break; case E_HunterState.INQUIRE_QUEST_ACCEPT: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); break; /*무기 렌탈 로직을 퀘스트 인콰이어와 합침. * case E_HunterState.INQUIRE_QUEST_RENTAL_REQUIRE: * state.AddTransitions(new PlayerChoiceTransition(GetState(E_HunterState.INQUIRE_QUEST_RENTAL_START), * GetState(E_HunterState.INQUIRE_QUEST_ACCEPT)//징징 했으나 무시해서 그냥 의뢰만 받아감. * )); * break; * * case E_HunterState.INQUIRE_QUEST_RENTAL_START: * state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); * //무기를 빌려주든 말든 그 로직처리는 ui 제출 버튼 쪽에서 할테니까. * //그냥 리브 해주면 됨. * break; */ case E_HunterState.INQUIRE_QUEST_CANCEL: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); break; case E_HunterState.HUNT_REWARD: state.AddTransitions( new MyTransition( () => { bool rentalSth = true; //캐릭터 틀이든 뭐든 대여한 무기가 있는지, 없는지 검사함. bool isRentalBroken = true; //무기의 내구도 도 조건이야... HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; rentalSth = hunter.DidRentalWeapon(); if (rentalSth) { isRentalBroken = hunter.IsBrokenRental(); } if (rentalSth && isRentalBroken) //빌린게 있음. 그리고 그것은 부서진 것이 존재한다. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_RETURN_OF_RENTAL_BROKEN), null ) , new MyTransition( () => { bool rentalSth = true; //캐릭터 틀이든 뭐든 대여한 무기가 있는지, 없는지 검사함. bool isRentalBroken = true; //무기의 내구도 도 조건이야... HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; rentalSth = hunter.DidRentalWeapon(); if (rentalSth) { isRentalBroken = hunter.IsBrokenRental(); } if (rentalSth && !isRentalBroken) //빌린게 있음. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_RETURN_OF_RENTAL_NOT_BROKEN), null ) , new MyTransition( () => { bool rentalSth = true; //캐릭터 틀이든 뭐든 대여한 무기가 있는지, 없는지 검사함. bool expired = true; //만기에 늦었는지. HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; rentalSth = hunter.DidRentalWeapon(); expired = hunter.haveComeBeforeExpire; if (!rentalSth && expired) //빌린게 있음. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_EXPIRED), null ) , new MyTransition( () => { bool rentalSth = true; //캐릭터 틀이든 뭐든 대여한 무기가 있는지, 없는지 검사함. bool expired = true; //만기에 늦었는지. HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; rentalSth = hunter.DidRentalWeapon(); expired = hunter.haveComeBeforeExpire; if (!rentalSth && !expired) //빌리지 않았고, 만기에 늦지도 않았음. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_START), null ) ); break; case E_HunterState.HUNT_REWARD_RETURN_OF_RENTAL_NOT_BROKEN: state.AddTransitions( new MyTransition( () => { bool expired = true; //만기 전에 왔었는지 어쟀는지. HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; expired = hunter.haveComeBeforeExpire; if (expired) //만지 전에 왔었다가 그냥 갔음. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_EXPIRED), GetState(E_HunterState.HUNT_REWARD_START) )); break; case E_HunterState.HUNT_REWARD_RETURN_OF_RENTAL_BROKEN: state.AddTransitions( new MyTransition( () => { bool expired = true; //만기 전에 왔었는지 어쟀는지. HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; expired = hunter.haveComeBeforeExpire; if (expired) //만지 전에 왔었다가 그냥 갔음. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_EXPIRED), GetState(E_HunterState.HUNT_REWARD_START) )); break; case E_HunterState.HUNT_REWARD_EXPIRED: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.HUNT_REWARD_START))); break; case E_HunterState.HUNT_REWARD_START: state.AddTransitions( new MyTransition( () => { int pmc = EventParameterStorage.GetInstance().PlayerMultipleChoice; if (pmc == 0) //완전지불이면 { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_ALL_PAYMENT), null ), new MyTransition( () => { int pmc = EventParameterStorage.GetInstance().PlayerMultipleChoice; if (pmc == 2) //지불 거부, 거래쫑이면. { return(true); } else { return(false); } } , GetState(E_HunterState.HUNT_REWARD_DENIED), null ), new MyTransition( () => { int pmc = EventParameterStorage.GetInstance().PlayerMultipleChoice; bool beSulk = true; beSulk = CharactorFrame.GetInstance().hunterIdea.IsSulked(); if (pmc == 1) //부분지불이면 { if (false == beSulk) //성격 등등을 통해 갬블하고 //삐쳤으면 거래 거부 해버림. //안 삐쳤으면 부분 지불 받고 감. { return(true); } else { return(false); } } else { Debug.LogError("EPS에러." + pmc); return(false); } } , GetState(E_HunterState.HUNT_REWARD_PARTIAL_PAYMENT), GetState(E_HunterState.HUNT_REWARD_DENIED) ) ); break; case E_HunterState.HUNT_REWARD_ALL_PAYMENT: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); break; case E_HunterState.HUNT_REWARD_PARTIAL_PAYMENT: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); break; case E_HunterState.HUNT_REWARD_DENIED: state.AddTransitions(new TriggerTransition(GetState(E_HunterState.LEAVE))); break; case E_HunterState.LEAVE: break; } }
public void PlayerChoice(bool playerChoice) //버튼 콜백 메서드 { EventParameterStorage.GetInstance().PlayerChoice = playerChoice; CharactorFrame.GetInstance().UpdateFSM(); }
protected override void MakeTransitions(FSMState state, E_ClientState e) { state.ClearTransitions(); switch (e) { case E_ClientState.IDLE: state.AddTransitions( new MyTransition( () => { bool hasCommision = true; //캐릭터 틀에서 수임 여부 #if DEBUG_TEST hasCommision = fsmTestHunter.GetInstance().hasCommision; #endif hasCommision = CharactorFrame.GetInstance().clientIdea.hasCommission; if (hasCommision == false) //캐릭터 틀에서 수임 했는지 여부를 받아오기. { return(true); } else { return(false); } }, GetState(E_ClientState.COMMISSION), null ) , new MyTransition( () => { bool hasCommision = true; //캐릭터 틀에서 수임 여부 #if DEBUG_TEST hasCommision = fsmTestHunter.GetInstance().hasCommision; #endif if (hasCommision) //캐릭터 틀에서 수임 했는지 여부를 받아오기. { bool expired; #if DEBUG_TEST expired = fsmTestHunter.GetInstance().expired; #endif expired = CharactorFrame.GetInstance().clientIdea.haveComeBeforeExpire; if (expired) { return(true); } else { return(false); } } else { return(false); //의미없음 } }, GetState(E_ClientState.CHECK_EXPIRED), GetState(E_ClientState.CHECK_NO_EXPIRE) ) ); break; case E_ClientState.COMMISSION: state.AddTransitions( new TriggerTransition(GetState(E_ClientState.COMMISSION_SAY_1)) ); break; case E_ClientState.COMMISSION_SAY_1: state.AddTransitions( new PlayerChoiceTransition(GetState(E_ClientState.COMMISSION_MAKE_START), GetState(E_ClientState.COMMISSION_SAY_2)) ); break; case E_ClientState.COMMISSION_SAY_2: state.AddTransitions( new PlayerChoiceTransition(GetState(E_ClientState.COMMISSION_MAKE_START), GetState(E_ClientState.COMMISSION_SAY_3)) ); break; case E_ClientState.COMMISSION_SAY_3: state.AddTransitions( new PlayerChoiceTransition(GetState(E_ClientState.COMMISSION_MAKE_START), GetState(E_ClientState.COMMISSION_CANCEL)) ); break; case E_ClientState.COMMISSION_MAKE_START: state.AddTransitions(new TriggerTransition(GetState(E_ClientState.COMMISION_MAKE_DONE))); break; case E_ClientState.COMMISION_MAKE_DONE: case E_ClientState.COMMISSION_CANCEL: state.AddTransitions(new TriggerTransition(GetState(E_ClientState.LEAVE))); break; case E_ClientState.CHECK_NO_EXPIRE: case E_ClientState.CHECK_EXPIRED: state.AddTransitions(new TriggerTransition(GetState(E_ClientState.CHECK_START))); break; case E_ClientState.CHECK_START: state.AddTransitions( new MyTransition( () => { float completeness; //qc 끝난 거랑 얘가 갖고 있는 원래 퀘스트랑 비겨ㅛ해서 나온 완성도 completeness = EventParameterStorage.GetInstance().QuestCompareCompleteness; if (completeness <= 0) { return(true); } else { return(false); } } , GetState(E_ClientState.CHECK_IMPERFACT_00), null ), new MyTransition( () => { float completeness; //qc 끝난 거랑 얘가 갖고 있는 원래 퀘스트랑 비겨ㅛ해서 나온 완성도 completeness = EventParameterStorage.GetInstance().QuestCompareCompleteness; if (completeness > 0 && completeness <= 50) { return(true); } else { return(false); } } , GetState(E_ClientState.CHECK_IMPERFACT_50), null ), new MyTransition( () => { float completeness; //qc 끝난 거랑 얘가 갖고 있는 원래 퀘스트랑 비겨ㅛ해서 나온 완성도 completeness = EventParameterStorage.GetInstance().QuestCompareCompleteness; if (completeness > 50 && completeness <= 80) { return(true); } else { return(false); } } , GetState(E_ClientState.CHECK_IMPERFACT_80), null ), new MyTransition( () => { float completeness; //qc 끝난 거랑 얘가 갖고 있는 원래 퀘스트랑 비겨ㅛ해서 나온 완성도 completeness = EventParameterStorage.GetInstance().QuestCompareCompleteness; if (completeness > 80 && completeness <= 95) { return(true); } else { return(false); } } , GetState(E_ClientState.CHECK_IMPERFACT_95), null ), new MyTransition( () => { float completeness; //qc 끝난 거랑 얘가 갖고 있는 원래 퀘스트랑 비겨ㅛ해서 나온 완성도 completeness = EventParameterStorage.GetInstance().QuestCompareCompleteness; if (completeness > 95) { return(true); } else { return(false); } } , GetState(E_ClientState.CHECK_PERFACT), null ) ); break; case E_ClientState.CHECK_IMPERFACT_00: case E_ClientState.CHECK_IMPERFACT_50: case E_ClientState.CHECK_IMPERFACT_80: case E_ClientState.CHECK_IMPERFACT_95: case E_ClientState.CHECK_PERFACT: state.AddTransitions(new TriggerTransition(GetState(E_ClientState.LEAVE))); break; case E_ClientState.LEAVE: break; } }
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); }