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;
            }
        }
Ejemplo n.º 2
0
    /// <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;
        }
    }
Ejemplo n.º 3
0
        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
                           )
                       ));
        }