예제 #1
0
    public void update(float elapsedTime)
    {
        // 开始拿牌时,需要由麻将系统给玩家分发牌
        if (mPlayState == MAHJONG_PLAY_STATE.MPS_GET_START)
        {
            mCurInterval -= elapsedTime;
            // 从庄家开始发牌
            if (mCurInterval <= 0.0f)
            {
                mCurInterval = GameDefine.ASSIGN_MAHJONG_INTERVAL;
                Character curPlayer = mPlayerPositionList[mCurAssignPos];
                // 给玩家发牌
                CommandCharacterGetStart cmd = mCommandSystem.newCmd <CommandCharacterGetStart>();
                cmd.mMahjong = requestGet();
                mCommandSystem.pushCommand(cmd, curPlayer);

                bool isDone            = false;
                int  palyerHandInCount = curPlayer.getCharacterData().mHandIn.Count;
                // 如果是庄家,需要拿够14张牌
                if (mCurAssignPos == mBankerPos)
                {
                    isDone = (palyerHandInCount == GameDefine.MAX_HAND_IN_COUNT);
                }
                // 不是庄家则拿13张牌
                else
                {
                    isDone = (palyerHandInCount == GameDefine.MAX_HAND_IN_COUNT - 1);
                }
                // 牌拿完时需要重新排列
                if (isDone)
                {
                    CommandCharacterReorderMahjong cmdReorder = mCommandSystem.newCmd <CommandCharacterReorderMahjong>();
                    mCommandSystem.pushCommand(cmdReorder, curPlayer);

                    // 如果是庄家拿完了牌,则进入正常游戏流程
                    if (mCurAssignPos == mBankerPos)
                    {
                        CommandMahjongSceneNotifyStartDone cmdStartDone = mCommandSystem.newCmd <CommandMahjongSceneNotifyStartDone>();
                        mCommandSystem.pushCommand(cmdStartDone, mGameSceneManager.getCurScene());

                        // 通知玩家打出一张牌
                        CommandCharacterAskDrop cmdAskDrop = mCommandSystem.newCmd <CommandCharacterAskDrop>();
                        mCommandSystem.pushCommand(cmdAskDrop, curPlayer);
                        return;
                    }
                }
                mCurAssignPos = (PLAYER_POSITION)(((int)mCurAssignPos + 1) % (int)PLAYER_POSITION.PP_MAX);
            }
        }
    }
예제 #2
0
    public override void execute()
    {
        Character     character = (mReceiver) as Character;
        CharacterData data      = character.getCharacterData();

        character.showHua(mMah);

        ScriptMahjongHandIn handIn = mLayoutManager.getScript(LAYOUT_TYPE.LT_MAHJONG_HAND_IN) as ScriptMahjongHandIn;

        handIn.notifyShowHua(data.mPosition, mMah, mIndex);
        handIn.notifyShowHua(data.mPosition, data.mHuaList);

        // 打一张牌以后需要重新排列
        CommandCharacterReorderMahjong reorder = mCommandSystem.newCmd <CommandCharacterReorderMahjong>();

        mCommandSystem.pushCommand(reorder, character);
    }
예제 #3
0
    public override void execute()
    {
        Character character = (mReceiver) as Character;

        character.pengMahjong(mMahjong);

        // 从已经打出的牌中拿走已经碰的那张牌
        CommandCharacterTakeDrop cmdTakeDrop = mCommandSystem.newCmd <CommandCharacterTakeDrop>();

        mCommandSystem.pushCommand(cmdTakeDrop, mDroppedPlayer);

        CharacterData data = character.getCharacterData();
        // 通知布局
        ScriptMahjongHandIn handIn = mLayoutManager.getScript(LAYOUT_TYPE.LT_MAHJONG_HAND_IN) as ScriptMahjongHandIn;

        handIn.notifyPengOrGang(data.mPosition, data.mPengGangList);

        // 然后重新排列玩家手里的牌
        CommandCharacterReorderMahjong cmdReorder = mCommandSystem.newCmd <CommandCharacterReorderMahjong>();

        mCommandSystem.pushCommand(cmdReorder, character);
    }
예제 #4
0
    public override void execute()
    {
        CommandCharacterReorderMahjong cmd = mCommandSystem.newCmd <CommandCharacterReorderMahjong>();

        mCommandSystem.pushCommand(cmd, mCharacterManager.getCharacterByGUID(mPlayerGUID.mValue));
    }