コード例 #1
0
        internal static void HandleDefaultSave(uint itemID, Room room)
        {
            RoomItem item = room.GetRoomItemHandler().GetItem(itemID);

            if (item == null)
            {
                return;
            }

            InteractionType type = item.GetBaseItem().InteractionType;

            switch (type)
            {
            case InteractionType.actiongivescore:
            {
                int points = 0;
                int games  = 0;

                IWiredTrigger action = new GiveScore(games, points, room.GetGameManager(), itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actionmoverotate:
            {
                MovementState movement = MovementState.none;
                RotationState rotation = RotationState.none;

                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger action = new MoveRotate(movement, rotation, items, delay, room, room.GetWiredHandler(), itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actionposreset:
            {
                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger action = new PositionReset(items, delay, room.GetRoomItemHandler(), room.GetWiredHandler(), itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actionresettimer:
            {
                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger action = new TimerReset(room, room.GetWiredHandler(), items, delay, itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actionshowmessage:
            {
                string message = string.Empty;

                IWiredTrigger action = new ShowMessage(message, room.GetWiredHandler(), itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actionteleportto:
            {
                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger action = new TeleportToItem(room.GetGameMap(), room.GetWiredHandler(), items, delay, itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.actiontogglestate:
            {
                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger action = new ToggleItemState(room.GetGameMap(), room.GetWiredHandler(), items, delay, itemID);
                HandleTriggerSave(action, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.conditionfurnishaveusers:
            {
                break;
            }

            case InteractionType.conditionstatepos:
            {
                break;
            }

            case InteractionType.conditiontimelessthan:
            {
                break;
            }

            case InteractionType.conditiontimemorethan:
            {
                break;
            }

            case InteractionType.conditiontriggeronfurni:
            {
                break;
            }

            case InteractionType.specialrandom:
            {
                break;
            }

            case InteractionType.specialunseen:
            {
                break;
            }

            case InteractionType.triggergameend:
            {
                IWiredTrigger handler = new GameEnds(item, room.GetWiredHandler(), room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggergamestart:
            {
                IWiredTrigger handler = new GameStarts(item, room.GetWiredHandler(), room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggeronusersay:
            {
                bool   isOnlyOwner = false;
                string message     = string.Empty;

                IWiredTrigger handler = new UserSays(item, room.GetWiredHandler(), !isOnlyOwner, message, room);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggerrepeater:
            {
                int cycleTimes = 0;

                IWiredTrigger handler = new Repeater(room.GetWiredHandler(), item, cycleTimes);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggerroomenter:
            {
                string users = string.Empty;

                IWiredTrigger handler = new EntersRoom(item, room.GetWiredHandler(), room.GetRoomUserManager(), !string.IsNullOrEmpty(users), users);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggerscoreachieved:
            {
                int score = 0;

                IWiredTrigger handler = new ScoreAchieved(item, room.GetWiredHandler(), score, room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggertimer:
            {
                int cycles = 0;

                IWiredTrigger handler = new Timer(item, room.GetWiredHandler(), cycles, room.GetGameManager());
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);
                break;
            }

            case InteractionType.triggerstatechanged:
            {
                List <RoomItem> items = new List <RoomItem>();
                int             delay = 0;

                IWiredTrigger handler = new SateChanged(room.GetWiredHandler(), item, items, delay);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);

                break;
            }

            case InteractionType.triggerwalkofffurni:
            {
                List <RoomItem> items = new List <RoomItem>();

                int delay = 0;

                IWiredTrigger handler = new WalksOffFurni(item, room.GetWiredHandler(), items, delay);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);

                break;
            }

            case InteractionType.triggerwalkonfurni:
            {
                List <RoomItem> items = new List <RoomItem>();

                int delay = 0;

                IWiredTrigger handler = new WalksOnFurni(item, room.GetWiredHandler(), items, delay);
                HandleTriggerSave(handler, room.GetWiredHandler(), room, itemID);

                break;
            }
            }
        }