public override void execute() { Character character = mReceiver as Character; CharacterOther player = character as CharacterOther; if (player == null) { return; } PlayerPack pack = player.getPlayerPack(); if (!pack.isFull()) { int itemIndex = pack.addItem(mItemType); // 如果获取道具的是玩家自己,通知游戏界面 if (player.isType(CHARACTER_TYPE.CT_MYSELF)) { mScriptProps.addProps(mItemType, itemIndex); GameTools.PLAY_AUDIO_UI(mScriptGlobalAudio.getAudioWindow(), SOUND_DEFINE.SD_GET_ITEM); } // 如果获取道具的是游戏中Al(直接使用游戏中的道具) else { CharacterControllerAI characterControllerAI = player.getFirstActiveComponent <CharacterControllerAI>(); characterControllerAI.notifyAIGetBoxItem(pack.getCurItem()); } } }
//------------------------------------------------------------------------------------------------------- protected void updateInfo(bool enable = true) { if (mPlayer == null) { return; } mState = new List <PLAYER_STATE>(mPlayer.getStateMachine().getStateList().Keys); mActiveComponentList.Clear(); Dictionary <string, GameComponent> allComponent = mPlayer.getAllComponent(); foreach (var item in allComponent) { if (item.Value.isActive()) { mActiveComponentList.Add(item.Value.getType().ToString()); } } mCenterOfMass = mPlayer.getRigidBody().centerOfMass; mSpeed = mCharacterData.mSpeed; mCircle = mCharacterData.mCircle; mCurWayPoint = mCharacterData.mCurWayPoint; mRunDistance = mCharacterData.mRunDistance; mTotalDistance = mCharacterData.mTotalDistance; mProcessKey = mPlayer.getProcessKey(); mProcessTurn = mPlayer.getProcessTurn(); mProcessExternalSpeed = mPlayer.getProcessExternalSpeed(); CharacterSpeedHardware hardwareSpeed = mPlayer.getFirstActiveComponent <CharacterSpeedHardware>(); if (hardwareSpeed != null) { mTargetSpeed = hardwareSpeed.getTargetSpeed(); } mActivedAnimationStateList.Clear(); mAllAnimationStateList.Clear(); if (enable) { foreach (var item in mAnimation) { AnimationState state = item as AnimationState; string info = "|" + state.name + "| |"; info += (state.enabled ? "enabled" : "disabled") + "| |"; info += "len:" + StringUtility.floatToString(state.length, 2) + "| |"; info += "spd:" + StringUtility.floatToString(state.speed, 2) + "| |"; info += "time:" + StringUtility.floatToString(state.time, 2) + "| |"; info += "weight:" + StringUtility.floatToString(state.weight, 2) + "| |"; info += state.wrapMode + "|"; mAllAnimationStateList.Add(info); if (state.enabled) { mActivedAnimationStateList.Add(info); } } } }