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;
            }
        }

        //인벤토리에 넣어주고.
        //골드 까주고.
    }
Beispiel #6
0
 public bool IsIt(E_Monster monster, E_Evidence evidence1)
 {
     if (mob == monster && evidence == evidence1)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Beispiel #7
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++;
 }
    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);
    }
Beispiel #9
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);
 }
Beispiel #10
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));
 }
Beispiel #11
0
    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]);
 }
Beispiel #14
0
 public Sprite GetEvidenceStampedSprite(E_Evidence evi)
 {
     return(evidenceStampedSprites[(int)evi]);
 }
Beispiel #15
0
    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);
    }
Beispiel #17
0
    public void AddQuestMob(E_Monster mob, E_Evidence evidence, int number) //있나 체크하고 넣기.
    {
        QuestPerMob qpm = new QuestPerMob(mob, evidence, number);

        AddQuestMob(qpm);
    }
Beispiel #18
0
 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);
    }
Beispiel #20
0
 public void StampEvidence(int whichLine, E_Evidence evidence)
 {
     qPoses[whichLine].StampEvidence(evidence);
 }
Beispiel #21
0
 public void StampEvidence(E_Evidence evidence)
 {
     evidenceSprite.sprite = SpriteManager.GetInstance().GetEvidenceStampedSprite(evidence); //어딘가에서 몹 얼굴들 스프라이트 저장해둔거 받아오기
     evidenceSprite.size   = size3;
 }
Beispiel #22
0
 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;
    }
Beispiel #25
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);
    }
Beispiel #26
0
 public QuestPerMob(E_Monster mob, E_Evidence evidence, int num)
 {
     this.mob      = mob;
     this.evidence = evidence;
     number        = num;
 }