Exemple #1
0
    /// <summary>
    /// 检测是否要升级
    /// </summary>
    /// <param name="workerData"></param>
    /// <returns></returns>
    private bool CheckCanImprove(CharacterWorkerBaseBean workerData, out StoreInfoBean levelInfo)
    {
        workerData.GetWorkerExp(out long nextLevelExp, out long currentExp, out float levelProportion);

        //获取升级数据
        levelInfo = null;
        foreach (StoreInfoBean itemLevel in mListLevelInfo)
        {
            if (itemLevel.mark_type == workerData.workerLevel + 1)
            {
                levelInfo = itemLevel;
            }
        }
        //判断是否可以升级
        if (currentExp >= nextLevelExp)
        {
            //可以升级
            return(true);
        }
        else
        {
            //不可以升级
            return(false);
        }
    }
Exemple #2
0
    /// <summary>
    /// 根据类型获取工作数据
    /// </summary>
    /// <param name="worker"></param>
    /// <returns></returns>
    public CharacterWorkerBaseBean GetWorkerInfoByType(WorkerEnum worker)
    {
        CharacterWorkerBaseBean workerInfo = null;

        switch (worker)
        {
        case WorkerEnum.Chef:
            workerInfo = chefInfo;
            break;

        case WorkerEnum.Waiter:
            workerInfo = waiterInfo;
            break;

        case WorkerEnum.Accountant:
            workerInfo = accountantInfo;
            break;

        case WorkerEnum.Accost:
            workerInfo = accostInfo;
            break;

        case WorkerEnum.Beater:
            workerInfo = beaterInfo;
            break;
        }
        return(workerInfo);
    }
Exemple #3
0
    public void SetRuleContent(List <string> listRule)
    {
        string ruleStr = "";

        for (int i = 0; i < listRule.Count; i++)
        {
            string itemRule = listRule[i];
            ruleStr += ((i + 1) + "." + itemRule + "\n");
        }
        //设置参与等级提示
        string levelToastWorker = "???";
        string levelToastLevel  = "???";

        switch (gameType)
        {
        case MiniGameEnum.Cooking:
            levelToastWorker = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Chef);
            break;

        case MiniGameEnum.Barrage:
            levelToastWorker = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Waiter);
            break;

        case MiniGameEnum.Account:
            levelToastWorker = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Accountant);
            break;

        case MiniGameEnum.Debate:
            levelToastWorker = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Accost);
            break;

        case MiniGameEnum.Combat:
            levelToastWorker = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Beater);
            break;
        }

        switch (trophyType)
        {
        case TrophyTypeEnum.Elementary:
            levelToastLevel = " " + CharacterWorkerBaseBean.GetWorkerLevelName(0) + " " + CharacterWorkerBaseBean.GetWorkerLevelName(1);
            break;

        case TrophyTypeEnum.Intermediate:
            levelToastLevel = " " + CharacterWorkerBaseBean.GetWorkerLevelName(2) + " " + CharacterWorkerBaseBean.GetWorkerLevelName(3);
            break;

        case TrophyTypeEnum.Advanced:
            levelToastLevel = " " + CharacterWorkerBaseBean.GetWorkerLevelName(4) + " " + CharacterWorkerBaseBean.GetWorkerLevelName(5);
            break;

        case TrophyTypeEnum.Legendary:
            levelToastLevel = " " + CharacterWorkerBaseBean.GetWorkerLevelName(6);
            break;
        }
        string levelToast = string.Format(TextHandler.Instance.manager.GetTextById(221), levelToastWorker, levelToastLevel);

        ruleStr += (levelToast + "\n");
        SetRuleContent(ruleStr);
    }
Exemple #4
0
    public void ChangeStatus(WorkerPriorityView view, bool isWork)
    {
        if (characterData == null || characterData.baseInfo == null)
        {
            return;
        }
        //厨师状态
        if (view == wvChef)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
            characterWorker.SetWorkStatus(isWork);
        }
        //伙计状态
        else if (view == wvWaiterForSend)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetWorkStatusForSend(isWork);
        }
        else if (view == wvWaiterForCleanTable)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetWorkStatusForCleanTable(isWork);
        }
        else if (view == wvWaiterForCleanBed)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetWorkStatusForCleanBed(isWork);
        }
        //账房状态
        else if (view == wvAccounting)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);
            characterWorker.SetWorkStatus(isWork);
        }
        //接待状态
        else if (view == wvAccostForSolicit)
        {
            CharacterWorkerForAccostBean characterWorker = (CharacterWorkerForAccostBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
            characterWorker.SetWorkStatusForSolicit(isWork);
        }
        else if (view == wvAccostForGuide)
        {
            CharacterWorkerForAccostBean characterWorker = (CharacterWorkerForAccostBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
            characterWorker.SetWorkStatusForGuide(isWork);
        }
        //打手状态
        else if (view == wvBeater)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater);
            characterWorker.SetWorkStatus(isWork);
        }

        AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);

        InnHandler.Instance.InitWorker();
    }
