コード例 #1
0
 /// <summary>
 /// 开始发牌
 /// </summary>
 private void StartSendCard()
 {
     if (mSendTask == null)
     {
         mSendTask = ContinueTaskManager.NewTask()
                     .AppendTaskFromFunc(Config.MahStartAnimation, (b) =>
         {
             if (b)
             {
                 return(TableAnimation);
             }
             return(null);
         })
                     .AppendTaskFromFunc(Config.MahStartAnimation, (b) =>
         {
             return(b ? (Func <IEnumerator <float> >)SendCardAnimation : SendCardNoAnimation);
         })
                     .SetTaskExecuteType(TaskExecuteType.AsynLine)
                     .SetContainerExeType(ContainerExeType.Single)
                     .CallBack(TidyMahjongCards);
     }
     mSendTask.Start();
     //重置娱乐房切换房间标志位
     GameCenter.DataCenter.Room.YuLeBoutState = false;
 }
コード例 #2
0
        public void OnGetCard(ISFSObject data)
        {
            DataCenter.LeaveMahjongCnt--;
            mData.SetData(data);

            if (DataCenter.Config.Buzhang)
            {
                //补张
                if (mBuzhangLogic.ExIsNullOjbect())
                {
                    mBuzhangLogic = GameCenter.Network.GetGameResponseLogic <GameLogic_Buzhang>();
                }
                if (mBuzhangLogic.BuzhangQueue.Count > 0)
                {
                    var delayTimer = DataCenter.Config.TimeBuzhangMessageDelay;
                    GameCenter.Network.SetDelayTime(mBuzhangLogic.BuzhangQueue.Count * delayTimer);
                    if (mGetCardBuzhangTask.ExIsNullOjbect())
                    {
                        mGetCardBuzhangTask = ContinueTaskManager.NewTask().AppendFuncTask(GetCardBuZhangTask);
                    }
                    mGetCardBuzhangTask.Start();
                }
                else
                {
                    OnGetCard();
                }
            }
            else
            {
                OnGetCard();
            }

            //手牌检查
            CheckHandCards();
        }
コード例 #3
0
ファイル: StateGameInfoInit.cs プロジェクト: da1fanshu/yizhe
        public override void OnEnter(FsmStateArgs args)
        {
            var dataCenter = GameCenter.DataCenter;

            if (dataCenter.Room.RoomType == MahRoomType.YuLe)
            {
                GameCenter.Network.CtrlYuleRejoin(true);
            }

            //执行继承IGameInfoICycle接口脚本
            GameCenter.Lifecycle.GameInfoICycle();
            //检查投票解散房间
            ContinueTaskManager.NewTask().AppendFuncTask(() => RejionHandup((args as SfsFsmStateArgs).SFSObject)).Start();
            //var flag = dataCenter.Players.IsSende() && (dataCenter.Room.RoomType == MahRoomType.YuLe);
            if (dataCenter.IsReconect)
            {
                ChangeState <StateGameReconnect>(args);
            }
            else
            {
                ChangeState <StateGameReady>();
                InviteLastMahjongFriend();
            }
            SetShake();
        }
コード例 #4
0
 private void AutoThrowout()
 {
     if (null == mAutoThrow)
     {
         mAutoThrow = ContinueTaskManager.NewTask().AppendFuncTask(() => AutoThrowoutTask());
     }
     if (DataCenter.Config.AiAgency && GameCenter.Shortcuts.CheckState(GameSwitchType.AiAgency))
     {
         if (GameCenter.Shortcuts.AiAgency.Holdup(DataCenter.OperateMenu))
         {
             if (DataCenter.CurrOpChair == 0)
             {
                 mAutoThrow.Start();
             }
             else
             {
                 GameCenter.Network.C2S.Custom <C2SCustom>().OnGuo();
             }
         }
     }
     else if (DataCenter.CurrOpChair == 0 && DataCenter.OneselfData.IsAuto && DataCenter.OperateMenu == 0)
     {
         mAutoThrow.Start();
     }
 }
コード例 #5
0
ファイル: NetworkComponent.cs プロジェクト: narakai/chessgame
 public override void OnInitalization()
 {
     GameCenter.RegisterCycle(this);
     //注册响应事件
     CollectionResponseEvent();
     //开启响应事件携程
     ContinueTaskManager.NewTask().AppendFuncTask(() => ContinueS2CResponse()).Start();
 }
コード例 #6
0
ファイル: StateGameContinue.cs プロジェクト: da1fanshu/yizhe
 public override void OnEnter(FsmStateArgs args)
 {
     //注册事件
     GameCenter.EventHandle.Subscriber((int)UIEventProtocol.OnCreateNewGame, OnCreateNewGame);
     //开始发送消息
     Facade.Instance <TWMessageManager>().StartRollNotice();
     ContinueTaskManager.NewTask().AppendFuncTask(CheckContinueGame).Start();
     mFlag = true;
 }
