Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 3
0
 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;
            }
        }
    }
Ejemplo n.º 5
0
            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;
            }
Ejemplo n.º 6
0
 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();
 }
Ejemplo n.º 7
0
 public override MFSMStateBase GetNextState(E_Monster self)
 {
     if (m_timer <= 0)
     {
         return(m_mfsm.m_autoMove);
     }
     return(null);
 }
Ejemplo n.º 8
0
 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;
            }
        }

        //인벤토리에 넣어주고.
        //골드 까주고.
    }
Ejemplo n.º 10
0
 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));
 }
Ejemplo n.º 11
0
 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++;
 }
Ejemplo n.º 12
0
 public bool IsIt(E_Monster monster, E_Evidence evidence1)
 {
     if (mob == monster && evidence == evidence1)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Ejemplo n.º 13
0
 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);
 }
Ejemplo n.º 14
0
 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);
 }
Ejemplo n.º 15
0
    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);
    }
Ejemplo n.º 16
0
 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);
 }
Ejemplo n.º 17
0
        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);
        }
Ejemplo n.º 18
0
    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);
    }
Ejemplo n.º 20
0
 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));
 }
Ejemplo n.º 21
0
 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);
 }
Ejemplo n.º 22
0
            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;
                }
            }
Ejemplo n.º 23
0
            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);
            }
Ejemplo n.º 24
0
 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);
     }
 }
Ejemplo n.º 25
0
    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);
    }
Ejemplo n.º 26
0
 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);
 }
Ejemplo n.º 27
0
    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);
    }
Ejemplo n.º 28
0
 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;
 }