Exemple #5
0
    public void SetLevel(int level)
    {
        string levelName = CharacterWorkerBaseBean.GetWorkerLevelName(level);
        string workName  = CharacterWorkerBaseBean.GetWorkerName(WorkerEnum.Chef);

        if (tvLevel != null)
        {
            tvLevel.text = workName + levelName;
        }
    }
Exemple #6
0
    /// <summary>
    /// 创建角色提升item
    /// </summary>
    public void CreateCharacterImproveItem(
        WorkerEnum workerType,
        CharacterBean characterData,
        CharacterWorkerBaseBean workerData,
        StoreInfoBean levelData)
    {
        GameObject objItem = Instantiate(objImproveContent, objImproveModel);
        ItemTownGuildImproveCharacterCpt improveCharacterCpt = objItem.GetComponent <ItemTownGuildImproveCharacterCpt>();

        improveCharacterCpt.SetData(workerType, characterData, workerData, levelData);
    }
Exemple #7
0
    /// <summary>
    /// 初始工作信息
    /// </summary>
    public void InitWorkerInfo()
    {
        //给工作排序
        listWorkerDetailsType = EnumUtil.GetEnumValue <WorkerDetilsEnum>();
        listWorkerDetailsType = listWorkerDetailsType.OrderByDescending(i =>
        {
            int priority = 0;
            CharacterWorkerBaseBean characterWorkerBase = null;
            switch (i)
            {
            case WorkerDetilsEnum.ChefForCook:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
                priority            = characterWorkerBase.priority;
                break;

            case WorkerDetilsEnum.WaiterForSend:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
                priority            = (characterWorkerBase as CharacterWorkerForWaiterBean).priorityForSend;
                break;

            case WorkerDetilsEnum.WaiterForCleanTable:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
                priority            = (characterWorkerBase as CharacterWorkerForWaiterBean).priorityForCleanTable;
                break;

            case WorkerDetilsEnum.WaiterForCleanBed:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
                priority            = (characterWorkerBase as CharacterWorkerForWaiterBean).priorityForCleanBed;
                break;

            case WorkerDetilsEnum.AccountantForPay:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);
                priority            = characterWorkerBase.priority;
                break;

            case WorkerDetilsEnum.AccostForSolicit:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
                priority            = (characterWorkerBase as CharacterWorkerForAccostBean).priorityForSolicit;
                break;

            case WorkerDetilsEnum.AccostForGuide:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
                priority            = (characterWorkerBase as CharacterWorkerForAccostBean).priorityForGuide;
                break;

            case WorkerDetilsEnum.BeaterForDrive:
                characterWorkerBase = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater);
                priority            = characterWorkerBase.priority;
                break;
            }
            return(priority);
        }).ToList();
    }
Exemple #8
0
    protected static void CompleteRewardForExp(List <CharacterBean> listCharacterData, WorkerEnum workerType, int exp)
    {
        if (CheckUtil.ListIsNull(listCharacterData))
        {
            return;
        }

        foreach (CharacterBean itemData in listCharacterData)
        {
            CharacterWorkerBaseBean characterWorker = itemData.baseInfo.GetWorkerInfoByType(workerType);
            characterWorker.AddExp(exp, out bool isLevelUp);
        }
    }
Exemple #9
0
 /// <summary>
 /// 设置数据
 /// </summary>
 /// <param name="workerType"></param>
 /// <param name="characterData"></param>
 /// <param name="workerData"></param>
 public void SetData(WorkerEnum workerType, CharacterBean characterData, CharacterWorkerBaseBean workerData, StoreInfoBean levelData)
 {
     this.workerType    = workerType;
     this.levelData     = levelData;
     this.characterData = characterData;
     SetWorkerIcon(workerType);
     SetName(characterData.baseInfo.name);
     SetCharacter(characterData);
     SetLowLevelData(workerType, workerData.workerLevel);
     SetHighLevelData(workerType, workerData.workerLevel + 1);
     SetMoney(levelData.price_l, levelData.price_m, levelData.price_s);
     SetTime(int.Parse(levelData.mark));
 }
