Пример #1
0
    public override void execute()
    {
        StartScene gameScene = (mReceiver) as StartScene;

        if (gameScene.atProcedure(PROCEDURE_TYPE.PT_START_SELECT_ROLE))
        {
            CharacterOther curRole = mRoleSystem.getSelectedRole();
            // 当前角色有SELECT_ROLE状态组,如果没有,则说明是第一次进入选人流程
            if (curRole != null && curRole.hasStateGroup(STATE_GROUP.SG_SELECT))
            {
                // 当前角色显示完毕时才能切换角色,也不能选择相同的角色
                if (!curRole.hasState(PLAYER_STATE.PS_SELECTED_ROLE) || mRoleSystem.getSelectedIndex() == mIndex)
                {
                    return;
                }
                // 取消当前角色的选中
                CommandCharacterAddState cmdUnSelect = newCmd(out cmdUnSelect);
                cmdUnSelect.mState = PLAYER_STATE.PS_UN_SELECT_ROLE;
                pushCommand(cmdUnSelect, curRole);
            }
            // 启动选择的角色
            mRoleSystem.setSelectedIndex(mIndex);
            CharacterOther character = mRoleSystem.getSelectedRole();
            if (character != null)
            {
                CommandCharacterAddState cmdSelect = newCmd(out cmdSelect);
                cmdSelect.mState = PLAYER_STATE.PS_ON_SELECT_ROLE;
                pushCommand(cmdSelect, character);
                // 通知布局
                mScriptSelectRole.selectRole(mIndex);
                if (mPlayAudio)
                {
                    GameTools.PLAY_AUDIO_UI(mScriptGlobalAudio.getAudioWindow(), SOUND_DEFINE.SD_SELECTION_CHANGE);
                }
            }
        }
    }