From cfd7d244ca8064028cc7fd961a887c5a5173856f Mon Sep 17 00:00:00 2001 From: mollusk Date: Wed, 3 Jun 2020 02:08:28 -0700 Subject: [PATCH] Separate files, add backpack collection proc --- src/geedren_mansion.nim | 71 +++++++++------------------ src/geedren_mansionpkg/characters.nim | 18 +++++++ src/geedren_mansionpkg/items.nim | 9 ++++ src/geedren_mansionpkg/objects.nim | 21 +++++++- src/geedren_mansionpkg/procs.nim | 15 ++++++ src/geedren_mansionpkg/rooms.nim | 39 +++++++++++++++ 6 files changed, 125 insertions(+), 48 deletions(-) create mode 100644 src/geedren_mansionpkg/characters.nim create mode 100644 src/geedren_mansionpkg/items.nim create mode 100644 src/geedren_mansionpkg/procs.nim create mode 100644 src/geedren_mansionpkg/rooms.nim diff --git a/src/geedren_mansion.nim b/src/geedren_mansion.nim index 8099940..0de55b4 100644 --- a/src/geedren_mansion.nim +++ b/src/geedren_mansion.nim @@ -1,67 +1,44 @@ # This is just an example to get you started. A typical hybrid package # uses this file as the main entry point of the application. -import geedren_mansionpkg/objects -import strformat +import + # package imports + geedren_mansionpkg/objects, + geedren_mansionpkg/rooms, + geedren_mansionpkg/items, + geedren_mansionpkg/characters, + # Language imports + strformat when isMainModule: - var phone = Item( - name: "Phone", - description: "Communication device/ pocket computer" - ) - - var player = Character( - name: "Sam", - backpack: @[phone] - ) - -# Room 1 of mansion - -proc foyer_room() = - - var foyer = Room( - name: "Foyer", - description: "Entrance Hall of the Geedren Mansion", - text: """ - zdsfgzdfg - """, - secrets: 2 - ) - var desk = Item( - name: "Desk", - description: "A small wooden desk", - contents: "key" - ) - echo foyer.text + proc title_screen() = + echo fmt""" + Welcome to Geedren Mansion. You are {player.name}, a capable 24 year old adventurer. + Your uncle Rob has been missing for 10 years. He went hunting for the secrets and treasure rumored to + be hidden deep within the walls of the mysterious Geedren Mansion. Now that you are of age and have + trained in adventuring, you have decided to find your uncle. Your mission is dangerous as many men + have gone missing with the mansion being their last known whereabouts. The door is unlocked and you + walk right in the doors of the massive mansion. -proc title_screen() = - echo fmt""" - Welcome to Geedren Mansion. You are {player.name}, a capable 24 year old adventurer. - Your uncle Rob has been missing for 10 years. He went hunting for the secrets and treasure rumored to - be hidden deep within the walls of the mysterious Geedren Mansion. Now that you are of age and have - trained in adventuring, you have decided to find your uncle. Your mission is dangerous as many men - have gone missing with the mansion being their last known whereabouts. The door is unlocked and you - walk right in the doors of the massive mansion. + """ - """ + stdout.write("Press 1 to contnue: ") + var choice = stdin.readLine() - stdout.write("Press 1 to contnue: ") - var choice = stdin.readLine() - - if choice == "1": - foyer_room(foyer) - else: - echo "You pressed the wrong key!" + if choice == "1": + foyer_room(player) + else: + echo "You pressed the wrong key!" -title_screen() + title_screen() diff --git a/src/geedren_mansionpkg/characters.nim b/src/geedren_mansionpkg/characters.nim new file mode 100644 index 0000000..dfe9fcb --- /dev/null +++ b/src/geedren_mansionpkg/characters.nim @@ -0,0 +1,18 @@ +import + objects, + items + + +var curDirect*: Direct +curDirect = up + +var + + + + player* = Character( + name: "Sam", + backpack: @[phone], + placesVisited: @[], + currentDirection: curDirect + ) \ No newline at end of file diff --git a/src/geedren_mansionpkg/items.nim b/src/geedren_mansionpkg/items.nim new file mode 100644 index 0000000..b3f018f --- /dev/null +++ b/src/geedren_mansionpkg/items.nim @@ -0,0 +1,9 @@ +import + objects + + +var + phone* = Item( + name: "Phone", + description: "Communication device" + ) \ No newline at end of file diff --git a/src/geedren_mansionpkg/objects.nim b/src/geedren_mansionpkg/objects.nim index 002566e..2c7b3fa 100644 --- a/src/geedren_mansionpkg/objects.nim +++ b/src/geedren_mansionpkg/objects.nim @@ -1,22 +1,41 @@ type + + Direct* = enum + up, down, left, right + Item* = object name*: string description*: string - contents*: string Character* = object name*: string backpack*: seq[Item] + placesVisited*: seq[string] + currentDirection*: Direct Secret* = object + name*: string description*: string found*: bool + + Dialog* = object + text*: string + priority*: int + kind*: string + + + Room* = object name*: string description*: string text*: string secrets*: int + + Container* = object + name*: string + description*: string + contents*: seq[Item] \ No newline at end of file diff --git a/src/geedren_mansionpkg/procs.nim b/src/geedren_mansionpkg/procs.nim new file mode 100644 index 0000000..00ac356 --- /dev/null +++ b/src/geedren_mansionpkg/procs.nim @@ -0,0 +1,15 @@ +import + strformat, + sequtils, + objects + + +proc addToBackpack*(player: Character , container: Container): seq[Item] = + + var player = player + echo(fmt"Adding contents of {container.name} to backpack") + for b in container.contents: + player.backpack.add(b) + return player.backpack + + diff --git a/src/geedren_mansionpkg/rooms.nim b/src/geedren_mansionpkg/rooms.nim new file mode 100644 index 0000000..8692950 --- /dev/null +++ b/src/geedren_mansionpkg/rooms.nim @@ -0,0 +1,39 @@ +import + objects, + characters, + items, + procs, + strformat + +proc foyer_room*(player: Character) = + + var + player = player + + foyer = Room( + name: "Foyer", + description: "Entrance Hall of the Geedren Mansion", + text: "", + secrets: 2 + ) + + cathDoorKey = Item( + name: "Cathedral Door Key", + description: "This key opens the door to the cathedral" + ) + + desk = Container( + name: "Desk", + description: "A small wooden desk", + contents: @[cathDoorKey] + ) +#[ + player.placesVisited.add(foyer.name) + + player.backpack.add(desk.contents) + + for backpack in player.backpack: + echo(fmt"{backpack.name}: {backpack.description}") +]# + + discard addToBackpack(player, desk) \ No newline at end of file