Exemple #10
0
    public void ChangePriority(WorkerPriorityView view, int priority)
    {
        //厨师优先级
        if (view == wvChef)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
            characterWorker.SetPriority(priority);
        }
        //伙计优先级
        else if (view == wvWaiterForSend)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetPriorityForSend(priority);
        }
        else if (view == wvWaiterForCleanTable)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetPriorityForCleanTable(priority);
        }
        else if (view == wvWaiterForCleanBed)
        {
            CharacterWorkerForWaiterBean characterWorker = (CharacterWorkerForWaiterBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
            characterWorker.SetPriorityForCleanBed(priority);
        }
        //账房优先级
        else if (view == wvAccounting)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);
            characterWorker.SetPriority(priority);
        }
        //接待优先级
        else if (view == wvAccostForSolicit)
        {
            CharacterWorkerForAccostBean characterWorker = (CharacterWorkerForAccostBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
            characterWorker.SetPriorityForSolicit(priority);
        }
        else if (view == wvAccostForGuide)
        {
            CharacterWorkerForAccostBean characterWorker = (CharacterWorkerForAccostBean)characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
            characterWorker.SetPriorityForGuide(priority);
        }
        //打手优先级
        else if (view == wvBeater)
        {
            CharacterWorkerBaseBean characterWorker = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater);
            characterWorker.SetPriority(priority);
        }

        InnHandler.Instance.InitWorker();
    }
Exemple #11
0
 /// <summary>
 /// 是否升级排序点击
 /// </summary>
 public void OnClickForWorker(WorkerEnum worker, WorkerDetilsEnum workerDetils)
 {
     AudioHandler.Instance.PlaySound(AudioSoundEnum.ButtonForNormal);
     this.listCharacterData = this.listCharacterData.OrderByDescending(
         (data) =>
     {
         int workNumber = 0;
         CharacterWorkerBaseBean workerData = data.baseInfo.GetWorkerInfoByType(worker);
         if (worker == WorkerEnum.Chef || worker == WorkerEnum.Beater || worker == WorkerEnum.Accountant)
         {
             if (workerData.isWorking)
             {
                 workNumber++;
             }
         }
         else if (worker == WorkerEnum.Waiter)
         {
             CharacterWorkerForWaiterBean waiterData = workerData as CharacterWorkerForWaiterBean;
             if (workerDetils == WorkerDetilsEnum.WaiterForCleanBed && waiterData.isWorkingCleanBed)
             {
                 workNumber++;
             }
             if (workerDetils == WorkerDetilsEnum.WaiterForCleanTable && waiterData.isWorkingForCleanTable)
             {
                 workNumber++;
             }
             if (workerDetils == WorkerDetilsEnum.WaiterForSend && waiterData.isWorkingForSend)
             {
                 workNumber++;
             }
         }
         else if (worker == WorkerEnum.Accost)
         {
             CharacterWorkerForAccostBean accostData = workerData as CharacterWorkerForAccostBean;
             if (workerDetils == WorkerDetilsEnum.AccostForSolicit && accostData.isWorkingForSolicit)
             {
                 workNumber++;
             }
             if (workerDetils == WorkerDetilsEnum.AccostForGuide && accostData.isWorkingForGuide)
             {
                 workNumber++;
             }
         }
         return(workNumber);
     }).ToList();
     InitData();
 }
Exemple #12
0
    public void SetData(WorkerEnum workerType, CharacterWorkerBaseBean workInfo)
    {
        if (workInfo == null)
        {
            return;
        }
        //设置等级名称
        string workerLevelName =
            CharacterWorkerBaseBean.GetWorkerLevelName(workInfo.workerLevel) + CharacterWorkerBaseBean.GetWorkerName(workerType);

        SetLevelName(workerLevelName);
        //设置经验条
        workInfo.GetWorkerExp(out long nextLevelExp, out long currentExp, out float levelProportion);
        SetExp(workInfo.workerLevel, currentExp, nextLevelExp, levelProportion);
        // 设置等级图标
        SetLevelIcon(workInfo.workerLevel);
    }
