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); }
public override void OnExit(E_Monster self, MFSMStateType nextType) { if (nextType == MFSMStateType.CAST_BACK) { GL_MonsterAction.s_instance.MFSMSkillSettle(self, m_skill, m_skillParam); } }
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 override void OnTick(E_Monster self, float dT) { if (self.m_HighestHatredTargetNetId == -1) { return; } var unit = EM_Sight.s_instance.GetUnitVisibleByNetworkId(self.m_HighestHatredTargetNetId); if (unit == null) { return; } var dir = unit.m_position - self.m_position; Vector2 dirNorm; if (dir.LengthSquared() <= float.Epsilon) { dirNorm = Vector2.UnitX; } else { dirNorm = Vector2.Normalize(dir); } var deltaP = dirNorm * self.m_Speed * dT / 100f; if (deltaP.LengthSquared() >= dir.LengthSquared()) { deltaP = dir; } self.m_position = self.m_position + deltaP; }
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 override MFSMStateBase GetNextState(E_Monster self) { if (m_timer <= 0) { return(m_mfsm.m_autoMove); } return(null); }
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 void MFSMRespawn(E_Monster monster) { // client m_networkService.SendServerCommand(SC_ApplyAllRespawn.Instance( EM_Sight.s_instance.GetInSightCharacterNetworkId(monster.m_networkId, false), monster.m_networkId, monster.m_position, monster.m_curHp, monster.m_MaxHp)); }
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 bool IsIt(E_Monster monster, E_Evidence evidence1) { if (mob == monster && evidence == evidence1) { return(true); } else { return(false); } }
public override MFSMStateBase GetNextState(E_Monster self) { if (self.m_IsDead) { return(m_mfsm.m_dead); } if (!self.m_IsFaint) { return(m_mfsm.m_autoBattle); } return(null); }
public MFSM(E_Monster monster) { m_monster = monster; m_autoMove = new MFSMS_AutoMove(this); m_autoBattle = new MFSMS_AutoBattle(this); m_castFront = new MFSMS_CastFront(this); m_castBack = new MFSMS_CastBack(this); m_faint = new MFSMS_Faint(this); m_dead = new MFSMS_Dead(this); m_curState = m_autoMove; m_curState.OnEnter(monster, MFSMStateType.DEAD); }
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 void NotifyMonsterAutoRecover(E_Monster monster) { if (monster.m_IsDead) { return; } if (monster.m_curHp == monster.m_MaxHp && monster.m_curMp == monster.m_MaxMp) { return; } int dHp = (int)(monster.m_curHp * 0.08f); int dMp = (int)(monster.m_curMp * 0.08f); monster.m_curHp = Math.Min(monster.m_MaxHp, monster.m_curHp + dHp); monster.m_curMp = Math.Min(monster.m_MaxMp, monster.m_curMp + dMp); }
public string GetMobName(E_Monster mob) { string result = ""; switch (LanguageManager.GetInstance().Language) { case E_Language.KOREAN: result = mobInfo.dataArray[(int)mob].Kor; break; case E_Language.ENGLISH: result = mobInfo.dataArray[(int)mob].Eng; break; } return(result); }
List <MonsterRisk> MobRiskListByQPMList(List <QuestPerMob> list) { List <MonsterRisk> temp = new List <MonsterRisk>(); for (int i = 0; i < (int)E_Monster.MAX; i++) { temp.Add(new MonsterRisk((E_Monster)i)); } for (int i = 0; i < list.Count; i++) { E_Monster mob = list[i].mob; temp[(int)mob].nowNum += list[i].number; } return(temp); }
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 override MFSMStateBase GetNextState(E_Monster self) { if (self.m_IsDead) { return(m_mfsm.m_dead); } if (self.m_IsFaint) { return(m_mfsm.m_faint); } if (self.m_HighestHatredTargetNetId != -1) { return(m_mfsm.m_autoBattle); } return(null); }
public override void OnEnter(E_Monster self, MFSMStateType prevType) { switch (self.m_MonsterType) { case MonsterType.NORMAL: m_timer = MyRandom.NextFloat(c_normalRespawnTimeMin, c_normalRespawnTimeMax); break; case MonsterType.ELITE: m_timer = c_eliteRespawnTime; break; case MonsterType.BOSS: m_timer = c_bossRespawnTime; break; case MonsterType.FINAL_BOSS: m_timer = c_finalBossRespawnTime; break; } }
public override MFSMStateBase GetNextState(E_Monster self) { if (self.m_IsDead) { return(m_mfsm.m_dead); } if (self.m_IsFaint) { return(m_mfsm.m_faint); } if (self.m_HighestHatredTargetNetId == -1) { return(m_mfsm.m_autoMove); } if (self.m_IsSilent) { return(null); } var unit = EM_Sight.s_instance.GetUnitVisibleByNetworkId(self.m_HighestHatredTargetNetId); if (unit == null) { return(null); } // 尝试对仇恨最高的目标释放技能 E_MonsterSkill skill; if (EM_MonsterSkill.s_instance.GetRandomValidSkill(self.m_MonsterId, out skill)) { var spg = SkillParamGeneratorBase.GetSpg(skill.m_AimType); if (spg.InCastRange(self, skill.m_CastRange, unit)) { SkillParam sp = spg.GetSkillParam(self, unit); var castState = m_mfsm.m_castFront; castState.Reset(skill, sp); return(castState); } } return(null); }
public override void OnTick(E_Monster self, float dT) { if (m_moveTimer > 0f) { m_moveTimer -= dT; } else { var dir = m_targetPos - self.m_position; Vector2 dirNorm; if (dir.LengthSquared() <= float.Epsilon) { dirNorm = Vector2.UnitX; } else { dirNorm = Vector2.Normalize(dir); } var deltaP = dirNorm * self.m_Speed * dT * 0.01f; if (deltaP.LengthSquared() >= dir.LengthSquared()) { deltaP = dir; } self.m_position = self.m_position + deltaP; if ((self.m_position - m_targetPos).LengthSquared() <= 0.01f) { m_moveTimer = MyRandom.NextFloat(5f, 10f); m_targetPos = self.m_respawnPosition + new Vector2(MyRandom.NextFloat(0f, 3f), MyRandom.NextFloat(0f, 3f)); } } if (m_recoverTimer > 0f) { m_recoverTimer -= dT; } else { m_recoverTimer = c_recoverTime; GL_UnitBattleAttribute.s_instance.NotifyMonsterAutoRecover(self); } }
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 override MFSMStateBase GetNextState(E_Monster self) { if (self.m_IsDead) { return(m_mfsm.m_dead); } if (self.m_IsFaint) { return(m_mfsm.m_faint); } // 咏唱结束 if (m_timer <= 0f) { var castBackState = m_mfsm.m_castBack; castBackState.Reset(m_skill.m_CastBackTime); return(castBackState); } // 被沉默 if (self.m_IsSilent) { return(m_mfsm.m_autoBattle); } return(null); }
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 static string GetMobEviKey(E_Monster mob, E_Evidence evi) { return(((int)mob).ToString() + "/" + ((int)evi).ToString()); }
Dictionary <E_Monster, int> maxThreatDic = new Dictionary <E_Monster, int>(); //몬스터 별 최대 위험 숫자를 표시함. public int GetMaxMobThreat(E_Monster mob) { return(maxThreatDic[mob]); }
public MonsterRisk(E_Monster mob, int num) { this.mob = mob; nowNum = num; }