From: Hendrik <nh...@us...> - 2007-01-16 19:54:38
|
Update of /cvsroot/arianne/stendhal/src/games/stendhal/server/entity/spawner In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv1867/src/games/stendhal/server/entity/spawner Modified Files: GrainField.java Added Files: GrowingPassiveEntityRespawnPoint.java Log Message: splitte a GrowingPassiveEntityRespawnPoint out of GrainField because that can be used for wood and carotts as well Index: GrainField.java =================================================================== RCS file: /cvsroot/arianne/stendhal/src/games/stendhal/server/entity/spawner/GrainField.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** GrainField.java 16 Jan 2007 19:26:27 -0000 1.1 --- GrainField.java 16 Jan 2007 19:54:28 -0000 1.2 *************** *** 13,23 **** package games.stendhal.server.entity.spawner; - import java.awt.geom.Rectangle2D; - import games.stendhal.server.StendhalRPWorld; import games.stendhal.server.entity.RPEntity; import games.stendhal.server.entity.item.Item; import games.stendhal.server.entity.player.Player; - import games.stendhal.server.events.TurnNotifier; import games.stendhal.server.events.UseListener; import marauroa.common.game.AttributeNotFoundException; --- 13,20 ---- *************** *** 32,44 **** * @author daniel */ ! public class GrainField extends PassiveEntityRespawnPoint implements UseListener { ! ! /** How long it takes for one regrowing step */ ! private static final int GROWING_RATE = 3000; ! /** How many regrowing steps are needed before one can harvest again */ public static final int RIPE = 5; - - private int ripeness; public static void generateRPClass() { --- 29,36 ---- * @author daniel */ ! public class GrainField extends GrowingPassiveEntityRespawnPoint implements UseListener { ! /** How many regrowing steps are needed before one can harvest again */ public static final int RIPE = 5; public static void generateRPClass() { *************** *** 51,96 **** } - private void init() { - put("type", "grain_field"); - put("max_ripeness", 5); - put("width", 1); - put("height", 2); - } - public GrainField(RPObject object) throws AttributeNotFoundException { ! super(object, null, GROWING_RATE); ! init(); update(); } public GrainField() throws AttributeNotFoundException { ! super(null, GROWING_RATE); ! init(); ! } ! ! @Override ! public void update() { ! super.update(); ! if (has("ripeness")) { ! ripeness = getInt("ripeness"); ! } ! } ! ! private void setRipeness(int ripeness) { ! this.ripeness = ripeness; ! put("ripeness", ripeness); ! } ! ! private int getRipeness() { ! return ripeness; ! } ! ! @Override ! protected void growNewFruit() { ! setRipeness(ripeness + 1); ! if (ripeness < RIPE) { ! TurnNotifier.get().notifyInTurns(getRandomTurnsForRegrow(), this, null); ! } ! notifyWorldAboutChanges(); } --- 43,53 ---- } public GrainField(RPObject object) throws AttributeNotFoundException { ! super(object, "grain_field", RIPE, 1, 2); update(); } public GrainField() throws AttributeNotFoundException { ! super("grain_field", RIPE, 1, 2); } *************** *** 111,119 **** return text; } - - @Override - public void getArea(Rectangle2D rect, double x, double y) { - rect.setRect(x, y + 1, 1, 1); - } /** --- 68,71 ---- *************** *** 135,152 **** } } - - @Override - public void onFruitPicked(Item picked) { - super.onFruitPicked(picked); - setRipeness(0); - notifyWorldAboutChanges(); - } - - @Override - public void setToFullGrowth() { - setRipeness(RIPE); - // don't grow anything new until someone harvests - TurnNotifier.get().dontNotify(this, null); - } } --- 87,90 ---- --- NEW FILE: GrowingPassiveEntityRespawnPoint.java --- /* $Id: GrowingPassiveEntityRespawnPoint.java,v 1.1 2007/01/16 19:54:28 nhnb Exp $ */ /*************************************************************************** * (C) Copyright 2003 - Marauroa * *************************************************************************** *************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ package games.stendhal.server.entity.spawner; import games.stendhal.server.entity.item.Item; import games.stendhal.server.events.TurnNotifier; import games.stendhal.server.events.UseListener; import java.awt.geom.Rectangle2D; import marauroa.common.game.RPClass; import marauroa.common.game.RPObject; /** * This respwan point has to be "used" to get the item. After that, * it will slowly regrow; there are several regrowing * steps in which the graphics will change to show the progress. * * @author daniel, hendrik */ public abstract class GrowingPassiveEntityRespawnPoint extends PassiveEntityRespawnPoint { /** How long it takes for one regrowing step */ private static final int GROWING_RATE = 3000; private int ripeness; private int maxRipeness; public static void generateRPClass() { RPClass grainFieldClass = new RPClass("grain_field"); grainFieldClass.isA("plant_grower"); grainFieldClass.add("ripeness", RPClass.BYTE); grainFieldClass.add("max_ripeness", RPClass.BYTE); grainFieldClass.add("width", RPClass.BYTE); grainFieldClass.add("height", RPClass.BYTE); } private void init(String type, int maxRipeness, int width, int height) { this.maxRipeness = maxRipeness; put("type", type); put("max_ripeness", maxRipeness); put("width", width); put("height", height); } public GrowingPassiveEntityRespawnPoint(RPObject object, String type, int maxRipeness, int width, int height) { super(object, null, GROWING_RATE); init(type, maxRipeness, width, height); update(); } public GrowingPassiveEntityRespawnPoint(String type, int maxRipeness, int width, int height) { super(null, GROWING_RATE); init(type, maxRipeness, width, height); } @Override public void update() { super.update(); if (has("ripeness")) { ripeness = getInt("ripeness"); } } private void setRipeness(int ripeness) { this.ripeness = ripeness; put("ripeness", ripeness); } protected int getRipeness() { return ripeness; } @Override protected void growNewFruit() { setRipeness(ripeness + 1); if (ripeness < maxRipeness) { TurnNotifier.get().notifyInTurns(getRandomTurnsForRegrow(), this, null); } notifyWorldAboutChanges(); } @Override public void getArea(Rectangle2D rect, double x, double y) { rect.setRect(x, y + getInt("height") - 1, 1, 1); } @Override public void onFruitPicked(Item picked) { super.onFruitPicked(picked); setRipeness(0); notifyWorldAboutChanges(); } @Override public void setToFullGrowth() { setRipeness(maxRipeness); // don't grow anything new until someone harvests TurnNotifier.get().dontNotify(this, null); } } |