예제 #1
0
    /// <summary>
    /// Checks if the command is a player command and calls appropriate methods. Returns false if unsuccessful.
    /// </summary>
    /// <param name="command"></param>
    /// <param name="input"></param>
    /// <returns>Returns true if successful</returns>
    private bool parsePlayerCommands(string command, string input)
    {
        bool successFlag = true;

        switch (command)
        {
        case "inv":
        case "inventar":
        case "i":
            player.openInventory();
            break;

        case "denke":
        case "denk":
        case "look":
        case "gedanken":
        case "denk nach":
            if (input.Split(' ').Length != 1)
            {
                successFlag = false;
                break;
            }
            roomTracker.printCurrentLookText();
            break;

        case "gehe zu":
        case "gehe":
        case "go":
        case null:
        case "":
            roomTracker.changeRoomViaRoomConnection(input);
            break;

        case "hilfe":
        case "help":
            textPrompt.printText(defaultValues.HelpText);
            //returns to current Room
            textPrompt.printText(". \n");
            roomTracker.forceChangeRoom(roomTracker.getCurrentRoom());
            break;

        // Fluff/secret commands
        case "die":
        case "stirb":
            textPrompt.printText("\"SCHLAGANFALL\"\n Gehirnschlag, Hirnschlag\n eine plötzlich eintretende, meist mit  Bewußtlosigkeit und Lähmungen einhergende  Ausschaltung von mehr oder minder großen Hirnteilen. S. trifft meist ein durc Bersten eines Hirngefäßes (Gehirnblutung) infolge arterioskletischer Schädigung seiner Wand.");
            textPrompt.printText("\nDas Dorf steht unberührt.\nAlles in allem ein grünes Tal.");
            textPrompt.killPlayer();
            break;

        // bei Eingabe ohne vorausgehenden Befehl versucht das Spiel einen Raum zu betreten z.B. "Ja"
        default:
            //roomTracker.changeRoomViaRoomConnection(input);
            successFlag = false;
            break;
        }

        return(successFlag);
    }
예제 #2
0
    /// <summary>
    /// Checks if the command is a player command and calls appropriate methods. Returns false if unsuccessful.
    /// </summary>
    /// <param name="command"></param>
    /// <param name="input"></param>
    /// <returns>Returns true if successful</returns>
    private bool parsePlayerCommands(string command, string input)
    {
        bool successFlag = true;

        switch (command)
        {
        case "inv":
        case "inventory":
        case "i":
            player.openInventory();
            break;

        case "look":
            if (input.Split(' ').Length != 1)
            {
                successFlag = false;
                break;
            }
            roomTracker.printCurrentLookText();
            break;

        case "move":
        case "go":
            roomTracker.changeRoomViaRoomConnection(input);
            break;

        case "help":
            textPrompt.printText(defaultValues.HelpText);
            break;

        // Fluff/secret commands
        case "die":
            textPrompt.printText("\"Eh, guess I'll die\". You suffocate yourself to death. Not sure why you'd want to do that.");
            textPrompt.killPlayer();
            break;

        default:
            successFlag = false;
            break;
        }

        return(successFlag);
    }
