From: Astrid S. <ast...@us...> - 2007-03-03 15:35:11
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/client/entity In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv27464/src/games/stendhal/client/entity Modified Files: EntityMap.java EntityFabric.java EntityFabricTest.java Log Message: EntityMap uses Class.ForName(String) now to determine entity.class. still stores (Pair<String,String>,Class). Index: EntityFabricTest.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/entity/EntityFabricTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** EntityFabricTest.java 27 Feb 2007 20:54:24 -0000 1.3 --- EntityFabricTest.java 3 Mar 2007 15:35:05 -0000 1.4 *************** *** 12,43 **** public class EntityFabricTest { ! private class MockRPObject extends RPObject{ ! private String _type; ! private String _eclass; ! MockRPObject() { ! ! } ! MockRPObject(String type, String eclass) { ! _type = type; ! _eclass=eclass; ! } ! @Override ! public boolean has(String attribute) { ! ! return true; ! } - @Override - public String get(String attribute) throws AttributeNotFoundException { - if (attribute.equals("type")) { - return _type; - } else { - return _eclass; } ! } ! ! } @BeforeClass public static void setUpBeforeClass() throws Exception { --- 12,60 ---- public class EntityFabricTest { ! private class MockRPObject extends RPObject { ! private String _type; ! private String _eclass; ! ! private String _subclass; ! ! MockRPObject() { } ! ! MockRPObject(String type, String eclass) { ! _type = type; ! _eclass = eclass; ! } ! ! public MockRPObject(String type, String eclass, String subclass) { ! _type = type; ! _eclass = eclass; ! _subclass= subclass; ! } ! ! @Override ! public boolean has(String attribute) { ! if (attribute.equals("subtype")) ! return _subclass==null; ! return true; ! } ! ! @Override ! public String get(String attribute) throws AttributeNotFoundException { ! if (attribute.equals("type")) { ! return _type; ! } else if(attribute.equals("class")){ ! return _eclass; ! } ! else {//if (attribute.equals("subtype")){ ! return _subclass; ! } ! ! ! } ! } ! @BeforeClass public static void setUpBeforeClass() throws Exception { *************** *** 50,61 **** @Test ! public final void testCreateEntity() { ! RPObject rp = new MockRPObject("item","food"); ! Entity en=EntityFabric.createEntity(rp); ! assertNotNull("entity should be created",en); ! assertEquals("we should have created an item by now","item", en.getType() ); ! } } --- 67,86 ---- @Test ! public final void testCreateApple() { ! RPObject rp = new MockRPObject("item", "food","apple"); ! Entity en = EntityFabric.createEntity(rp); ! assertNotNull("entity should be created", en); ! assertEquals("we should have created an item by now", "item", en ! .getType()); } + @Test + public final void testCreateSign() { + RPObject rp = new MockRPObject("blackboard", null); + Entity en = EntityFabric.createEntity(rp); + assertNotNull("entity should be created", en); + assertEquals("we should have created a sign by now", Sign.class, en.getClass()); + } + } Index: EntityMap.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/entity/EntityMap.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EntityMap.java 17 Feb 2007 13:38:52 -0000 1.1 --- EntityMap.java 3 Mar 2007 15:35:05 -0000 1.2 *************** *** 30,34 **** static { entityMap = new HashMap<Pair<String, String>, Class>(); ! register(); } --- 30,39 ---- static { entityMap = new HashMap<Pair<String, String>, Class>(); ! try { ! register(); ! } catch (ClassNotFoundException e) { ! // TODO Auto-generated catch block ! e.printStackTrace(); ! } } *************** *** 36,80 **** * fills EntityMap with initial values */ ! private static void register() { ! register("player", null, Player.class); ! register("creature", "small_animal", SmallCreature.class); ! register("creature", "giant_animal", BigCreature.class); ! register("creature", "huge_animal", HugeCreature.class); ! register("creature", "mythical_animal", MythicalCreature.class); ! register("creature", null, NormalCreature.class); ! register("sheep", null, Sheep.class); ! register("npc", null, NPC.class); ! register("plant_grower", null, PlantGrower.class); ! register("growing_entity_spawner", null, GrainField.class); ! register("grain_field", null, GrainField.class); // compatibility with server <= 0.56 ! register("food", null, SheepFood.class); ! register("chest", null, Chest.class); ! register("corpse", null, Corpse.class); ! register("blood", null, Blood.class); ! register("sign", null, Sign.class); ! register("blackboard", null, Sign.class); ! register("item", null, Item.class); ! register("item", "book", MiscItem.class); ! register("item", "drink", StackableItem.class); ! register("item", "food", StackableItem.class); ! register("item", "herb", MiscItem.class); ! register("item", "key", MiscItem.class); ! register("item", "money", StackableItem.class); ! register("item", "projectiles", StackableItem.class); ! register("item", "resource", StackableItem.class); ! register("item", "scroll", StackableItem.class); ! register("portal", null, Portal.class); ! register("door", null, Door.class); } ! /** * @param type * the type of the entity to be created, such as Item, creature --- 41,85 ---- * fills EntityMap with initial values */ ! private static void register() throws ClassNotFoundException { ! register("player", null, "Player"); ! register("creature", "small_animal", "SmallCreature"); ! register("creature", "giant_animal", "BigCreature"); ! register("creature", "huge_animal", "HugeCreature"); ! register("creature", "mythical_animal", "MythicalCreature"); ! register("creature", null, "NormalCreature"); ! register("sheep", null, "Sheep"); ! register("npc", null, "NPC"); ! register("plant_grower", null, "PlantGrower"); ! register("growing_entity_spawner", null, "GrainField"); ! register("grain_field", null, "GrainField"); // compatibility with server <= 0.56 ! register("food", null, "SheepFood"); ! register("chest", null, "Chest"); ! register("corpse", null, "Corpse"); ! register("blood", null, "Blood"); ! register("sign", null, "Sign"); ! register("blackboard", null, "Sign"); ! register("item", null, "Item"); ! register("item", "book", "MiscItem"); ! register("item", "drink", "StackableItem"); ! register("item", "food", "StackableItem"); ! register("item", "herb", "MiscItem"); ! register("item", "key", "MiscItem"); ! register("item", "money", "StackableItem"); ! register("item", "projectiles", "StackableItem"); ! register("item", "resource", "StackableItem"); ! register("item", "scroll", "StackableItem"); ! register("portal", null, "Portal"); ! register("door", null, "Door"); } ! /** * @param type * the type of the entity to be created, such as Item, creature *************** *** 85,90 **** * the java class of the Entity */ ! private static void register(String type, String eclass, Class entityClass) { ! entityMap.put(new Pair<String, String>(type, eclass), entityClass); } --- 90,96 ---- * the java class of the Entity */ ! private static void register(String type, String eclass, String entityClass) throws ClassNotFoundException { ! entityClass="games.stendhal.client.entity."+ entityClass; ! entityMap.put(new Pair<String, String>(type, eclass), Class.forName(entityClass)); } *************** *** 101,104 **** --- 107,112 ---- return entityMap.get(new Pair<String, String>(type, eclass)); } + + } Index: EntityFabric.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/client/entity/EntityFabric.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** EntityFabric.java 25 Feb 2007 13:31:46 -0000 1.5 --- EntityFabric.java 3 Mar 2007 15:35:05 -0000 1.6 *************** *** 48,51 **** --- 48,52 ---- java.lang.reflect.Constructor constr = entityClass.getConstructor( RPObject.class); + return (Entity) constr.newInstance( object); } catch (Exception e) { |