public EventCommandSpawnNpc( FrmEvent eventEditor, MapBase currentMap, EventBase currentEvent, SpawnNpcCommand editingCommand ) { InitializeComponent(); mMyCommand = editingCommand; mEventEditor = eventEditor; mEditingEvent = currentEvent; mCurrentMap = currentMap; InitLocalization(); cmbNpc.Items.Clear(); cmbNpc.Items.AddRange(NpcBase.Names); cmbNpc.SelectedIndex = NpcBase.ListIndex(mMyCommand.NpcId); if (mMyCommand.MapId != Guid.Empty) { cmbConditionType.SelectedIndex = 0; } else { cmbConditionType.SelectedIndex = 1; } nudWarpX.Maximum = Options.MapWidth; nudWarpY.Maximum = Options.MapHeight; UpdateFormElements(); switch (cmbConditionType.SelectedIndex) { case 0: //Tile spawn //Fill in the map cmb nudWarpX.Value = mMyCommand.X; nudWarpY.Value = mMyCommand.Y; cmbDirection.SelectedIndex = mMyCommand.Dir; break; case 1: //On/Around Entity Spawn mSpawnX = mMyCommand.X; mSpawnY = mMyCommand.Y; chkDirRelative.Checked = Convert.ToBoolean(mMyCommand.Dir); UpdateSpawnPreview(); break; } }
/// <summary> /// 按照刷新表动态刷新场景活动单元 /// </summary> void RefreshCharacter() { while (true) { int refreshID = 100000 + ((int)mStageSystem.sceneID) * 10000 + mStageSystem.refreshIndex; CharacterRefreshPO characterRefreshPO = CharacterRefreshData.Instance.GetCharacterRefreshPO(refreshID); if (characterRefreshPO == null) { break; } if (characterRefreshPO.Stage != mLv) { break; } if (characterRefreshPO.AppeareTime > mStageTimer) { return; } CharacterBaseAttr baseAttr = FactoryManager.attrFactory.GetCharacterBaseAttr(characterRefreshPO.CharacterID); if (characterRefreshPO.Loop == 1) { LoopRefresh lr = new LoopRefresh(characterRefreshPO.CharacterID, baseAttr.name, baseAttr.characterType, characterRefreshPO); mLoopList.Add(lr); ++mStageSystem.refreshIndex; continue; } E_CharacterType characterType = baseAttr.characterType; switch (characterType) { case E_CharacterType.Player: ISpawnCommand command = new SpawnCharacterCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; case E_CharacterType.Map: command = new SpawnMapCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; case E_CharacterType.Citizen0: case E_CharacterType.Citizen1: case E_CharacterType.Citizen2: command = new SpawnCitizenCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; case E_CharacterType.Npc: for (int i = 0; i < characterRefreshPO.StepCount; ++i) { command = new SpawnNpcCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); } break; case E_CharacterType.SandBox: case E_CharacterType.Bucket: command = new SpawnPropCommand(baseAttr.id, characterRefreshPO, Vector3.zero); mCommands.Add(command); break; case E_CharacterType.BullDemonKing: command = new SpawnBullDemonKingCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; case E_CharacterType.AngerBear: command = new SpawnBearCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; case E_CharacterType.Wolf: command = new SpawnWolfCommand(baseAttr.id, characterRefreshPO); mCommands.Add(command); break; } ++mStageSystem.refreshIndex; } }
private static string GetCommandText(SpawnNpcCommand command, MapInstance map) { if (command == null) { return(null); } if (command.MapId != Guid.Empty) { foreach (var orderedMap in MapList.OrderedMaps) { if (orderedMap == null) { continue; } if (orderedMap.MapId == command.MapId) { return(Strings.EventCommandList.spawnnpc.ToString( NpcBase.GetName(command.NpcId), Strings.EventCommandList.spawnonmap.ToString( orderedMap.Name, command.X, command.Y, Strings.Directions.dir?[(sbyte)command.Dir] ) )); } } return(Strings.EventCommandList.spawnnpc.ToString( NpcBase.GetName(command.NpcId), Strings.EventCommandList.spawnonmap.ToString( Strings.EventCommandList.mapnotfound, command.X, command.Y, Strings.Directions.dir[command.Dir] ) )); } var retain = Strings.EventCommandList.False; //TODO: Possibly bugged -- test this. if (Convert.ToBoolean(command.Dir)) { retain = Strings.EventCommandList.True; } if (command.EntityId == Guid.Empty) { return(Strings.EventCommandList.spawnnpc.ToString( NpcBase.GetName(command.NpcId), Strings.EventCommandList.spawnonplayer.ToString(command.X, command.Y, retain) )); } if (map.LocalEvents.TryGetValue(command.EntityId, out var localEvent)) { return(Strings.EventCommandList.spawnnpc.ToString( NpcBase.GetName(command.NpcId), Strings.EventCommandList.spawnonevent.ToString(localEvent.Name, command.X, command.Y, retain) )); } return(Strings.EventCommandList.spawnnpc.ToString( NpcBase.GetName(command.NpcId), Strings.EventCommandList.spawnonevent.ToString( Strings.EventCommandList.deletedevent, command.X, command.Y, retain ) )); }