diff --git a/Adventure Game/adventure_game/Handler.py b/Adventure Game/adventure_game/Handler.py index 4e3b727..0a91c26 100644 --- a/Adventure Game/adventure_game/Handler.py +++ b/Adventure Game/adventure_game/Handler.py @@ -80,12 +80,12 @@ class Handler(npyscreen.ButtonPress): elif command == 'PICK': try: if arguments[0] == 'UP': - if len( - arguments) <= 2: # If there are only 2 args ex:up, item then we dont need to merge that last arg + if len(arguments) <= 2: # If there are only 2 args ex:up, item then we dont need to merge that last arg try: # Argument[1] is the "thing" you want to pick up, yaml is lowercase so we lowercase it. self.parent.parentApp.log.info('Player tried to pick up {0}'.format(arguments[1])) self.parent.update_log(room[arguments[1].lower()]['pick_up']) + player.add_inventory(room[arguments[1].lower()]['item_name']) except KeyError: self.parent.update_log("You cant pick that up.") else: # if its a longer list of args, the player prolly wants to pick up an item with multiple words, like hand_axe, or log_viewer @@ -93,6 +93,7 @@ class Handler(npyscreen.ButtonPress): long_arg = '_'.join(arguments[1:]) # Joins whatever comes after 1 in our args with '_' between self.parent.parentApp.log.info('Player tried to pick up long object {0}'.format(long_arg)) self.parent.update_log(room[long_arg.lower()]['pick_up']) + player.add_inventory(room[long_arg.lower()]['item_name']) except KeyError: self.parent.update_log("You cant pick that up.") except IndexError: @@ -109,7 +110,16 @@ class Handler(npyscreen.ButtonPress): except KeyError: self.parent.update_log("You cant open that.") except IndexError: - self.parent.update_log("you must specify something to open") + self.parent.update_log("You must specify something to open") + + elif command == 'INSPECT': + try: + self.parent.parentApp.log.info('Player inspecting: {0}'.format(arguments[0])) + self.parent.update_log(room[arguments[0].lower()]['inspect']) # Prints the inspect text, if it exists + except KeyError: + self.parent.update_log("Nothing more to inspect here.") + except IndexError: + self.parent.update_log("You must specify something to inspect.") else: self.parent.parentApp.log.info('Player\'s command was not understood: {0}'.format(command)) diff --git a/Adventure Game/adventure_game/Player.py b/Adventure Game/adventure_game/Player.py index fb5085d..c18f37b 100644 --- a/Adventure Game/adventure_game/Player.py +++ b/Adventure Game/adventure_game/Player.py @@ -1,4 +1,5 @@ from yaml_parser import parse_datafile as parse +from errors import ItemAlreadyTaken class Player: @@ -22,3 +23,12 @@ class Player: room = self.playerData['player']['location'] return parse('adventure_game/gamedata/world/' + room)['room']['upon_enter'] + + def add_inventory(self, item): + if item in self.playerData['player']['inventory']: + raise ItemAlreadyTaken + else: + self.playerData['player']['inventory'].append(item) + + def remove_inventory(self, item): + pass \ No newline at end of file diff --git a/Adventure Game/adventure_game/gamedata/world/office.yaml b/Adventure Game/adventure_game/gamedata/world/office.yaml index 2848ef4..e0a960a 100644 --- a/Adventure Game/adventure_game/gamedata/world/office.yaml +++ b/Adventure Game/adventure_game/gamedata/world/office.yaml @@ -10,7 +10,7 @@ room: look_at: "The bookshelf is a bookshelf." inspect: "Its still a bookshelf." log_viewer: - item: yes + item_name: "Log Viewer" look_at: "The log viewer is a small piece of ornate code, allowing you to examine |entities| more closely." inspect: "The dials are wiggly and the viewer makes Beep Boop sounds sometimes." pick_up: "You pick up the *LOG VIEWER*."