de.farafin.snEADy
Class M_GameEngine

java.lang.Object
  extended by java.lang.Thread
      extended by de.farafin.snEADy.M_GameEngine
All Implemented Interfaces:
I_Constants, I_PlayFieldConstants, I_GameStats, java.lang.Runnable

public final class M_GameEngine
extends java.lang.Thread
implements I_Constants, I_GameStats, I_PlayFieldConstants

Version:
$Revision: 1.92 $
Author:
roland, lars GameEngine is the Module that organize the game flow and all its data transportation. its for organizing the communication between @see C_Wworld, @see M_PlayerHandler and @see M_Main

Nested Class Summary
 
Nested classes/interfaces inherited from class java.lang.Thread
java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
 
Field Summary
private  D_GameInfo gameInfo
          the gameInfo instance from whitch a copy is given to other modules
private  C_Human[] humanInstances
          The instances of human Player
private  boolean imergencyPaused
          flag that controlls if the class is suspended
private static M_GameEngine instance
          own instance to prevent multible instanzes
private  GameParameter parameter
          parameter set of GameParameter
private  D_PlayerData[] playerData
          data of the managed player
private  M_PlayerHandler playerHandler
          The instance of the player handler.. the class that handles the player management
private  Player[] playerInstances
          The player Instances which are loaded
private  C_RecordFileReader recordReader
          the reader for the repaly
private  C_RecordFileWriter recordWriter
          the writer for the record
private  int stepCounter
          to reallize replay stipwidth
private  boolean stopReplayBackwards
          if truie, the replay is stopped by calling the controll stop method.
private  boolean stopReplayForwards
          if truie, the replay is stopped by calling the controll stop method.
private  C_World world
          an instance of the world, the class that computes all moves and stuff world also includes the arena as final. if you like to create a new arena, you need to create a new world-object.
 
Fields inherited from class java.lang.Thread
MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
 
Fields inherited from interface de.farafin.snEADy.communication.I_Constants
analyse_ms, auto_grow_delay, auto_slowdown_delay, autogamespeed, closemonitor, damage_length_grow, damage_points_radius, DEBUG, delplayer, easy_points, ejectreplay, emergencyPause, exit_time, FACE_EAST, FACE_NORTH, FACE_SOUTH, FACE_WEST, game_end, goody_length_occ, goody_length_value, goody_points_occ, goody_points_value, goody_shorter_occ, goody_shorter_value, goody_slowdown_occ, goody_speed_occ, IN_ACTION, IN_ERROR_EXC, IN_ERROR_INIT, IN_ERROR_SPACE, IN_ERROR_TIME, IN_EXIT, IN_HEAVEN, init_length, init_move_delay, kill, kill_point_goodies, kill_points_radius, loaddummy, loadhuman, loadlevel, loadplayer, loadscript, logging, max_goody_occ_delay, MAX_HUMAN_PLAYERS, max_mem_check_delay, max_move_delay, max_player_mem, MAX_PLAYERS, max_thinking_ms, memkill, min_cycle_ms, min_move_delay, MOVE_EAST, MOVE_NORTH, MOVE_SOUTH, MOVE_WEST, openmonitor, overalldelay, pause, player_controlling, print_calc_ms, print_parameter, print_player_mem, print_playfield, quit, record, recordname, replay, replay_reverse, replay_stepwidth, replay_stepwise, run, set, show_subcycles, start, stop, suddend_time, survival_points, timekill, tolerance_ms, TURN_LEFT, TURN_NONE, TURN_RIGHT
 
Fields inherited from interface de.farafin.snEADy.I_GameStats
GAME_ABBORT, GAME_INIT, GAME_PAUSE, GAME_RECOVER, GAME_RUNNING, GAME_SAFE, PROG_END, PROG_INIT
 
Fields inherited from interface de.farafin.snEADy.communication.I_PlayFieldConstants
EXIT, FIELD_B, FIELD_C, FIELD_D, FIELD_E, FIELD_F, FIELD_G, FIELD_H, FIELD_I, FIELD_J, FIELD_K, FIELD_L, FIELD_M, FIELD_N, FIELD_O, FIELD_P, FIELD_Q, FIELD_R, FIELD_S, FIELD_T, FIELD_U, FIELD_V, FIELD_W, FIELD_X, FIELD_Y, FIELD_Z, FREE, GOODY_f, GOODY_g, GOODY_h, GOODY_i, GOODY_j, GOODY_k, GOODY_l, GOODY_LAST, GOODY_m, GOODY_n, GOODY_o, GOODY_p, GOODY_q, GOODY_r, GOODY_s, GOODY_START, GOODY_t, GOODY_u, GOODY_v, GOODY_w, GOODY_x, GOODY_y, GOODY_z, LENGTH, PLAYER_0, PLAYER_1, PLAYER_2, PLAYER_3, PLAYER_4, PLAYER_5, PLAYER_6, PLAYER_7, PLAYER_8, PLAYER_9, POINTS, SHORT, SLOW, SPEED, WALL
 
Constructor Summary
private M_GameEngine()
          constructor of M_GameEngine
 
Method Summary
private  boolean checkGameState()
          checks the gameSate
protected static void destroyInstance(M_GameEngine engine)
          destroys the engine - instance to make it free for a new one.
private  D_GameInfo generateGameInfo()
          to send other modules the current gameState, its necessary to copy the data and send the data to all modules. this method just copys the data and stores them in a gameInfo instance.
protected  D_GameInfo getGameInfo()
           
protected static M_GameEngine getInstance()
          prevents that more than one instance of the class exists in the program
protected  void imergencyPause()
          pauses/starts the actual player using deprecated methods!
protected  boolean initGame(D_GameInfo initData)
          init the game
protected  void kill()
          stops all threads that are running in the game!
protected  void recover(D_RecoverData recoverData)
          recover a before safed game
private  D_GameInfo reGenerateGameInfo()
           
 void run()
          The main cycle of the game. its a run-method from Thread, M_GameEngine is extended from.
protected  void store(D_RecoverData dataStorage)
          saves a game
 
Methods inherited from class java.lang.Thread
activeCount, checkAccess, countStackFrames, currentThread, destroy, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, stop, suspend, toString, yield
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

world

private C_World world
an instance of the world, the class that computes all moves and stuff world also includes the arena as final. if you like to create a new arena, you need to create a new world-object.

See Also:
C_World

playerData

private D_PlayerData[] playerData
data of the managed player

See Also:
D_PlayerData

playerInstances

private Player[] playerInstances
The player Instances which are loaded


humanInstances

private C_Human[] humanInstances
The instances of human Player


playerHandler

private M_PlayerHandler playerHandler
The instance of the player handler.. the class that handles the player management

See Also:
M_PlayerHandler

gameInfo

private D_GameInfo gameInfo
the gameInfo instance from whitch a copy is given to other modules


parameter

private final GameParameter parameter
parameter set of GameParameter


instance

private static M_GameEngine instance
own instance to prevent multible instanzes


imergencyPaused

private boolean imergencyPaused
flag that controlls if the class is suspended


recordReader

private C_RecordFileReader recordReader
the reader for the repaly


recordWriter

private C_RecordFileWriter recordWriter
the writer for the record


stopReplayForwards

private boolean stopReplayForwards
if truie, the replay is stopped by calling the controll stop method.


stopReplayBackwards

private boolean stopReplayBackwards
if truie, the replay is stopped by calling the controll stop method.


stepCounter

private int stepCounter
to reallize replay stipwidth

Constructor Detail

M_GameEngine

private M_GameEngine()
constructor of M_GameEngine

See Also:
getInstance()
Method Detail

generateGameInfo

private D_GameInfo generateGameInfo()
to send other modules the current gameState, its necessary to copy the data and send the data to all modules. this method just copys the data and stores them in a gameInfo instance.

Returns:
the gameInfos for the other modules

reGenerateGameInfo

private D_GameInfo reGenerateGameInfo()
Returns:
the gameInfo which is updated to the actual data and its stored in this.gameInfo

checkGameState

private boolean checkGameState()
checks the gameSate

Returns:
if the process should be ended or not

run

public void run()
The main cycle of the game. its a run-method from Thread, M_GameEngine is extended from.

Specified by:
run in interface java.lang.Runnable
Overrides:
run in class java.lang.Thread
See Also:
Thread.run()

initGame

protected boolean initGame(D_GameInfo initData)
init the game

Parameters:
initData -
Returns:
if init was sucessful

recover

protected void recover(D_RecoverData recoverData)
recover a before safed game

Parameters:
recoverData -

store

protected void store(D_RecoverData dataStorage)
saves a game

Parameters:
dataStorage -

getGameInfo

protected D_GameInfo getGameInfo()
Returns:
the actual gameInfo

imergencyPause

protected void imergencyPause()
pauses/starts the actual player using deprecated methods! DO NOT USE IF YOU DO NOT REALLY NEED!!!


kill

protected void kill()
stops all threads that are running in the game! DO NOT USE IF YOU DO NOT REALLY NEED!!!


getInstance

protected static M_GameEngine getInstance()
prevents that more than one instance of the class exists in the program

Returns:
a new instance if it doesnt already exist, if so, it returns the old one

destroyInstance

protected static void destroyInstance(M_GameEngine engine)
destroys the engine - instance to make it free for a new one.

Parameters:
engine -