/* * 렌탈할 수 있는 무기들을 보여줌. */ void InitRentalWeaponList() { for (int i = 0; i < rentalWeaponListViewContents.transform.childCount; i++) { Destroy(rentalWeaponListViewContents.transform.GetChild(i).gameObject); } HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; rCombo = new rentalWeaponCombo(hunter.EquipCap); EquipText.text = hunter.EquipCap.ToString(); List <Weapon> nowInven = Inventory.GetInstance().GetWeaponInvenTypes();//현재 갖고있는 무기 중 하나씩만 가져옴. for (int i = 0; i < nowInven.Count; i++) { int num = i; GameObject temp = Instantiate(weaponBtn, rentalWeaponListViewContents.transform); SetTxtsWeaponBtn(nowInven[i], temp); temp.GetComponent <Button>().onClick.AddListener( () => { AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.CLICK); rCombo.SelectRentalWeapon(num); } ); rCombo.SetWeaponCombo(num, temp, nowInven[i]); } }
public string[] GetHunter_PlayerText(E_HunterState state, HunterIdea hunter) { string pt1 = null; string pt2 = null; Hunter_TextData textData = hunterText.dataArray[(int)state]; switch (LanguageManager.GetInstance().Language) { case E_Language.KOREAN: pt1 = textData.Playertext1kor; pt2 = textData.Playertext2kor; break; case E_Language.ENGLISH: pt1 = textData.Playertext1eng; pt2 = textData.Playertext2eng; break; } string[] result; if (pt2 == "-") { result = new string[1]; result[0] = pt1; } else { result = new string[2]; result[0] = pt1; result[1] = pt2; } return(result); }
void ShowNowCFrame() { HunterIdea ch = CharactorFrame.GetInstance().hunterIdea; ClientIdea cc = CharactorFrame.GetInstance().clientIdea; if (ch == null && cc == null) { EditorGUILayout.LabelField("현재 캐릭터 프레임 = 널"); return; } if (ch != null && cc != null) { Debug.LogError("캐릭터 프레임에 현재 헌터 클라이언트 모두 있음" + ch.CharaName + cc.CharaName); return; } if (ch != null) { EditorGUILayout.LabelField("현재 캐릭터 프레임 = 헌터" + ch.CharaName); ShowCharaIdea(ch); return; } if (cc != null) { EditorGUILayout.LabelField("현재 캐릭터 프레임 = 클라이언트" + cc.CharaName); ShowCharaIdea(cc); return; } }
public void HunterReturnRental() //온리 로직단이라고 보면됨. 렌탈했던 무기를 반납하는 거임. { //대여했던 무가 반납.(ui아니고 메소드로써 역할임.) HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; List <Weapon> nowBrokenRentaledWeapons = hunter.HandInRentaledWeaponsNotBroken(); //알아서 안 부서진 것만 줌. Inventory.GetInstance().AddWeaponsToInven(nowBrokenRentaledWeapons); }
CharactorIdea GambleGetNewbie() { bool makeNewbie = (Random.Range(0, 2) == 1) ? makeNewbie = true : makeNewbie = false; E_Charactor charaType = (E_Charactor)(Random.Range(0, (int)E_Charactor.MAX)); if (QuestManager.GetInstance().QuestDic.Count == 0) //현재 퀘스트가 한 개도 없으면 확정으로 클라이언트 생성. { charaType = E_Charactor.CLIENT; makeNewbie = true; } if (!makeNewbie) { return(null); //캐릭터를 새로 생성 안하는 경우도 있음. } string charaName = TextManager.GetInstance().GetNewbieName(); CharactorIdea newbie = null; int spriteNum = Random.Range(0, SpriteManager.GetInstance().charactorSprites.Length); //캐릭터 스프라이트는... 그냥 랜덤으로... switch (charaType) { case E_Charactor.CLIENT: newbie = new ClientIdea(spriteNum, charaName); break; case E_Charactor.HUNTER: float nowQuestsAverageCap = Mathf.Floor(QuestManager.GetInstance().GetAverageQuestCap()); //현재 퀘스트에 올라온 평균 능력치의 절반 부터 평균치의 1~2.5배 능력치 중에서 랜덤 float hunterCap = Mathf.Floor(Random.Range( nowQuestsAverageCap / 2, checked ( nowQuestsAverageCap * Random.Range(1f, 2.5f) ))); newbie = new HunterIdea(spriteNum, charaName, hunterCap); break; } return(newbie); /* * * CharactorIdea tempforDebugNewbie; #if UNITY_EDITOR * //모킹 * if(ds.GetInstance().clientBorn) * tempforDebugNewbie = new ClientIdea(0, tempName, E_Personality.CHEAP); * //새로운 캐릭터 생성. * else * tempforDebugNewbie = new HunterIdea(1, tempName, E_Personality.CHEAP, hunterCap); #endif * return tempforDebugNewbie; */ }
public void AddHunter(HunterIdea hunter) { if (hunter == null) { Debug.LogError("헌터가 없음."); } if (QuestManager.GetInstance().GetQuest(hunter.associatedQuestKey) == null) { Debug.LogError("연관된 퀘스트가 존재하지 않음."); } huntersWhoHaveQuest.Add(hunter); }
/* * 헌터의 스텟 세팅 */ void InitHunterStat() { HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; hunterImage.sprite = hunter.CharaSprite; hunterImage.preserveAspect = true; hunterNameText.text = hunter.CharaName; hunterCapText.text = hunter.HuntingCapabillity.ToString(); questCapText.text = ""; hunterCap = hunter.HuntingCapabillity; hunterCapPlusByWeaponRental = 0; }
void ShowCharaIdea(CharactorIdea ci) { // Debug.Log(ci.CharaName); HunterIdea hunter = ci as HunterIdea; ClientIdea client = ci as ClientIdea; if (hunter != null) { EditorGUILayout.TextField("☆★헌터", ci.CharaName); EditorGUILayout.ObjectField(ci.CharaSprite, typeof(Sprite), true); EditorGUILayout.TextField("연관키", ci.associatedQuestKey); if (hunter.GetExpire() != null) { EditorGUILayout.TextField("헌터 겟 익스파이어.", hunter.GetExpire().ToString()); } else { EditorGUILayout.TextField("헌터 겟 익스파이어.", "아직 존재 안함."); } EditorGUILayout.Toggle("커미션 가진 여부", ci.hasCommission); EditorGUILayout.TextField("밑은 헌팅 리스트 , 만기여부=", hunter.haveComeBeforeExpire.ToString()); int idx = 0; if (hunter.HuntedList != null) { foreach (QuestPerMob qpm in hunter.HuntedList) { EditorGUILayout.TextField("QPM [" + idx + "]", qpm.ToString()); idx++; } } else { EditorGUILayout.TextField("헌팅 리스트 존재하지 않아.", ""); } } else { EditorGUILayout.TextField("☆★클라이언트", ci.CharaName); EditorGUILayout.ObjectField(ci.CharaSprite, typeof(Sprite), true); EditorGUILayout.TextField("연관키", ci.associatedQuestKey); EditorGUILayout.Toggle("커미션 가진 여부", ci.hasCommission); EditorGUILayout.TextField("설정된 만기 기간은 = ", client.DaysExpire.ToString()); EditorGUILayout.TextField("밑은 의뢰인 오리진 퀘스트, 만기 텀 여부는", client.haveComeBeforeExpire.ToString()); ShowQuest(client.OriginOrderedQuest); } }
public List <HunterIdea> GetHunterListSave() { List <HunterIdea> temp = new List <HunterIdea>(); for (int i = 0; i < charaList.Count; i++) { HunterIdea hunter = charaList[i] as HunterIdea; if (hunter != null) { temp.Add(hunter); Debug.Log(hunter.CharaName + "이 무기를 들고 있는 지여부 = " + hunter.DidRentalWeapon()); } } return(temp); }
public void HunterRewardCalculate(E_RewardType type) //헌터 보상 정산만. { HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; Quest writtenQuest = QuestManager.GetInstance().GetQuest(hunter.associatedQuestKey); List <QuestPerMob> huntedList = hunter.HuntedList; int hunterExpireTerm = hunter.GetHunterExpireGap(); int hunterPayment = PayFormula.CalculateHuntLastPayment(writtenQuest, hunterExpireTerm, huntedList, type); GoldManager.GetInstance().AdjustGold(-1 * hunterPayment, GoldManager.E_PayType.TO_HUNTER); if (type != E_RewardType.PAYMENT_DENY) { Inventory.GetInstance().AddMobEviByList(CharactorFrame.GetInstance().hunterIdea.HuntedList); } }
public string GetHunterText(E_HunterState state, HunterIdea hunter) { string result = ""; Hunter_TextData textData = hunterText.dataArray[(int)state]; switch (LanguageManager.GetInstance().Language) { case E_Language.KOREAN: result = textData.Charatextkor; break; case E_Language.ENGLISH: result = textData.Charatexteng; break; } return(result); }
void SetQDHunterBtnTexts(GameObject btn, HunterIdea hunter) { btn.transform.GetChild(0).GetComponent <Text>().text = hunter.CharaName; btn.transform.GetChild(1).GetComponent <Text>().text = UIGeneralTextsManager.GetUIGeneralText("inven", "huntercap"); btn.transform.GetChild(2).GetComponent <Text>().text = hunter.GetHuntCapabillityForRealhunt().ToString(); btn.transform.GetChild(3).GetComponent <Text>().text = UIGeneralTextsManager.GetUIGeneralText("inven", "hunterday"); btn.transform.GetChild(4).GetComponent <Text>().text = LanguageManager.GetInstance().GetDateString(hunter.QuestTakeOnDay); btn.transform.GetChild(5).GetComponent <Text>().text = UIGeneralTextsManager.GetUIGeneralText("inven", "rentals"); Sprite weaponSprite = null; Color wcolor = new Color(1, 1, 1, 0); if (hunter.DidRentalWeapon()) { for (int i = 0; i < 3; i++) { int num = 6 + i; if (i < hunter.RentalWeapon.Count) { weaponSprite = SpriteManager.GetInstance().GetWeaponSprite(hunter.RentalWeapon[i].weaponType); wcolor = Color.white; } else { weaponSprite = null; wcolor = new Color(1, 1, 1, 0); } btn.transform.GetChild(num).GetComponent <Image>().sprite = weaponSprite; btn.transform.GetChild(num).GetComponent <Image>().color = wcolor; } } else { btn.transform.GetChild(6).GetComponent <Image>().sprite = weaponSprite; btn.transform.GetChild(6).GetComponent <Image>().color = wcolor; btn.transform.GetChild(7).GetComponent <Image>().sprite = weaponSprite; btn.transform.GetChild(7).GetComponent <Image>().color = wcolor; btn.transform.GetChild(8).GetComponent <Image>().sprite = weaponSprite; btn.transform.GetChild(8).GetComponent <Image>().color = wcolor; } }
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 ResetIdeas() { clientIdeaFrame = null; hunterIdeaFrame = null; }
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 SetHunterIdea(HunterIdea hd) { hunterIdeaFrame = hd; }
void Init() { HunterIdea hunter = CharactorFrame.GetInstance().hunterIdea; Debug.Log("헌터 리워드, 원래 헌터." + hunter.HuntedList.DebugString()); List <QuestPerMob> huntingOutcome; var hol = from ho in hunter.HuntedList orderby(int) ho.mob select ho; huntingOutcome = hol.ToList <QuestPerMob>(); for (int i = 0; i < huntingOutcome.Count; i++) { QuestPerMob qpm = huntingOutcome[i]; GameObject temp = Instantiate(itemBtn, hunterBringContent.transform); SetTxtsItem(qpm, temp); } List <QuestPerMob> writtenQuestList = QuestManager.GetInstance().GetQuest( hunter.associatedQuestKey ).QuestList; var wql = from wq in writtenQuestList orderby(int) wq.mob select wq; writtenQuestList = wql.ToList <QuestPerMob>(); for (int i = 0; i < writtenQuestList.Count; i++) { QuestPerMob qpm = writtenQuestList[i]; GameObject temp = Instantiate(itemBtn, writtenQuestContent.transform); SetTxtsItem(qpm, temp); } completeness = QuestManager.GetInstance().GetQuest(hunter.associatedQuestKey).GetCompleteness (hunter.HuntedList); hunterName.text = hunter.CharaName; completenessText.text = completeness.ToString(); if (completeness <= 50) { completenessText.color = Color.red; } else if (completeness < 80) { completenessText.color = Color.yellow; } else { completenessText.color = Color.green; } allPayGolds = PayFormula.CalculateHuntLastPayment(QuestManager.GetInstance().GetQuest( hunter.associatedQuestKey ), hunter.GetHunterExpireGap(), hunter.HuntedList, E_RewardType.ALL_PAYMENT); partialPayGolds = PayFormula.CalculateHuntLastPayment(QuestManager.GetInstance().GetQuest( hunter.associatedQuestKey), hunter.GetHunterExpireGap() , hunter.HuntedList, E_RewardType.PARTIAL_PAYMENT); //지불 금액 텍스트 표시. allPaymentText.text = allPayGolds.ToString() + " " + paymentTxt; if (completeness < 100 && completeness > 0) { partialPaymentText.text = partialPayGolds.ToString() + " " + paymentTxt; } else { partialBtn.interactable = false; partialPaymentText.text = ""; } denyPaymentText.text = "0 " + paymentTxt; }