Exemple #13
0
    /// <summary>
    /// 初始化厨师考试
    /// </summary>
    private MiniGameBaseBean InitChefGame()
    {
        MiniGameBaseBean miniGameData = MiniGameEnumTools.GetMiniGameData(MiniGameEnum.Cooking);

        miniGameData = PreTypeForMiniGameEnumTools.GetMiniGameData(miniGameData, levelData.pre_data_minigame);
        //先清除数据中的指定敌人
        miniGameData.listEnemyGameData.Clear();
        //随机生成敌人
        List <CharacterBean>    listEnemyData       = new List <CharacterBean>();
        CharacterWorkerBaseBean characterWorkerData = characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
        int equipLevel = (characterWorkerData.GetLevel() + 1) / 2;

        for (int i = 0; i < UnityEngine.Random.Range(1, 16); i++)
        {
            CharacterBean randomEnemy = CharacterBean.CreateRandomEnemyData(100, 10, equipLevel);
            listEnemyData.Add(randomEnemy);
        }
        miniGameData.InitData(characterData, listEnemyData);
        return(miniGameData);
    }
Exemple #14
0
    /// <summary>
    /// 获取等级数据
    /// </summary>
    /// <param name="workerType"></param>
    /// <param name="level"></param>
    /// <param name="name"></param>
    /// <param name="spLevel"></param>
    private void GetLevelData(WorkerEnum workerType, int level, out string name, out Sprite spLevel)
    {
        string workName      = CharacterWorkerBaseBean.GetWorkerName(workerType);
        string workLevelName = CharacterWorkerBaseBean.GetWorkerLevelName(level);

        name    = workLevelName + workName;
        spLevel = null;
        switch (level)
        {
        case 0:
            break;

        case 1:
            spLevel = spWorkerLevel_1;
            break;

        case 2:
            spLevel = spWorkerLevel_2;
            break;

        case 3:
            spLevel = spWorkerLevel_3;
            break;

        case 4:
            spLevel = spWorkerLevel_4;
            break;

        case 5:
            spLevel = spWorkerLevel_5;
            break;

        case 6:
            spLevel = spWorkerLevel_6;
            break;
        }
    }
Exemple #15
0
 /// <summary>
 /// 游戏结束
 /// </summary>
 /// <param name="isWinGame"></param>
 /// <param name="isSlow">是否开启慢镜头</param>
 public virtual void EndGame(MiniGameResultEnum gameResulte, bool isSlow)
 {
     if (GetMiniGameStatus() == MiniGameStatusEnum.Gameing)
     {
         SetMiniGameStatus(MiniGameStatusEnum.GameEnd);
         StopAllCoroutines();
         //拉近尽头
         BaseControl baseControl = GameControlHandler.Instance.manager.GetControl();
         if (baseControl)
         {
             baseControl.SetCameraOrthographicSize(6);
         }
         if (isSlow)
         {
             //开启慢镜头
             Time.timeScale = 0.1f;
         }
         transform.DOScale(new Vector3(1, 1, 1), 0.3f).OnComplete(delegate()
         {
             Time.timeScale = 1f;
             if (baseControl)
             {
                 baseControl.SetCameraOrthographicSize();
             }
             if (miniGameBuilder)
             {
                 miniGameBuilder.DestroyAll();
             }
             //设置游戏数据
             miniGameData.SetGameResult(gameResulte);
             GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();
             //经验加成
             List <MiniGameCharacterBean> listUserData = miniGameData.GetListUserGameData();
             List <CharacterBean> listWorkerData       = gameData.GetAllCharacterData();
             foreach (MiniGameCharacterBean itemCharacterData in listUserData)
             {
                 foreach (CharacterBean itemWorkerData in listWorkerData)
                 {
                     if (itemWorkerData.baseInfo.characterId == null || itemCharacterData.characterData.baseInfo.characterId == null)
                     {
                         continue;
                     }
                     if (itemWorkerData.baseInfo.characterId.Equals(itemCharacterData.characterData.baseInfo.characterId))
                     {
                         WorkerEnum workerType = MiniGameEnumTools.GetWorkerTypeByMiniGameType(miniGameData.gameType);
                         CharacterWorkerBaseBean characterWorker = itemWorkerData.baseInfo.GetWorkerInfoByType(workerType);
                         if (miniGameData.GetGameResult() == MiniGameResultEnum.Win)
                         {
                             characterWorker.AddExp(10, out bool isLevelUp);
                         }
                         else
                         {
                             characterWorker.AddExp(5, out bool isLevelUp);
                         }
                     }
                 }
             }
             //打开游戏结束UI
             UIMiniGameEnd uiMiniGameEnd = UIHandler.Instance.manager.OpenUIAndCloseOther <UIMiniGameEnd>(UIEnum.MiniGameEnd);
             uiMiniGameEnd.SetData(miniGameData);
             uiMiniGameEnd.SetCallBack(this);
         });
         //通知 游戏结束
         notifyForMiniGameStatus?.Invoke(MiniGameStatusEnum.GameEnd, new object[] { miniGameData });
         AudioHandler.Instance.StopMusic();
     }
 }
