Quest MakeRandomOrderQuest()//랜던으로 퀘스트 만들어주기. { Quest quest = new Quest(); //모킹 quest.ClientName = charaName; List <E_Monster> showedMob = new List <E_Monster>(); for (int i = 0; i < (int)E_Monster.MAX; i++) { if (PhaseManager.GetInstance().IsMobShowUP((E_Monster)i)) { showedMob.Add((E_Monster)i); } } List <E_Evidence> opendEvi = PhaseManager.GetInstance().GetOpendEviDataList(); int kinds = Random.Range(1, Constant.clientMaxOrderNum + 1); //qpm종류로 몇개를 할 건지. for (int i = 0; i < kinds; i++) { E_Monster mob = showedMob[Random.Range(0, showedMob.Count)]; E_Evidence evidence = opendEvi[Random.Range(0, opendEvi.Count)]; int number = GetNumOfQPM(); quest.AddQuestMob(new QuestPerMob(mob, evidence, number)); } return(quest); }
void SettleNowInvenItem(E_Monster mob, E_Evidence evidence) { for (int i = 0; i < nowInven.Count; i++) { if (nowInven[i].qpm.IsIt(mob, evidence)) { nowInven[i].qpm.number++; nowInven[i].numText.text = nowInven[i].qpm.number.ToString(); return; } } QuestPerMob qpm = new QuestPerMob(mob, evidence, 1); GameObject temp = Instantiate(itemBtn); Text numText; SetItemBtnCtx(temp, qpm, out numText); QCItem qc = new QCItem(temp, numText, qpm); nowInven.Add(qc); Button btn = temp.GetComponent <Button>(); btn.onClick.AddListener( () => { AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.CLICK); OnClickQCInven(qc); } ); temp.transform.SetParent(nowInvenContents.transform); }
void SetTxtsSellBtn(GameObject btn, E_Monster mob, E_Evidence evi, int number, int price) { btn.transform.GetChild(0).GetComponent <Image>().sprite = SpriteManager.GetInstance().GetColoredEvidenceSprite(mob, evi); btn.transform.GetChild(1).GetComponent <Text>().text = MobEviInfoManager.GetInstance().GetMobName(mob); btn.transform.GetChild(2).GetComponent <Text>().text = MobEviInfoManager.GetInstance().GetEvidenceName(evi); btn.transform.GetChild(3).GetComponent <Text>().text = number.ToString(); btn.transform.GetChild(4).GetComponent <Text>().text = price.ToString(); }
public msBtn(E_Monster mob, E_Evidence evidence, GameObject b, int n, int p, string c) { this.mob = mob; this.evidence = evidence; btn = b; number = n; price = p; merchantCmt = c; }
public void OnClickBuy() { if (selected == null) { Debug.LogError("페이퍼 구입 선택 오류0"); } if (selected <= ((int)E_Monster.MAX) - 1) //몬스터 허가증인 경우 { E_Monster mob = (E_Monster)selected; Debug.Log(mob); if (PhaseManager.GetInstance().IsOpen(mob)) { Debug.Log("이미 열린것?"); HideTab(); ShowTab(); return; } else { Debug.Log("몬스터 구입"); PhaseManager.GetInstance().OpenMonsterCertificate(mob); GoldManager.GetInstance().AdjustGold(-1 * mpDic[(int)selected].price, GoldManager.E_PayType.BUY_BY_MERCHANT); HideTab(); ShowTab(); return; } } else { int eviNum = ((int)selected) - (((int)E_Monster.MAX) - 1); E_Evidence evi = (E_Evidence)eviNum; Debug.Log(evi); if (PhaseManager.GetInstance().IsOpen(evi)) { Debug.Log("이미 열린것?"); HideTab(); ShowTab(); return; } else { Debug.Log("증거품 구입"); PhaseManager.GetInstance().OpenEvidenceCertificate(evi); GoldManager.GetInstance().AdjustGold(-1 * mpDic[(int)selected].price, GoldManager.E_PayType.BUY_BY_MERCHANT); HideTab(); ShowTab(); return; } } //인벤토리에 넣어주고. //골드 까주고. }
public bool IsIt(E_Monster monster, E_Evidence evidence1) { if (mob == monster && evidence == evidence1) { return(true); } else { return(false); } }
public void Stamp(E_Monster mob, E_Evidence evidence, int number) { if (stamped >= 4) { return; } StampMob(stamped, mob); StampNum(stamped, number); StampEvidence(stamped, evidence); stamped++; }
public void StampParchment(E_Monster mob, E_Evidence evidence, int number) { // Debug.LogFormat("몹 {0} 증거품 {1} 몇 개 {2}", mob, evidence, number); if (nowHandleQPMList == null || nowParchmentHandleQPMs == null) { Debug.LogError("도장 찍을 퀘스트가 없음"); } nowParchmentHandleQPMs.Add(new QuestPerMob(mob, evidence, number)); parchment.Stamp(mob, evidence, number); }
public static bool hasThisMobEvi(this List <QuestPerMob> qpmlist, E_Monster mob, E_Evidence evi) { if (qpmlist == null) { return(false); } for (int i = 0; i < qpmlist.Count; i++) { if (qpmlist[i].IsIt(mob, evi)) { return(true); } } return(false); }
public static void AddMobEviOnce(this List <QuestPerMob> qpmlist, E_Monster mob, E_Evidence evi) { if (qpmlist == null) { return; } for (int i = 0; i < qpmlist.Count; i++) { if (qpmlist[i].IsIt(mob, evi)) { qpmlist[i].number++; return; } } qpmlist.Add(new QuestPerMob(mob, evi, 1)); }
public string GetEvidenceName(E_Evidence evi) { string result = ""; switch (LanguageManager.GetInstance().Language) { case E_Language.KOREAN: result = eviInfo.dataArray[(int)evi].Kor; break; case E_Language.ENGLISH: result = eviInfo.dataArray[(int)evi].Eng; break; } return(result); }
public void SettleSelectItem(E_Monster mob, E_Evidence evidence) //셀렉티드 아이템이 만들어지는 곳. { QuestPerMob qpm = new QuestPerMob(mob, evidence, 1); if (selectedItem == null) { selectedItem = new List <QCItem>(); } for (int i = 0; i < selectedItem.Count; i++) { if (selectedItem[i].qpm.IsIt(mob, evidence)) { selectedItem[i].qpm.number++; selectedItem[i].numText.text = selectedItem[i].qpm.number.ToString(); return; } } //새로 만들 차례 GameObject temp = Instantiate(itemBtn); Text numText; SetItemBtnCtx(temp, qpm, out numText); QCItem qc = new QCItem(temp, numText, qpm); selectedItem.Add(qc); Button btn = temp.GetComponent <Button>(); btn.onClick.AddListener( () => { AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.CLICK); OnClickQCSelected(qc); } ); temp.transform.SetParent(nowSelectedContents.transform); }
public bool IsOpen(E_Evidence evi) { return(evidenceOpen[evi]); }
public Sprite GetEvidenceStampedSprite(E_Evidence evi) { return(evidenceStampedSprites[(int)evi]); }
public Sprite GetColoredEvidenceSprite(E_Monster mob, E_Evidence evi) { int idx = (((int)E_Evidence.MAX) * ((int)mob)) + (int)evi; return(coloredMobEviSprites[idx]); }
List <QuestPerMob> HuntCompactOrder(List <QuestPerMob> orderedQuestList, float capTillTonight) { if (huntedList == null) { Debug.LogError("사냥하던 리스트가 없음."); } //큰거 부터 잡되 안 되면 다음 놈으로 넘어가서 또 잡는 거. float usedCap = 0; for (int i = 0; i < huntedList.Count; i++) { usedCap += huntedList[i].GetWeight(); } float tonightHuntingCap = capTillTonight - usedCap; //실제 오늘 사용할 수 있는 능력치. if (tonightHuntingCap <= 0) { return(null); } List <QuestPerMob> tonightHunt = new List <QuestPerMob>(); //오늘 잡을 애들 리스트 var bo = from qpm in orderedQuestList orderby qpm.GetMobEviTypeWeight() descending select qpm; List <QuestPerMob> bigOrderedList = bo.ToList <QuestPerMob>();//가중치가 큰 애들 순서로 리스트를 맹긂 bool matchedByHuntedAlready = false; for (int i = 0; i < bigOrderedList.Count; i++) { matchedByHuntedAlready = false; QuestPerMob bigOne = bigOrderedList[i]; E_Monster mob = bigOne.mob; E_Evidence evidence = bigOne.evidence; float bigOneWeightForOne = bigOne.GetMobEviTypeWeight(); //지금 선택된 놈을 한 번 잡는데 소요되는 능력치. if (tonightHuntingCap < bigOneWeightForOne) //제일 큰 놈을 하나 잡을 여유도 없으면. { continue; //다음놈을 잡을 기회 } for (int j = 0; j < huntedList.Count; j++) //잡고 있던 녀석인지 체크 컴팩트 오더 경우 어떻게든 다음 빅 원으로 넘어가는 것. { if (huntedList[j].IsIt(mob, evidence)) //이미 잡고 있는 혹은 잡은 종류라면. { if (huntedList[j].number >= bigOne.number) //다 잡은 종류라면. { matchedByHuntedAlready = true; break; } else //잡다가 말은 경우라면. { int remainNum = bigOne.number - huntedList[j].number; while (remainNum > 0) { tonightHunt.AddMobEviOnce(mob, evidence); remainNum--; tonightHuntingCap -= bigOneWeightForOne; if (tonightHuntingCap < bigOneWeightForOne && remainNum > 0)//더 못잡는데 아직 남아있음. { matchedByHuntedAlready = true; break; } } matchedByHuntedAlready = true; //뭐가 됐든 할 수 있는 한은 다 한것. } } } if (matchedByHuntedAlready) { continue; //이미 잡던 놈이라, 처리가 끝남. } //잡고 있던 애가 아니라면 int remainNumOfNewOne = bigOne.number; while (remainNumOfNewOne > 0) { tonightHunt.AddMobEviOnce(mob, evidence); remainNumOfNewOne--; tonightHuntingCap -= bigOneWeightForOne; if (tonightHuntingCap < bigOneWeightForOne && remainNumOfNewOne > 0) //더 못잡는데 아직 남아있음. { break; //다음 빅 원으로 넘어감. } } } return(tonightHunt); }
public void AddQuestMob(E_Monster mob, E_Evidence evidence, int number) //있나 체크하고 넣기. { QuestPerMob qpm = new QuestPerMob(mob, evidence, number); AddQuestMob(qpm); }
public int GetEviWeight(E_Evidence evi) { return(eviInfo.dataArray[(int)evi].Weight); }
List <QuestPerMob> HuntBigOrder(List <QuestPerMob> orderedQuestList, float capTillTonight) { if (huntedList == null) { Debug.LogError("사냥하던 리스트가 없음."); } float usedCap = 0; for (int i = 0; i < huntedList.Count; i++) { usedCap += huntedList[i].GetWeight(); } float tonightHuntingCap = capTillTonight - usedCap; //실제 오늘 사용할 수 있는 능력치. if (tonightHuntingCap <= 0) { return(null); } List <QuestPerMob> tonightHunt = new List <QuestPerMob>(); //오늘 잡을 애들 리스트 var bo = from qpm in orderedQuestList orderby qpm.GetMobEviTypeWeight() descending select qpm; List <QuestPerMob> bigOrderedList = bo.ToList <QuestPerMob>();//가중치가 큰 애들 순서로 리스트를 맹긂 Debug.Log("빅오더 정렬 리스트 = " + bigOrderedList.DebugString()); bool matchedByHuntedAlready = false; for (int i = 0; i < bigOrderedList.Count; i++) { matchedByHuntedAlready = false; QuestPerMob bigOne = bigOrderedList[i]; E_Monster mob = bigOne.mob; E_Evidence evidence = bigOne.evidence; float bigOneWeightForOne = bigOne.GetMobEviTypeWeight(); //지금 선택된 놈을 한 번 잡는데 소요되는 능력치. if (tonightHuntingCap < bigOneWeightForOne) //제일 큰 놈을 하나 잡을 여유도 없으면. { return(tonightHunt); } for (int j = 0; j < huntedList.Count; j++) //잡고 있던 녀석인지 체크 { if (huntedList[j].IsIt(mob, evidence)) //이미 잡고 있는 혹은 잡은 종류라면. { if (huntedList[j].number >= bigOne.number) //다 잡은 종류라면. { matchedByHuntedAlready = true; break; } else //잡다가 말은 경우라면. { int remainNum = bigOne.number - huntedList[j].number; while (remainNum > 0) { tonightHunt.AddMobEviOnce(mob, evidence); remainNum--; tonightHuntingCap -= bigOneWeightForOne; if (tonightHuntingCap < bigOneWeightForOne && remainNum > 0)//더 못잡는데 아직 남아있으면 쫑 { return(tonightHunt); } } matchedByHuntedAlready = true; //다 잡았다. } } } if (matchedByHuntedAlready) { continue; //다 잡았던 놈이라면 } //잡고 있던 애가 아니라면 int remainNumOfNewOne = bigOne.number; while (remainNumOfNewOne > 0) { tonightHunt.AddMobEviOnce(mob, evidence); remainNumOfNewOne--; tonightHuntingCap -= bigOneWeightForOne; if (tonightHuntingCap < bigOneWeightForOne && remainNumOfNewOne > 0)//더 못잡는데 아직 남아있으면 쫑 { return(tonightHunt); } } //새로운 애도 다 잡아버린 경우. } return(tonightHunt); }
public void StampEvidence(int whichLine, E_Evidence evidence) { qPoses[whichLine].StampEvidence(evidence); }
public void StampEvidence(E_Evidence evidence) { evidenceSprite.sprite = SpriteManager.GetInstance().GetEvidenceStampedSprite(evidence); //어딘가에서 몹 얼굴들 스프라이트 저장해둔거 받아오기 evidenceSprite.size = size3; }
public static string GetMobEviKey(E_Monster mob, E_Evidence evi) { return(((int)mob).ToString() + "/" + ((int)evi).ToString()); }
public void OpenEvidenceCertificate(E_Evidence evi) { evidenceOpen[evi] = true; }
public void StampWhaam()//스탬프꽝 { if (mobStampRadio.IsReady() == false || number == 0 || evidenceStampRadio.IsReady() == false || HandManager.GetInstance().IsThereEmptySpaceInParchment() == false ) { return; } //조건 충족 됐을때만 불러짐. E_Monster mob = E_Monster.GARGOYLE; E_Evidence evidence = E_Evidence.FINGER; switch (mobStampRadio.GetChoosedBtnName()) { case "GoblinStampTool": mob = E_Monster.GOBLIN; break; case "GargoyleStampTool": mob = E_Monster.GARGOYLE; break; case "HellhoundStampTool": mob = E_Monster.HELLHOUND; break; case "WyvernStampTool": mob = E_Monster.WYVERN; break; case "TrollStampTool": mob = E_Monster.TROLL; break; case "SabretoothStampTool": mob = E_Monster.SABRETOOTH; break; case "GriffonStampTool": mob = E_Monster.GRIFFON; break; case "MinotaurusStampTool": mob = E_Monster.MINOTAURUS; break; } switch (evidenceStampRadio.GetChoosedBtnName()) { case "FingerStampTool": evidence = E_Evidence.FINGER; break; case "CanineStampTool": evidence = E_Evidence.CANINE; break; case "LeatherStampTool": evidence = E_Evidence.LEATHER; break; case "CoreStampTool": evidence = E_Evidence.CORE; break; } AudioThing.GetInstance().PlaySFX(AudioThing.E_SFX.CLICK); HandManager.GetInstance().StampParchment(mob, evidence, number); ResetQMUI(); completeButton.interactable = true; }
public static QuestPerMob MakeQPMByInvenKey(string key, int number) { string[] splitted = key.Split('/'); if (splitted.Length != 2) { Debug.LogError("키 qpm 변환 실패"); } E_Monster mob = E_Monster.GOBLIN; E_Evidence evidence = E_Evidence.FINGER; switch (splitted[0]) { case "0": mob = (E_Monster)0; break; case "1": mob = (E_Monster)1; break; case "2": mob = (E_Monster)2; break; case "3": mob = (E_Monster)3; break; case "4": mob = (E_Monster)4; break; case "5": mob = (E_Monster)5; break; case "6": mob = (E_Monster)6; break; case "7": mob = (E_Monster)7; break; default: Debug.LogError("키 오류"); break; } switch (splitted[1]) { case "0": evidence = (E_Evidence)0; break; case "1": evidence = (E_Evidence)1; break; case "2": evidence = (E_Evidence)2; break; case "3": evidence = (E_Evidence)3; break; default: Debug.LogError("키 오류"); break; } QuestPerMob qpm = new QuestPerMob(mob, evidence, number); return(qpm); }
public QuestPerMob(E_Monster mob, E_Evidence evidence, int num) { this.mob = mob; this.evidence = evidence; number = num; }