private void UpdateProcessTime(Int32 seq)
        {
            for (int i = 1; i <= MatchSystem.instance.playerCount; i++)
            {
                var          player  = gameCenter.playerSet.GetPlayer(i);
                List <Int32> rmvList = new List <Int32>();
                player.processFactory.ForEachProcessBlock((CombatGameCenter.ProcessFactory.ProcessBlock block) =>
                {
                    if (block.isRun)
                    {
                        float time = CombatFrameManager.GetIntervalTime(block.startSeq, seq);
                        if (time >= block.quest.processSecond)
                        {
                            rmvList.Add(block.index);
                            player.SetMoney(player.money + block.quest.reward);
                        }
                    }
                });
                for (int offset = 0; offset < rmvList.Count; offset++)
                {
                    player.processFactory.RemoveQuest(rmvList[offset] - offset);
                    player.RemoveQuest(rmvList[offset] - offset);
                }

                onChangeProcess?.Invoke(i);

                if (rmvList.Count > 0)
                {
                    onFinishProcess?.Invoke(i);
                }
            }
        }
    public CombatManager.StateType LogicUpdate(Int32 seq)
    {
        CombatManager.StateType nextState = CombatManager.StateType.Auction;
        AuctionData             auction   = gameCenter.auction;
        float dt       = CombatFrameManager.GetIntervalTime(m_StartSeq, seq);
        float leftTime = 0;

        if (auction.GetPassPlayerCount() >= MatchSystem.instance.playerCount)
        {
            // 全员放弃竞拍
            NextAuctionItem(auction, seq);
        }
        else
        {
            if (auction.currentCaller == null)
            {
                // 无人叫价
                leftTime = Math.Max(NOBODY_CALL_TIME - dt, 0);
                if (dt >= NOBODY_CALL_TIME)
                {
                    // 流拍
                    NextAuctionItem(auction, seq);
                }
            }
            else
            {
                // 已有人叫价
                leftTime = Math.Max(ANYBODY_CALL_TIME - dt, 0);
                if (dt >= ANYBODY_CALL_TIME)
                {
                    // 竞拍成功
                    var player = auction.currentCaller;
                    var price  = auction.GetCurrentPrice();
                    player.SetMoney(player.money - price);
                    ReceiveAuctionItem(player.id, auction.GetCurrentProp());
                    NextAuctionItem(auction, seq);
                }
            }
        }

        if (auction.IsEnd())
        {
            nextState = CombatManager.StateType.Operation;
        }
        onUpdate?.Invoke(leftTime);
        return(nextState);
    }
        private void UpdateOperationTime(Int32 seq)
        {
            float dt    = CombatFrameManager.GetIntervalTime(m_StartSeq, seq);
            Int32 dtInt = (Int32)dt;

            if (m_IsFreezen)
            {
                if (dtInt < m_FreezenTime)
                {
                    m_CurrTime = dtInt;
                    if (onChangeFreezenTime != null)
                    {
                        onChangeFreezenTime.Invoke(m_FreezenTime - m_CurrTime);
                    }
                }
                else
                {
                    m_IsFreezen = false;
                    m_CurrTime  = 0;
                    m_StartSeq  = seq;
                    if (onChangeCountdownTime != null)
                    {
                        onChangeCountdownTime.Invoke(m_OpTime - m_CurrTime);
                    }
                }
            }
            else
            {
                if (dtInt != m_CurrTime)
                {
                    m_CurrTime = dtInt;
                    if (onChangeCountdownTime != null)
                    {
                        onChangeCountdownTime.Invoke(m_OpTime - m_CurrTime);
                    }
                }
            }
        }
Esempio n. 4
0
 private void UpdateQuestPanel()
 {
     for (int i = 0; i < m_PnlProcessBlocks.Count; i++)
     {
         var block = selfPlayer.processFactory.GetProcessBlock(i);
         var view  = m_PnlProcessBlocks[i];
         if (block != null)
         {
             Int32 runTime = 0;
             Int32 CurrSeq = CombatFrameManager.instance.seq;
             if (block.isRun)
             {
                 runTime = (Int32)CombatFrameManager.GetIntervalTime(block.startSeq, CurrSeq);
             }
             view.ResetQuest(block.quest);
             view.UpdateQuest(block.matBuffer, runTime);
         }
         else
         {
             view.ResetQuest(CombatGameCenter.Quest.empty);
         }
     }
 }