Exemple #16
0
    public IEnumerator CoroutineForAccountingForBed(OrderForHotel orderForHotel)
    {
        float time = npcAIWorker.characterData.CalculationAccountingTime();

        yield return(new WaitForSeconds(time));

        orderForHotel.bed.GetPrice(out long basePriceS, out long addPriceS);
        long payMoneyL = 0;
        long payMoneyM = 0;
        long payMoneyS = basePriceS + addPriceS;
        //是否出错
        bool isError = npcAIWorker.characterData.CalculationAccountingCheck(out float moreRate);

        long AddMoneyL = (long)(moreRate * payMoneyL);
        long AddMoneyM = (long)(moreRate * payMoneyM);
        long AddMoneyS = (long)(moreRate * payMoneyS);

        if (isError)
        {
            //出错
            //记录数据
            payMoneyL -= AddMoneyL;
            payMoneyM -= AddMoneyM;
            payMoneyS -= AddMoneyS;

            npcAIWorker.characterData.baseInfo.accountantInfo.AddAccountantFail
            (
                payMoneyL, payMoneyM, payMoneyS,
                AddMoneyL, AddMoneyM, AddMoneyS
            );
            //增加经验
            npcAIWorker.characterData.baseInfo.accountantInfo.AddExp(1, out bool isLevelUp);
            if (isLevelUp)
            {
                ToastForLevelUp(WorkerEnum.Accountant);
            }

            //工作者表示抱歉
            npcAIWorker.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Wordless);
            //顾客生气
            orderForHotel.customer.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Mad);
        }
        else
        {
            //成功
            payMoneyL += AddMoneyL;
            payMoneyM += AddMoneyM;
            payMoneyS += AddMoneyS;
            //记录数据
            npcAIWorker.characterData.baseInfo.accountantInfo.AddAccountantSuccess
            (
                payMoneyL, payMoneyM, payMoneyS,
                AddMoneyL, AddMoneyM, AddMoneyS
            );
            //增加经验
            npcAIWorker.characterData.baseInfo.accountantInfo.AddExp(1, out bool isLevelUp);
            if (isLevelUp)
            {
                ToastForLevelUp(WorkerEnum.Accountant);
            }
            //如果有额外的加成 工作者和店员都应该高兴
            //orderForCustomer.customer.SetExpression(CharacterExpressionCpt.CharacterExpressionEnum.Love);
        }
        //加上小时数
        payMoneyL *= orderForHotel.sleepTime;
        payMoneyM *= orderForHotel.sleepTime;
        payMoneyS *= orderForHotel.sleepTime;

        InnHandler.Instance.PayMoney(orderForHotel, payMoneyL, payMoneyM, payMoneyS, true);
        //结束订单
        InnHandler.Instance.EndOrder(orderForHotel);

        //检测该柜台是否还有订单并且依旧没有取消改职业。如果有的话继续结账
        //用于中断连续结账
        CharacterWorkerBaseBean characterWorkerData = npcAIWorker.characterData.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);

        if (characterWorkerData.isWorking && orderForHotel.counter.payQueue.Count != 0)
        {
            OrderForBase newOrder = orderForHotel.counter.payQueue[0];
            orderForHotel.counter.payQueue.Remove(newOrder);
            StartAccounting(newOrder);
        }
        else
        {
            SetIntent(AccountantIntentEnum.Idle);
        }

        //通知离开
        orderForHotel.customer.SetIntent(NpcAICustomerForHotelCpt.CustomerHotelIntentEnum.Leave);
    }
