From: Laszlo T. <ave...@us...> - 2011-01-29 16:12:48
|
gemrb: Infinity Engine emulator The branch master has been updated via 032f438b2c5b569f0faa10de5875a06b3bb7829b (commit) Summary of changes: gemrb/GUIScripts/maze_defs.py | 2 +- gemrb/GUIScripts/pst/Maze.py | 16 ++++++++-------- gemrb/core/Game.h | 3 ++- gemrb/plugins/GUIScript/GUIScript.cpp | 10 +++++----- 4 files changed, 16 insertions(+), 15 deletions(-) from d51996a2b315c315e29a39b13ad2f65043665b0d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- http://gemrb.git.sourceforge.net/git/gitweb.cgi?p=gemrb/gemrb;a=commitdiff;h=032f438b2c5b569f0faa10de5875a06b3bb7829b commit 032f438b2c5b569f0faa10de5875a06b3bb7829b Author: Avenger <ave...@so...> Date: Sat Jan 29 17:11:40 2011 +0100 fixed maze entry usage (the original didn't compress the slots, but used a 8x8 matrix diff --git a/gemrb/GUIScripts/maze_defs.py b/gemrb/GUIScripts/maze_defs.py index 4bf8873..40ef047 100644 --- a/gemrb/GUIScripts/maze_defs.py +++ b/gemrb/GUIScripts/maze_defs.py @@ -31,4 +31,4 @@ WALL_SOUTH = 8 #maximum maze entry MAZE_ENTRY_COUNT = 64 - +MAZE_MAX_DIM = 8 diff --git a/gemrb/GUIScripts/pst/Maze.py b/gemrb/GUIScripts/pst/Maze.py index 204d728..f7bc110 100644 --- a/gemrb/GUIScripts/pst/Maze.py +++ b/gemrb/GUIScripts/pst/Maze.py @@ -30,7 +30,7 @@ dims = 0 entries = None def Possible(posx, posy): - pos = posy*dims+posx + pos = posy*MAZE_MAX_DIM+posx if entries[pos]==2: return false return true @@ -48,11 +48,11 @@ def GetPossible (pos): pos = Possible(posx, posy-1) if pos>0: possible[:0] = pos - if posx<dims-1: + if posx<7: pos = Possible(posx+1, posy) if pos>0: possible[:0] = pos - if posy<dims-1: + if posy<7: pos = Possible(posx, posy+1) if pos>0: possible[:0] = pos @@ -96,12 +96,12 @@ def AddRoom (pos): def MainRoomFits (pos2x, pos2y, pos): global entries - south = pos2y*dims+pos2x + south = pos2y*MAZE_MAX_DIM+pos2x if south==pos: return false - north = (pos2y+1)*dims+pos2x + north = (pos2y+1)*MAZE_MAX_DIM+pos2x if north==pos: return false @@ -150,10 +150,10 @@ def CreateMaze (): nordomx = GemRB.Roll(1, dims-1, 0) nordomy = GemRB.Roll(1, dims, 0) - pos = nordomy*dims+nordomx + pos = nordomy*MAZE_MAX_DIM+nordomx entries[pos] = 2 GemRB.SetMazeEntry(pos, ME_WALLS, WALL_EAST) - pos = (nordomy+1)*dims+nordomx + pos = (nordomy+1)*MAZE_MAX_DIM+nordomx AddRoom(pos) if (mazedifficulty>1): GemRB.SetMazeData(MH_POS1X, nordomx) @@ -176,7 +176,7 @@ def CreateMaze (): for i in traps: posx = GemRB.Roll(1, dims, 0) posy = GemRB.Roll(1, dims, 0) - pos = posy*dims+posx; + pos = posy*MAZE_MAX_DIM+posx; while entries[pos]: pos = pos + 1 if pos>=max: diff --git a/gemrb/core/Game.h b/gemrb/core/Game.h index 78fe017..edb3560 100644 --- a/gemrb/core/Game.h +++ b/gemrb/core/Game.h @@ -182,7 +182,8 @@ struct maze_header { #define MAZE_ENTRY_SIZE sizeof(maze_entry) #define MAZE_HEADER_SIZE sizeof(maze_header) -#define MAZE_ENTRY_COUNT 64 +#define MAZE_MAX_DIM 8 +#define MAZE_ENTRY_COUNT (MAZE_MAX_DIM*MAZE_MAX_DIM) #define MAZE_DATA_SIZE (MAZE_ENTRY_COUNT*MAZE_ENTRY_SIZE+MAZE_HEADER_SIZE) #define MAZE_DATA_SIZE_HARDCODED 1720 diff --git a/gemrb/plugins/GUIScript/GUIScript.cpp b/gemrb/plugins/GUIScript/GUIScript.cpp index 712de9a..8b9ebd5 100644 --- a/gemrb/plugins/GUIScript/GUIScript.cpp +++ b/gemrb/plugins/GUIScript/GUIScript.cpp @@ -9713,7 +9713,7 @@ static PyObject* GemRB_SetTickHook(PyObject* /*self*/, PyObject* args) PyDoc_STRVAR( GemRB_SetupMaze__doc, "SetupMaze(x,y)\n\n" "Initializes a maze of XxY size. " -"The size shouldn't exceed the maximum possible maze size (64)."); +"The dimensions shouldn't exceed the maximum possible maze size (8x8)."); static PyObject* GemRB_SetupMaze(PyObject* /*self*/, PyObject* args) { @@ -9723,7 +9723,7 @@ static PyObject* GemRB_SetupMaze(PyObject* /*self*/, PyObject* args) return AttributeError( GemRB_SetupMaze__doc ); } - if (xsize*ysize>MAZE_ENTRY_COUNT) { + if ((unsigned) xsize>MAZE_MAX_DIM || (unsigned) ysize>MAZE_MAX_DIM) { return AttributeError( GemRB_SetupMaze__doc ); } @@ -9736,12 +9736,12 @@ static PyObject* GemRB_SetupMaze(PyObject* /*self*/, PyObject* args) memset(h, 0, MAZE_HEADER_SIZE); h->maze_sizex = xsize; h->maze_sizey = ysize; - int max = xsize*ysize; for(int i=0;i<MAZE_ENTRY_COUNT;i++) { maze_entry *m = (maze_entry *) game->mazedata+i*MAZE_ENTRY_SIZE; memset(m, 0, MAZE_ENTRY_SIZE); - m->valid = i<max; - m->accessible = i<max; + bool used = (i/MAZE_MAX_DIM<ysize) && (i%MAZE_MAX_DIM<xsize); + m->valid = used; + m->accessible = used; } Py_INCREF(Py_None); return Py_None; ----------------------------------------------------------------------- This is an automated email from the git hooks/post-receive script. -- gemrb: Infinity Engine emulator |