コード例 #7
0
 public void OnBuZhangFinish(ISFSObject data)
 {
     GameCenter.Network.SetDelayTime(mBuZhangQueue.Count * (0.7f) + 0.2f);
     if (mBuzhangTask == null)
     {
         mBuzhangTask = ContinueTaskManager.NewTask().AppendFuncTask(BuZhangAnimation);
     }
     mBuzhangTask.Start();
 }
コード例 #8
0
ファイル: GameCenter.cs プロジェクト: da1fanshu/yizhe
        private IEnumerator MahjongGameStart()
        {
            yield return(new WaitForSeconds(0.1f));

            // 初始化任务管理器
            ContinueTaskManager.OnInit();
            // 初始化系统组件
            InitBuiltinComponents();
            // 游戏开始
            GameProcess.StartupProcess();
        }
コード例 #9
0
ファイル: GameLogic_Hu.cs プロジェクト: narakai/chessgame
 public void OnHu_LastCd(ISFSObject data)
 {
     OnHu(data);
     if (null == mLastCdTask)
     {
         mLastCdTask = ContinueTaskManager.NewTask()
                       .AppendFuncTask(() => LiujuTask())
                       .AppendFuncTask(() => ShowBaoTipTask())
                       .AppendActionTask(ActionCallback, Config.TimeHuAniInterval);
     }
     mLastCdTask.Start();
 }
コード例 #10
0
 public void OnHu_Single_Xlmj(ISFSObject data)
 {
     //隐藏听箭头
     GameCenter.Scene.MahjongGroups.PlayerHand.OnQueryMahjong(null);
     GameCenter.Network.SetDelayTime(1f);
     mSingleHuData.SetData(data);
     if (null == mHuTask)
     {
         mHuTask = ContinueTaskManager.NewTask().AppendFuncTask(() => SingleHuTask_Xlmj());
     }
     mHuTask.Start();
 }
コード例 #11
0
 public void OnHu_Zimo_Bbmj(ISFSObject data)
 {
     OnHu(data);
     if (null == mZimoTask)
     {
         mZimoTask = ContinueTaskManager.NewTask()
                     .AppendFuncTask(() => ZimoTask_Bbmj())
                     .AppendFuncTask(() => HandcardCtrlTask())
                     .AppendFuncTask(() => ZhaNiaoAnimation())
                     .AppendActionTask(ActionCallback, Config.TimeHuAniInterval);
     }
     mZimoTask.Start();
 }
コード例 #12
0
 public void Show(Sprite sprite)
 {
     for (int i = 0; i < Points.Length; i++)
     {
         Points[i].gameObject.SetActive(false);
     }
     gameObject.SetActive(true);
     Title.sprite = sprite;
     if (null == mTask)
     {
         mTask = ContinueTaskManager.NewTask().AppendFuncTask(() => PlayTitleAni());
     }
     mTask.Start();
     mFlag = true;
 }
コード例 #13
0
ファイル: GameLogic_Hu.cs プロジェクト: narakai/chessgame
 public void OnHu_Dianpao(ISFSObject data)
 {
     OnHu(data);
     if (null == mDianpaoTask)
     {
         mDianpaoTask = ContinueTaskManager.NewTask()
                        .AppendFuncTask(() => YipaoDuoxiangTask())
                        .AppendFuncTask(() => DianpaoTask())
                        .AppendFuncTask(() => HandcardCtrlTask())
                        .AppendFuncTask(() => ShowBaoTipTask())
                        .AppendFuncTask(() => ZhaNiaoAnimation())
                        .AppendActionTask(ActionCallback, Config.TimeHuAniInterval);
     }
     mDianpaoTask.Start();
 }
コード例 #14
0
ファイル: StateGameInfoInit.cs プロジェクト: da1fanshu/yizhe
        /// <summary>
        /// 如果是继续开局,邀请上一局麻友
        /// </summary>
        private void InviteLastMahjongFriend()
        {
            var db = GameCenter.DataCenter;

            if (db.Room.RoomType == MahRoomType.FanKa)
            {
                PlayerPrefs.SetString(Keys.TeaId, "");
                if (!string.IsNullOrEmpty(MahjongUtility.RecordCountineGameData))
                {
                    //自己是房主,邀请麻友
                    if (db.OneselfData.IsOwner)
                    {
                        ContinueTaskManager.NewTask().AppendFuncTask(OnInviteFriend).Start();
                    }
                }
            }
        }
コード例 #15
0
ファイル: PanelPlayersInfo.cs プロジェクト: narakai/chessgame
        /// <summary>
        /// 设置分数
        /// </summary>
        private void PlaySetScore(EvtHandlerArgs args)
        {
            mScoreArgs = args as SetScoreArgs;
            var type = (SetScoreType)mScoreArgs.Type;

            switch (type)
            {
            case SetScoreType.EndScore:
                mScoreArgs.ScoreDic.ExIterationAction((dic) =>
                {
                    this[dic.Key].SetGlod(dic.Value);
                });
                break;

            case SetScoreType.AddScoreAndEffect:
                if (null == mScoreEffectTask)
                {
                    mScoreEffectTask = ContinueTaskManager.NewTask().AppendFuncTask(() => DelaytimePlayEffect());
                }
                mScoreEffectTask.Start();
                break;
            }
        }