Exemple #17
0
    public void Submit(DialogView dialogView, DialogBean dialogBean)
    {
        GameDataBean gameData = GameDataHandler.Instance.manager.GetGameData();

        if (dialogView as PickForCharacterDialogView)
        {
            //判断时间是否过晚
            GameTimeHandler.Instance.GetTime(out float hour, out float min);
            if (hour >= 21 || hour < 6)
            {
                ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(1034));
                return;
            }
            //支付金钱
            gameData.PayMoney(miniGameData.preMoneyL, miniGameData.preMoneyM, miniGameData.preMoneyS);
            //扣除时间
            GameTimeHandler.Instance.AddHour(miniGameData.preGameTime);
            //如果有研究菜谱 菜谱增加经验
            GameDataHandler.Instance.AddTimeProcess(miniGameData.preGameTime * 60);
            //设置参赛人员
            PickForCharacterDialogView pickForCharacterDialog = dialogView as PickForCharacterDialogView;
            List <CharacterBean>       listCharacter          = pickForCharacterDialog.GetPickCharacter();
            miniGameData.InitData(listCharacter);
            //今日不能再参加
            GameCommonInfo.DailyLimitData.AddArenaAttendedCharacter(listCharacter);
            //删除该条数据
            GameCommonInfo.DailyLimitData.RemoveArenaDataByType(trophyType, miniGameData);

            if (arenaJoinType == 1)
            {
                //设置竞技场数据
                GameCommonInfo.SetArenaPrepareData(miniGameData);
                //保存之前的位置
                GameCommonInfo.ScenesChangeData.beforeUserPosition = GameControlHandler.Instance.manager.GetControl <BaseControl>(GameControlHandler.ControlEnum.Normal).transform.position;
                //跳转到竞技场
                GameScenesHandler.Instance.ChangeScene(ScenesEnum.GameArenaScene);
            }
            else if (arenaJoinType == 2)
            {
                //刷新UI
                ((UITownArena)uiComponent).RefreshUI();
                CharacterBean character = listCharacter[0];
                bool          isWin     = character.CalculationArenaSendWin(miniGameData.gameType);
                if (isWin)
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7011));
                    AudioHandler.Instance.PlaySound(AudioSoundEnum.Reward);
                    //设置不记录
                    foreach (RewardTypeBean rewardData in miniGameData.listReward)
                    {
                        if (rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyAdvanced ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyElementary ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyIntermediate ||
                            rewardData.GetRewardType() == RewardTypeEnum.AddArenaTrophyLegendary)
                        {
                            rewardData.isRecord = false;
                        }
                    }
                    //完成奖励
                    RewardTypeEnumTools.CompleteReward(listCharacter, miniGameData.listReward);
                }
                else
                {
                    ToastHandler.Instance.ToastHint(TextHandler.Instance.manager.GetTextById(7012));
                    AudioHandler.Instance.PlaySound(AudioSoundEnum.Passive);
                }
            }
        }
        else
        {
            //弹出选人界面
            DialogBean dialogData = new DialogBean();
            PickForCharacterDialogView pickForCharacterDialog = DialogHandler.Instance.CreateDialog <PickForCharacterDialogView>(DialogEnum.PickForCharacter, this, dialogData);
            pickForCharacterDialog.SetPickCharacterMax(1);
            List <string> listExpelCharacterId = new List <string>();
            //排出今日已经参加过的人
            List <string> listAttendedCharacterId = GameCommonInfo.DailyLimitData.GetArenaAttendedCharacter();
            //排出等级不符合的人
            List <CharacterBean> listWorker = gameData.GetAllCharacterData();
            foreach (CharacterBean itemWorker in listWorker)
            {
                bool isExpel = false;
                CharacterWorkerBaseBean workerInfo = null;
                switch (gameType)
                {
                case MiniGameEnum.Cooking:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Chef);
                    break;

                case MiniGameEnum.Barrage:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Waiter);
                    break;

                case MiniGameEnum.Account:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accountant);
                    break;

                case MiniGameEnum.Debate:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Accost);
                    break;

                case MiniGameEnum.Combat:
                    workerInfo = itemWorker.baseInfo.GetWorkerInfoByType(WorkerEnum.Beater);
                    break;
                }
                int workLevel = workerInfo.GetLevel();
                switch (trophyType)
                {
                case TrophyTypeEnum.Elementary:
                    if (workLevel != 0 && workLevel != 1)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Intermediate:
                    if (workLevel != 2 && workLevel != 3)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Advanced:
                    if (workLevel != 4 && workLevel != 5)
                    {
                        isExpel = true;
                    }
                    break;

                case TrophyTypeEnum.Legendary:
                    if (workLevel != 6)
                    {
                        isExpel = true;
                    }
                    break;
                }
                if (isExpel)
                {
                    listExpelCharacterId.Add(itemWorker.baseInfo.characterId);
                }
            }
            listExpelCharacterId.AddRange(listAttendedCharacterId);
            pickForCharacterDialog.SetExpelCharacter(listExpelCharacterId);
            if (miniGameData.gameType == MiniGameEnum.Combat)
            {
                pickForCharacterDialog.SetPickCharacterMax(miniGameData.winBringDownNumber);
            }
        }
    }