void ClientCommissionCheckCalculateLastincome()   //만기여부와 등등을 고려하여 정산할것!! 클라이언트가 qc 정산 하는 단계!
    {
        ClientIdea client = CharactorFrame.GetInstance().clientIdea;
        int        outDue = 0;

        if (client.haveComeBeforeExpire)
        {
            InGameTime clientExpire = client.GetExpire();
            InGameTime nowTime      = InGameTimeManager.GetInstance().GetNowTime();
            outDue = nowTime.GetDaysGap(clientExpire);
        }
        int lastClientPayment = PayFormula.CalculateClientRequestLastPayment(client.OriginOrderedQuest,
                                                                             client.DaysExpire,
                                                                             EventParameterStorage.GetInstance().QuestCompareCompleteness, outDue);

        GoldManager.GetInstance().AdjustGold(lastClientPayment, GoldManager.E_PayType.FROM_CLIENT);
    }
Example #2
0
 public int GetHunterExpireGap()
 {
     return(questHuntExpireDay.GetDaysGap(questTakeOnDay));
 }
Example #3
0
    public List <QuestPerMob> HuntingAtNight(out bool isLastDayHunt)   //위협 매니저에서 밤에 얘를 호출.
    {
        Quest quest = QuestManager.GetInstance().GetQuest(associatedQuestKey);

        if (quest == null || !hasCommission)
        {
            isLastDayHunt = true;
            Debug.LogError("헌팅 나이트 불려오면 안됨.");
            return(null);
        }

        InGameTime nowTime            = InGameTimeManager.GetInstance().GetNowTime();
        InGameTime questExpireDay     = questHuntExpireDay;
        int        wholeQTerm         = questExpireDay.GetDaysGap(questTakeOnDay);
        int        daysAfterTakeQuest = nowTime.GetDaysGap(questTakeOnDay); //0~ 부터 기간-1 까지 나옮.

        if (wholeQTerm <= 0)
        {
            isLastDayHunt = true;
            Debug.LogError("헌터" + charaName + " 헌팅나이트 수임 부터 만기 까지 0일 이하임." + wholeQTerm + "퀘스트 만기 = " + questExpireDay + "퀘스트 입기" + questTakeOnDay);
            return(null);
        }

        if (daysAfterTakeQuest >= wholeQTerm)
        {
            isLastDayHunt = true;
            Debug.Log(charaName + " 헌터는 이미 만기일이 지났으므로 사냥을 하지 않아용");
            return(null);
        }



        if (huntedList == null)
        {
            huntedList = new List <QuestPerMob>();
        }

        List <QuestPerMob> orderedQuest = quest.QuestList;

        List <QuestPerMob> tonightHunted;

        float huntCapTillTonight = (GetHuntCapabillityForRealhunt() / wholeQTerm) * (daysAfterTakeQuest + 1);

        //능력치를 전체 기간으로 나누고 수임한 날부터 이 밤까지 곱해서 나오는 값.

        Debug.LogFormat("{0}의 밤사냥 {1} 일 기간 , 수임날 부터 {2} 지남 , 전체 헌터 무기포함 능력치 = {3} , 오늘 사용할 수 있는 능력치 = {4} , 지금까지 잡은 목록 = {5}",

                        charaName, wholeQTerm, daysAfterTakeQuest, GetHuntCapabillityForRealhunt(), huntCapTillTonight, huntedList.DebugString());


        if (daysAfterTakeQuest == wholeQTerm - 1)   //마지막 날임.
        {
            isLastDayHunt = true;
            tonightHunted = HuntCompactOrder(orderedQuest, huntCapTillTonight);
            Debug.LogFormat("{0}이 오늘 잡은 목록 - 컴팩트 오더 {1}", charaName, tonightHunted.DebugString());

            huntedList.AddQPMList(tonightHunted);
            BrakeGambleRentalWeapons(); //사냥 할때 마다 갬블을 한 번씩.
            return(tonightHunted);
        }

        isLastDayHunt = false;

        //수임~ 만기 까지의 마지막 밤이 아닌 밤임.
        tonightHunted = HuntBigOrder(orderedQuest, huntCapTillTonight);
        Debug.LogFormat("{0}이 오늘 잡은 목록 - 빅 오더 {1}", charaName, tonightHunted.DebugString());
        huntedList.AddQPMList(tonightHunted);
        BrakeGambleRentalWeapons();
        return(tonightHunted);
    }
    public string GetClientText(E_ClientState state, ClientIdea client)
    {
        string          result   = "";
        Client_TextData textData = clientText.dataArray[(int)state];

        switch (LanguageManager.GetInstance().Language)
        {
        case E_Language.KOREAN:
            result = textData.Charatextkor;
            break;

        case E_Language.ENGLISH:
            result = textData.Charatexteng;
            break;
        }
        int deposit = PayFormula.CalculateClientRequestDeposit(client.OriginOrderedQuest, client.DaysExpire);


        switch (state)  //치환해야하는 문자열의 경우.
        {
        case E_ClientState.COMMISSION:
            int clientLastPayin100per = PayFormula.CalculateClientRequestLastPayment(
                client.OriginOrderedQuest, client.DaysExpire, 100f, 0
                );
            result = result.Replace("[0]", deposit.ToString());
            result = result.Replace("[1]", clientLastPayin100per.ToString());
            break;

        case E_ClientState.COMMISION_MAKE_DONE:

            result = result.Replace("[0]", client.DaysExpire.ToString());
            result = result.Replace("[1]", deposit.ToString());
            break;

        case E_ClientState.CHECK_NO_EXPIRE:
            result = result.Replace("[0]", client.DaysExpire.ToString());
            break;

        case E_ClientState.CHECK_IMPERFACT_00:      //뺐을 착수금으로 치환
            result = result.Replace("[0]", deposit.ToString());
            break;

        case E_ClientState.CHECK_IMPERFACT_50:      //성공보수금으로 치환
        case E_ClientState.CHECK_IMPERFACT_80:
        case E_ClientState.CHECK_IMPERFACT_95:
        case E_ClientState.CHECK_PERFACT:
            int outDue = 0;
            if (client.haveComeBeforeExpire)
            {
                InGameTime clientExpire = client.GetExpire();
                InGameTime nowTime      = InGameTimeManager.GetInstance().GetNowTime();
                outDue = nowTime.GetDaysGap(clientExpire);
            }
            int lastClientPayment = PayFormula.CalculateClientRequestLastPayment(client.OriginOrderedQuest,
                                                                                 client.DaysExpire,
                                                                                 EventParameterStorage.GetInstance().QuestCompareCompleteness, outDue);

            result = result.Replace("[0]", lastClientPayment.ToString());
            break;
        }

        return(result);
    }
Example #5
0
 public int GetDaysAfterGameStart()
 {
     return(mainTime.GetDaysGap(Constant.GameStartTime));
 }