예제 #3
0
    /// <summary>
    /// Execute one action.
    /// </summary>
    /// <param name="obj">The parent object</param>
    /// <param name="action">The action to execute</param>
    public void executeOneAction(Object obj, RoomObject.EditorVariables action)
    {
        // executeActions happens twice. Once to execute the actions normally, and once to execute delayed actions.
        // This method happens the first time, to add the actions marked as delayed to delayedActions.
        if (checkDelayed)
        {
            if (action.isDelayed)
            {
                delayedActions.Add(action);
                return;
            }
        }

        RoomObject.ActionCategory category = action.actionCategory;

        // Execute player actions
        if (category == RoomObject.ActionCategory.PlayerActions)
        {
            RoomObject.PlayerAction playerAction = action.playerAction;

            RoomObject targetObject = action.varsToChange.targetObject;

            switch (playerAction)
            {
            case RoomObject.PlayerAction.KillPlayer:
                textPrompt.killPlayer();
                // The delay for printText is so the flavor text is printed first before death/win text.
                StartCoroutine(textPrompt.printTextAfterDelay(defaultValues.deathText, 0.1f));
                break;

            case RoomObject.PlayerAction.WinGame:
                textPrompt.winGame();
                // The delay for printText is so the flavor text is printed first before death/win text.
                StartCoroutine(textPrompt.printTextAfterDelay(defaultValues.winText, 0.1f));
                break;

            case RoomObject.PlayerAction.AddToInventory:
                player.addItemToInventory(targetObject);
                break;

            case RoomObject.PlayerAction.RemoveFromInventory:
                player.removeItemFromInventory(targetObject);
                break;

            case RoomObject.PlayerAction.EquipItem:
                player.equipItem(targetObject);
                break;

            case RoomObject.PlayerAction.RemoveEquippedItem:
                player.removeEquippedItem(targetObject);
                break;

            default:
                Debug.Log($"Unknown PlayerAction enum at {obj.name}: you forgot to add what to do in ActionHandler!");
                break;
            }
        }
        else if (category == RoomObject.ActionCategory.ObjectActions)
        {
            RoomObject.ObjectAction objectAction = action.objectAction;

            RoomObject targetObject = action.varsToChange.targetObject;

            if (targetObject == null)
            {
                Debug.Log($"{obj.name}: There's an object that wasn't set in an action");
                return;
            }

            // Execute object actions
            switch (objectAction)
            {
            case RoomObject.ObjectAction.DestroyObject:
                player.removeItemFromInventory(targetObject);
                player.removeEquippedItem(targetObject);
                roomTracker.getCurrentRoom().removeRoomObject(targetObject);
                break;

            case RoomObject.ObjectAction.SetIsEdible:
                targetObject.runtimeIsEdible = action.varsToChange.isEdible;
                break;

            case RoomObject.ObjectAction.SetIsDrinkable:
                targetObject.runtimeIsDrinkable = action.varsToChange.isDrinkable;
                break;

            case RoomObject.ObjectAction.SetIsTalkable:
                targetObject.runtimeIsTalkable = action.varsToChange.isTalkable;
                break;

            case RoomObject.ObjectAction.SetIsKillable:
                targetObject.runtimeIsKillable = action.varsToChange.isKillable;
                break;

            case RoomObject.ObjectAction.SetIsBreakable:
                targetObject.runtimeIsBreakable = action.varsToChange.isBreakable;
                break;

            case RoomObject.ObjectAction.SetIsSittable:
                targetObject.runtimeIsSittable = action.varsToChange.isSittable;
                break;

            case RoomObject.ObjectAction.SetIsUsable:
                targetObject.runtimeIsUsable = action.varsToChange.isUsable;
                break;

            case RoomObject.ObjectAction.SetIsPickupable:
                targetObject.runtimeIsPickupable = action.varsToChange.isPickupable;
                break;

            case RoomObject.ObjectAction.SetIsWearable:
                targetObject.runtimeIsWearable = action.varsToChange.isWearable;
                break;

            case RoomObject.ObjectAction.SetIsOpenable:
                targetObject.runtimeIsOpenable = action.varsToChange.isOpenable;
                break;


            case RoomObject.ObjectAction.ChangeEdibleFlavorText:
                targetObject.runtimeEdibleFlavorText = action.varsToChange.edibleFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeDrinkableFlavorText:
                targetObject.runtimeDrinkableFlavorText = action.varsToChange.drinkableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeKillableFlavorText:
                targetObject.runtimeKillableFlavorText = action.varsToChange.killableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeBreakableFlavorText:
                targetObject.runtimeBreakableFlavorText = action.varsToChange.breakableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangePickupableFlavorText:
                targetObject.runtimePickupableFlavorText = action.varsToChange.pickupableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeSittableFlavorText:
                targetObject.runtimeSittableFlavorText = action.varsToChange.sittableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeTalkableFlavorText:
                targetObject.runtimeTalkableFlavorText = action.varsToChange.talkableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeUsableFlavorText:
                targetObject.runtimeUsableFlavorText = action.varsToChange.usableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeWearableFlavorText:
                targetObject.runtimeWearableFlavorText = action.varsToChange.wearableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeOpenableFlavorText:
                targetObject.runtimeOpenableFlavorText = action.varsToChange.openableFlavorText;
                break;

            case RoomObject.ObjectAction.ChangeLookAtFlavorText:
                targetObject.runtimeLookAtFlavorText = action.varsToChange.lookAtFlavorText;
                break;

            default:
                Debug.Log($"Unknown ObjectAction enum at {obj.name}: you forgot to add what to do in ActionHandler!");
                break;
            }
        }
        else if (category == RoomObject.ActionCategory.RoomActions)
        {
            RoomObject.RoomAction roomAction = action.roomAction;
            Room targetRoom = action.varsToChange.targetRoom;

            switch (roomAction)
            {
            case RoomObject.RoomAction.AddObjectToRoom:
                if (action.varsToChange.targetObject.isInitialized == false)
                {
                    action.varsToChange.targetObject.initializeRuntimeVariables();
                }
                roomTracker.getCurrentRoom().addRoomObject(action.varsToChange.targetObject);
                break;

            case RoomObject.RoomAction.RemoveObjectFromRoom:
                roomTracker.getCurrentRoom().removeRoomObject(action.varsToChange.targetObject);
                break;

            case RoomObject.RoomAction.SwitchRooms:
                roomTracker.forceChangeRoom(action.varsToChange.targetRoom);
                break;

            case RoomObject.RoomAction.ChangeRoomEntryText:
                targetRoom.runtimeRoomEntryText = action.varsToChange.roomEntryText;
                break;

            case RoomObject.RoomAction.ChangeRoomLookText:
                targetRoom.runtimeLookText = action.varsToChange.roomLookText;
                break;

            case RoomObject.RoomAction.ActivateRoomConnection:
                setActiveRoomConnection(action.varsToChange.targetRoom, action.varsToChange.targetRoomConnection, true);
                break;

            case RoomObject.RoomAction.DisableRoomConnection:
                setActiveRoomConnection(action.varsToChange.targetRoom, action.varsToChange.targetRoomConnection, false);
                break;

            default:
                Debug.Log($"Unknown RoomAction enum at {obj.name}: you forgot to add what to do in ActionHandler!");
                break;
            }
        }
    }