|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object group1.model.Environment
public class Environment
An environment, a.k.a. a level, that contains a list of game objects. (Terrain, enemies, Jeff, etc.) In other words, the various areas in which the action will take place.
This class no longer uses a discrete grid to store the objects. Instead, it handles everything using double values. (The plan is, it *is* going to use a grid of rectangles for faster hit detection computation in larger environments. That's not quite finished yet, though.)
Note that this class and the GameObj classes technically store the data upside-down. Java treats the y-axis as top-to-bottom, which is too confusing for actual physics calculations. So, we make all calculations as though it's represented from bottom-to-top, then reverse the values later.
Also, a note on intersection: Objects actually need to sit within each other ever so slightly. See, Rectangle2D.intersects() doesn't work unless they intersect. So, if an object is moved completely outside of an object it hits, those objects are no longer touching. This can cause glitchy effects with walls and ceilings, and completely breaks any concept of standing on the floor.
Finally, note that this is a work in progress. It still has a lot of efficiency problems. In particular, the grid's set up, but not being used yet.
Constructor Summary | |
---|---|
Environment()
Default constructor. |
|
Environment(Jeff jef,
Controller controller,
java.io.BufferedReader input)
Constructor. |
Method Summary | |
---|---|
static GameObj |
createGameObj(char typeCode,
double x,
double y)
Given an alphabetic type code, construct the corresponding type of game object. |
Controller |
getController()
Get the controller object from the environment. |
double |
getGravity()
Get the gravity from the environment. |
double |
getHeight()
Return the "true" height of the Environment. |
XYPair |
getJeffsPosition()
Get Jeff's position. |
GameObj |
getObject(int i)
Return the specified object in the environment. |
java.util.List<GameObj> |
getObjectList()
Return the full list of objects in the Environment. |
int |
getObjectListSize()
Return the size of the list of all objects in the environment. |
double |
getWidth()
Return the "true" width of the Environment. |
boolean |
isObjectNearLadder(GameObj obj)
Check whether or not an object is close enough to a ladder to grab it. |
boolean |
isObjectOnGround(GameObj obj)
Check whether or not an object is on ground that it can walk on. |
void |
setGravity(double grav)
Set the gravity. |
int |
timeClick()
Calculates and sets the positions and velocities of all objects in the environment, based upon the objects' own movements and hit detection. |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public Environment()
public Environment(Jeff jef, Controller controller, java.io.BufferedReader input) throws java.io.EOFException, java.io.IOException
jef
- The hero of the game. (The only object that carries over between environments.)controller
- The game controller. (Useful for objects that need to move.)input
- the stream that reads the environment description file,
currently at the beginning of the file.
java.io.EOFException
- in case of file format error when more data was
expected than given in the file.
java.io.IOException
- if other input error occurs.Method Detail |
---|
public static final GameObj createGameObj(char typeCode, double x, double y)
typeCode
- the alphabetic type code, or '.' to specify no object.x
- The x-coordinate position.y
- The y-coordinate position.
public void setGravity(double grav)
grav
- The gravity value. (Should be negative. Unless we're falling up or something...?)public int timeClick()
This should be called by the Game class at each time click.
public boolean isObjectOnGround(GameObj obj)
Note, like hit detection, this operation can be slightly expensive if we call it often. But, the grid rectangles should make this better later on.
For now, though, this is a fairly decent solution.
obj
- The object in question.
public boolean isObjectNearLadder(GameObj obj)
obj
- The object in question.
public double getGravity()
public XYPair getJeffsPosition()
public Controller getController()
public java.util.List<GameObj> getObjectList()
public GameObj getObject(int i)
public int getObjectListSize()
public double getHeight()
public double getWidth()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |