Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  Inventory System  (Read 812 times)
0 Members and 1 Guest are viewing this topic.
Offline abirmingham

JGO n00b
*

Posts: 6



« on: 2009-04-26 12:21:38 »

Time to re-factor the old inventory system in my MUD to something a bit more principled. At the moment it is composed of two types of classes:

WearEvent, PutEvent, DropEvent, etc. etc. - Events which represent the movement of an Item from one location to another, at present these simply identify whether the target in question is visible/exists, and that it is an item. They then call methods inside of...
Inventory - A god-class with too many responsibilities. Contains enum Location for all locations an item can be worn/held. Used in a HashMap<Location, Item> which is manipulated through various methods that are extensions of the events mentioned above. EG: Inventory.drop(Item) etc. etc.

My primary issue is that in a text-based game you have to tell the player very specifically why the command they entered failed, whereas in a graphical game you can play an 'error beep' and trust that the player understands that he can't wear a health potion on his head. So what I have is error messages entrenched very far past the above-mentioned events, within Inventory itself: 'You are already wearing something in that location', 'You don't have enough room to carry that', 'Your hands are full,' etc.

Any suggestions? I could just re-factor all logic and accompanying error messages into the events themselves, or create intermediary events which handle secondary logic beyond type-checking, but in either case I can't help but feel like I'm missing out on a more elegant, principled solution. This one is very seriously programmed to an implementation, as opposed to an interface.
Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.096 seconds with 20 queries.