コード例 #16
0
        public void Open(ZhaniaoArgs args)
        {
            base.Open();

            mZhaniaoItems.Clear();
            mZhamaList   = args.ZhaMaList;
            mZhongmaList = args.ZhongMaAllList;

            SetBgLayout(mZhamaList.Count);
            for (int i = 0; i < mZhamaList.Count; i++)
            {
                var item = ItemStore.GetItem <ZhaniaoItem>(i);
                if (item != null)
                {
                    mZhaniaoItems.Add(item);
                    item.OnInit(mZhamaList[i]);
                }
            }
            // 动画
            ContinueTaskManager.NewTask().AppendFuncTask(ShowCardTask).Start();
            // 中码声音
            MahjongUtility.PlayEnvironmentSound("biyou");
        }
コード例 #17
0
ファイル: PlaybackComponent.cs プロジェクト: da1fanshu/yizhe
 public void StartupTask()
 {
     ContinueTaskManager.NewTask().AppendFuncTask(() => ExecutePlaybackFrame()).Start();
 }
コード例 #18
0
        public void OnChangeCardsEnd(ISFSObject data)
        {
            mHuanData.SetData(data);
            GameCenter.Network.SetDelayTime(3.5f);
            GameCenter.EventHandle.Dispatch((int)UIEventProtocol.SetPlayerFlagState, new PlayerStateFlagArgs()
            {
                CtrlState = false
            });
            GameCenter.EventHandle.Dispatch((int)UIEventProtocol.ChangeCardTip, new HuanAndDqArgs()
            {
                HuanType = mHuanData.HuanType
            });
            //停止定时任务
            GameCenter.Scene.TableManager.StopTimer();
            //移除旧手牌数据
            for (int i = 0; i < mHuanData.ChangeCards.Length; i++)
            {
                DataCenter.OneselfData.HardCards.Remove(mHuanData.ChangeCards[i]);
            }
            //添加新手牌数据
            for (int i = 0; i < mHuanData.NewCards.Length; i++)
            {
                DataCenter.OneselfData.HardCards.Add(mHuanData.NewCards[i]);
            }
            //所有玩家牌扣到桌子上
            var mahHand   = Game.MahjongGroups.PlayerHand;
            var xzMahHand = mahHand.GetMahHandComponent <MahPlayerHand_Xzmj>();

            for (int i = 0; i < DataCenter.MaxPlayerCount; i++)
            {
                if (i == 0)
                {
                    //超时扣牌
                    if (Game.MahjongGroups.SwitchGorup[0].MahjongList.Count == 0)
                    {
                        xzMahHand.SwitchCardsTimeOut(mHuanData.ChangeCards);
                        Game.MahjongGroups.SwitchGorup[0].AddMahToSwitch(mHuanData.ChangeCards);
                    }
                }
                else
                {
                    //其他家扣牌
                    int[] array   = new int[mHuanData.ChangeCards.Length];
                    var   mahList = Game.MahjongGroups.MahjongHandWall[i].MahjongList;
                    for (int j = 0; j < array.Length; j++)
                    {
                        var item = mahList[j];
                        item.gameObject.SetActive(false);
                        array[j] = item.Value;
                    }
                    Game.MahjongGroups.SwitchGorup[i].AddMahToSwitch(array);
                }
            }
            //3人血战,换牌动画设置
            if (DataCenter.MaxPlayerCount == 3)
            {
                var switchGorup = Game.MahjongGroups.SwitchGorup;
                //将麻将牌放到组中
                for (int i = 0; i < DataCenter.MaxPlayerCount; i++)
                {
                    for (int j = 0; j < switchGorup[i].MahjongCnt; j++)
                    {
                        if (mHuanData.HuanType == 0)
                        {
                            if (i < 2)
                            {
                                switchGorup[i].MahjongList[j].transform.SetParent(switchGorup.Group1);
                            }
                            else
                            {
                                switchGorup[i].MahjongList[j].transform.SetParent(switchGorup.Group2);
                            }
                        }
                        else
                        {
                            if (i == 1)
                            {
                                switchGorup[i].MahjongList[j].transform.SetParent(switchGorup.Group2);
                            }
                            else
                            {
                                switchGorup[i].MahjongList[j].transform.SetParent(switchGorup.Group1);
                            }
                        }
                    }
                }
            }
            Game.MahjongGroups.SwitchGorup.StartRotation(mHuanData.HuanType);
            if (mHuanCardTask == null)
            {
                mHuanCardTask = ContinueTaskManager.NewTask().AppendFuncTask(HuanCardTask);
            }
            mHuanCardTask.Start();
            //手牌记录
            DataCenter.Players.AddRecordMahjongs();
        }