summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <lpouzenc@gmail.com>2013-07-25 17:58:43 +0200
committerLudovic Pouzenc <lpouzenc@gmail.com>2013-07-25 17:58:43 +0200
commitc1961c3669397b003df82ada7df14f3069b9beae (patch)
treeae0cfe6fb213b4bc59ffc948d613e3920aa1267d
parentb5845f297da2648c9a971acf9dbf03feba3a50c6 (diff)
downloadmplemmings-c1961c3669397b003df82ada7df14f3069b9beae.tar.gz
mplemmings-c1961c3669397b003df82ada7df14f3069b9beae.tar.bz2
mplemmings-c1961c3669397b003df82ada7df14f3069b9beae.zip
Separation de quelques elemnts qui etaients un peu melanges en vue d'avancer sur ./testplay
-rw-r--r--Makefile.am2
-rw-r--r--src/gamelogic.c7
-rw-r--r--src/gameui.c25
-rw-r--r--src/graphic.c35
-rw-r--r--src/include/data_game.h38
-rw-r--r--src/include/data_ui.h38
-rw-r--r--src/include/gamelogic.h10
-rw-r--r--src/include/gameui.h9
-rw-r--r--src/include/graphic.h6
-rw-r--r--src/test/testplay.c45
-rw-r--r--src/test/testrender.c48
11 files changed, 151 insertions, 112 deletions
diff --git a/Makefile.am b/Makefile.am
index 4be3e49..78203fc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -10,7 +10,7 @@ noinst_PROGRAMS = sbmoose sbsprite sbspritegif testparseall testrender testplay
AM_CFLAGS = -Wall -Werror -I src/include/ -I src/minini/dev/ $(DEPS_CFLAGS)
LIBS = $(DEPS_LIBS)
PARSER_MODULES = src/minini/dev/minIni.c src/minini/dev/my_SDL_stdinc.c src/parser.c
-LOCALGAME_MODULES = $(PARSER_MODULES) src/loader.c src/graphic.c src/gameui.c
+LOCALGAME_MODULES = $(PARSER_MODULES) src/loader.c src/graphic.c src/gameui.c src/gamelogic.c
# Per target specs
mplemmings_SOURCES = src/mplemmings.c
diff --git a/src/gamelogic.c b/src/gamelogic.c
new file mode 100644
index 0000000..d537fde
--- /dev/null
+++ b/src/gamelogic.c
@@ -0,0 +1,7 @@
+#include "gamelogic.h"
+
+int setInitialState(gameIni_t *gIni, gameState_t *gState) {
+ //FIXME : all lemmings states, skill counters...
+ return 0;
+}
+
diff --git a/src/gameui.c b/src/gameui.c
index 1800af7..24eb9e0 100644
--- a/src/gameui.c
+++ b/src/gameui.c
@@ -1,16 +1,23 @@
#include "gameui.h"
-int setInitialState(gameIni_t *gIni, gameState_t *gState) {
- gState->cameraX = gIni->level.xPos;
- //FIXME : all lemmings states, skill counters...
- return 0;
-}
+#define SET_RENDER_ITEM(item,sp,px,py,f,abs,curid,mouseevt) \
+do { \
+ item.sprite = sp; \
+ item.x = px; item.y = py; \
+ item.currframe = f; \
+ item.absolute = abs; \
+ item.onhovercursorid = curid; \
+ item.onmousebuttonevent_proc = mouseevt; \
+} while(0)
+
+int buildGameRenderList(gameRess_t *gRess, gameUI_t *gUI) {
+ int cur=0;
-int buildRenderList(gameIni_t *gIni, gameRess_t *gRess, gameState_t *gState) {
- return -1; //FIXME : Not yet implemented
-}
+ SET_RENDER_ITEM(gUI->renderList[cur++],&gUI->terrainSprite,0,0,0,0,0,NULL);
-void disposeRenderList(gameState_t *gState) {
+ SET_RENDER_ITEM(gUI->renderList[cur++],&gRess->cursor,0,0,0,0,0,NULL);
+ return 0;
}
+
diff --git a/src/graphic.c b/src/graphic.c
index 54a7bd1..8c995b3 100644
--- a/src/graphic.c
+++ b/src/graphic.c
@@ -204,11 +204,11 @@ int paintTerrain(gameIni_t *gIni, gameRess_t *gRess, gameState_t *gState) {
return 0;
}
-int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) {
+int renderTerrainToTextures(SDL_Renderer *rend, SDL_Surface *terrain, gameUI_t *gUI) {
int res, pitch;
SDL_Rect src_rect, dst_rect;
SDL_Surface *tmp_surf;
- SDL_PixelFormat *pf = gState->terrain->format;
+ SDL_PixelFormat *pf = terrain->format;
Uint32 *pixels;
tmp_surf = SDL_CreateRGBSurface(0,MPL_WIN_W, LEVEL_HEIGHT,
@@ -221,7 +221,7 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) {
"Can't SDL_CreateRGBSurface() for converting terrain"
);
- src_rect.x=gState->cameraX;
+ src_rect.x=gUI->cameraX;
src_rect.y=0;
src_rect.w=MPL_WIN_W;
src_rect.h=LEVEL_HEIGHT;
@@ -229,7 +229,7 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) {
dst_rect=src_rect;
dst_rect.x=0;
- res = SDL_BlitSurface(gState->terrain, &src_rect, tmp_surf, &dst_rect);
+ res = SDL_BlitSurface(terrain, &src_rect, tmp_surf, &dst_rect);
MPL_CHECK(
res==0,
{ SDL_FreeSurface(tmp_surf); return 2; },
@@ -237,23 +237,23 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) {
"Can't SDL_BlitSurface(terrain,...)"
);
- if (gState->terrainSprite.t == NULL) {
- gState->terrainSprite.t = SDL_CreateTexture(rend, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, dst_rect.w, dst_rect.h);
+ if (gUI->terrainSprite.t == NULL) {
+ gUI->terrainSprite.t = SDL_CreateTexture(rend, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STREAMING, dst_rect.w, dst_rect.h);
MPL_CHECK(
- gState->terrainSprite.t,
+ gUI->terrainSprite.t,
{ SDL_FreeSurface(tmp_surf); return 3; },
SDL_LOG_PRIORITY_CRITICAL,
"Can't SDL_CreateTexture for terrainSprite"
);
- gState->terrainSprite.size = dst_rect;
- gState->terrainSprite.frames = 1;
+ gUI->terrainSprite.size = dst_rect;
+ gUI->terrainSprite.frames = 1;
}
- res=SDL_LockTexture(gState->terrainSprite.t, NULL, (void **)&pixels, &pitch);
+ res=SDL_LockTexture(gUI->terrainSprite.t, NULL, (void **)&pixels, &pitch);
MPL_CHECK(
(res==0) && (pitch == dst_rect.w * sizeof(Uint32)),
{ SDL_FreeSurface(tmp_surf);
- SDL_UnlockTexture(gState->terrainSprite.t);
+ SDL_UnlockTexture(gUI->terrainSprite.t);
return 3;
},
SDL_LOG_PRIORITY_CRITICAL,
@@ -261,27 +261,28 @@ int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState) {
);
(void) SDL_memcpy(pixels, tmp_surf->pixels, dst_rect.h * pitch);
- SDL_UnlockTexture(gState->terrainSprite.t);
+ SDL_UnlockTexture(gUI->terrainSprite.t);
SDL_FreeSurface(tmp_surf);
-// SDL_DestroyTexture(gState->terrainSprite.t); //TODO mais pas ici !!
+// SDL_DestroyTexture(gUI->terrainSprite.t); //TODO mais pas ici !!
+ //TODO : faire le rendu de la minimap aussi
return 0;
}
-int renderSprites(SDL_Renderer *rend, gameState_t *gState) {
+int renderSprites(SDL_Renderer *rend, gameUI_t *gUI) {
int i, res;
SDL_Rect src,dst;
- renderItem_t *renderList = gState->renderList;
+ renderItem_t *renderList = gUI->renderList;
- for(i=0,res=0 ; i < gState->renderListSize && res==0 ; i++) {
+ for(i=0,res=0 ; i < gUI->renderListSize && res==0 ; i++) {
src = dst = renderList[i].sprite->size;
src.y = src.h * renderList[i].currframe;
if ( renderList[i].absolute ) {
dst.x = renderList[i].x;
} else {
- dst.x = renderList[i].x - gState->cameraX;
+ dst.x = renderList[i].x - gUI->cameraX;
}
dst.y = renderList[i].y;
res=SDL_RenderCopy(rend, renderList[i].sprite->t, &src, &dst);
diff --git a/src/include/data_game.h b/src/include/data_game.h
index c3d4266..64b3827 100644
--- a/src/include/data_game.h
+++ b/src/include/data_game.h
@@ -3,39 +3,33 @@
#include <SDL.h>
-#define MAX_RENDERLIST_SIZE 256
+#include "data_ress.h"
+
+#define MAX_LEMMINGS_COUNT 100 /* Should be used also by the parser... */
typedef struct {
- sprite_t *sprite;
- int currframe;
- int animate; /* Is currently animating ? */
- int x,y;
- int absolute; /* 0 if level-based coords, 1 if camera-based */
- int onhovercursorid;
- void (*onmousebuttonevent_proc)(Uint8 button, Uint8 state, void *userptr);
+ void *todo;
+ /* role, state, animframe... */
+} lemming_t;
-} renderItem_t;
+enum skills {
+ sk_climber=0, sk_floater, sk_blocker, sk_bomber, sk_builder,
+ sk_basher, sk_miner, sk_digger, sk_count
+};
typedef struct {
- /* Game frame counter */
+ /* Game time counter */
int tick;
- /* Current camera position */
- int cameraX;
/* terrain & stencil
- generated by paint_terrain()
- update by ???() */
+ generated by paintTerrain()
+ updated by ???() */
SDL_Surface *terrain, *stencil;
- /* streamTerrain : viewable portion of terrain, in texture format
- updated by render_terrain() */
- sprite_t terrainSprite;
+ lemming_t lemmings[MAX_LEMMINGS_COUNT];
+ int remSkills[sk_count];
+ int currReleaseRate;
- /* Render list of all in-game sprites (for batch processing)
- Items are in paint order
- created by buildRenderList() */
- int renderListSize;
- renderItem_t renderList[MAX_RENDERLIST_SIZE];
} gameState_t;
#endif /*DATA_GAME_H*/
diff --git a/src/include/data_ui.h b/src/include/data_ui.h
new file mode 100644
index 0000000..b8e83f8
--- /dev/null
+++ b/src/include/data_ui.h
@@ -0,0 +1,38 @@
+#ifndef DATA_UI_H
+#define DATA_UI_H
+#include <SDL.h>
+
+#include "data_ress.h"
+
+#define MAX_RENDERLIST_SIZE 256
+
+typedef struct {
+ sprite_t *sprite;
+ int currframe;
+ int animate; /* Is currently animating ? */
+ int x,y;
+ int absolute; /* 0 if level-based coords, 1 if camera-based */
+ int onhovercursorid;
+ void (*onmousebuttonevent_proc)(Uint8 button, Uint8 state, void *userptr);
+} renderItem_t;
+
+typedef struct {
+ /* Render list of all in-game sprites (for batch processing)
+ Items are in paint order
+ created by buildRenderList() */
+ int renderListSize;
+ renderItem_t renderList[MAX_RENDERLIST_SIZE];
+
+ /* Current camera position */
+ int cameraX;
+
+ /* streamTerrain : viewable portion of terrain, in texture format
+ updated by renderTerraiToTexture() */
+ sprite_t terrainSprite;
+
+ int remainingTime;
+ int numLemmOut;
+} gameUI_t;
+
+
+#endif /*DATA_UI_H*/
diff --git a/src/include/gamelogic.h b/src/include/gamelogic.h
new file mode 100644
index 0000000..eb66999
--- /dev/null
+++ b/src/include/gamelogic.h
@@ -0,0 +1,10 @@
+#ifndef GAMELOGIC_H
+#define GAMELOGIC_H
+#include <SDL.h>
+
+#include "data_ini.h"
+#include "data_game.h"
+
+int setInitialState(gameIni_t *gIni, gameState_t *gState);
+
+#endif /*GAMELOGIC_H*/
diff --git a/src/include/gameui.h b/src/include/gameui.h
index e36bc8c..92fa985 100644
--- a/src/include/gameui.h
+++ b/src/include/gameui.h
@@ -2,14 +2,11 @@
#define GAMEUI_H
#include <SDL.h>
-#include "data_ini.h"
#include "data_ress.h"
-#include "data_game.h"
-
-int setInitialState(gameIni_t *gIni, gameState_t *gState);
+#include "data_ui.h"
/* Create list of all in-game sprite to render (for batch processing) */
-int buildRenderList(gameIni_t *gIni, gameRess_t *gRess, gameState_t *gState);
-void disposeRenderList(gameState_t *gState);
+int buildGameRenderList(gameRess_t *gRess, gameUI_t *gUI);
+
#endif /*GAMEUI_H*/
diff --git a/src/include/graphic.h b/src/include/graphic.h
index b85d516..f1727ec 100644
--- a/src/include/graphic.h
+++ b/src/include/graphic.h
@@ -8,13 +8,15 @@
#include "data_ini.h"
#include "data_ress.h"
#include "data_game.h"
+#include "data_ui.h"
+//XXX : faire un struct dans gameUI_t pour les paramètres de sorte de ce bouzin ?
int mySDLInit(char title[], SDL_Rect win_pos, Uint32 init_flags, Uint32 win_flags, Uint32 rend_flags, SDL_Window **win, SDL_Renderer **rend, SDL_RendererInfo *rend_info, SDL_Rect *viewport);
int paintTerrain(gameIni_t *gIni, gameRess_t *gRess, gameState_t *gState);
-int renderTerrainToTexture(SDL_Renderer *rend, gameState_t *gState);
-int renderSprites(SDL_Renderer *rend, gameState_t *gState);
+int renderTerrainToTextures(SDL_Renderer *rend, SDL_Surface *terrain, gameUI_t *gUI);
+int renderSprites(SDL_Renderer *rend, gameUI_t *gUI);
#endif /*GRAPHIC_H*/
diff --git a/src/test/testplay.c b/src/test/testplay.c
index 1d63335..1d32104 100644
--- a/src/test/testplay.c
+++ b/src/test/testplay.c
@@ -1,4 +1,5 @@
#include "gameui.h"
+#include "gamelogic.h"
#include "graphic.h"
#include "loader.h"
#include "utils.h"
@@ -9,6 +10,7 @@ int main(int argc, char **argv) {
gameIni_t gIni;
gameRess_t gRess;
gameState_t gState;
+ gameUI_t gUI;
SDL_Window *win;
SDL_Renderer *rend;
@@ -37,6 +39,7 @@ int main(int argc, char **argv) {
SDL_memset(&gIni,0,sizeof(gameIni_t));
SDL_memset(&gRess,0,sizeof(gameRess_t));
SDL_memset(&gState,0,sizeof(gameState_t));
+ SDL_memset(&gUI,0,sizeof(gameUI_t));
res=loadLevel(DATA_BASEPATH, argv[1], argv[2], &gIni);
if (res!=0) exit(res);
@@ -48,9 +51,12 @@ int main(int argc, char **argv) {
res=loadStyleRes(rend, &gIni, &gRess); if (res!=0) exit(res);
res=setInitialState(&gIni, &gState); if (res!=0) exit(res);
+ gUI.cameraX = gIni.level.xPos;
+
res=paintTerrain(&gIni, &gRess, &gState); if (res!=0) exit(res);
- res=renderTerrainToTexture(rend, &gState); if (res!=0) exit(res);
- res=buildRenderList(&gIni, &gRess, &gState); if (res!=0) exit(res);
+ res=renderTerrainToTextures(rend, gState.terrain, &gUI);
+ if (res!=0) exit(res);
+ res=buildGameRenderList(&gRess, &gUI) ;if (res!=0) exit(res);
/* Main render loop */
uiTick = 0;
@@ -64,27 +70,26 @@ int main(int argc, char **argv) {
}
}
- (void) renderTerrainToTexture(rend, &gState);
+ (void) renderTerrainToTextures(rend, gState.terrain, &gUI);
SDL_RenderClear(rend);
- (void) renderSprites(rend, &gState);
+ (void) renderSprites(rend, &gUI);
SDL_RenderPresent(rend);
if (uiTick % 4 == 0) {
int i;
gState.tick++;
- for (i=0;i<gState.renderListSize;i++) {
- renderItem_t *it = &gState.renderList[i];
+ for (i=0;i<gUI.renderListSize;i++) {
+ renderItem_t *it = &gUI.renderList[i];
if (it->animate==1) {
it->currframe = (it->currframe + 1) % it->sprite->frames;
}
}
}
SDL_Delay(25);
- gState.cameraX = (gState.cameraX + 1) % (LEVEL_WIDTH - MPL_WIN_W);
+ gUI.cameraX = (gUI.cameraX + 1) % (LEVEL_WIDTH - MPL_WIN_W);
uiTick++;
}
- disposeRenderList(&gState);
unloadStyleRes(&gRess);
unloadMiscRes(&gRess);
@@ -128,27 +133,3 @@ int addRLitem(renderItem_t list[], sprite_t *it, int rlMaxLen) {
return cur;
}
-int buildTestRL(gameRess_t *gRess, gameState_t *gState, int rlMaxLen, renderItem_t renderList[]) {
- int i, rlLen;
-
- rlLen=addRLitem(renderList, &gState->terrainSprite, rlMaxLen);
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
-
- for (i=0; i<MAX_LEMMANIM_COUNT; i++) {
- rlLen=addRLitem(renderList, &gRess->lemmingAnims[i], rlMaxLen);
- }
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
-
- for (i=0; i<MAX_OBJECTS_COUNT; i++) {
- rlLen=addRLitem(renderList, &gRess->objects[i], rlMaxLen);
- }
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
-
- rlLen=addRLitem(renderList, &gRess->font1, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->font2, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->countdown, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->cursor, rlMaxLen);
-
- return rlLen;
-}
-
diff --git a/src/test/testrender.c b/src/test/testrender.c
index b8dc500..c46263d 100644
--- a/src/test/testrender.c
+++ b/src/test/testrender.c
@@ -5,12 +5,13 @@
#define DATA_BASEPATH "./data"
-int buildTestRL(gameRess_t *gRess, gameState_t *gState, int rlMaxLen, renderItem_t renderList[]);
+int buildTestRL(gameRess_t *gRess, gameUI_t *gUI, int rlMaxLen);
int main(int argc, char **argv) {
gameIni_t gIni;
gameRess_t gRess;
gameState_t gState;
+ gameUI_t gUI;
SDL_Window *win;
SDL_Renderer *rend;
@@ -39,6 +40,7 @@ int main(int argc, char **argv) {
SDL_memset(&gIni,0,sizeof(gameIni_t));
SDL_memset(&gRess,0,sizeof(gameRess_t));
SDL_memset(&gState,0,sizeof(gameState_t));
+ SDL_memset(&gUI,0,sizeof(gameUI_t));
res=loadLevel(DATA_BASEPATH, argv[1], argv[2], &gIni);
if (res!=0) exit(res);
@@ -46,21 +48,21 @@ int main(int argc, char **argv) {
res=mySDLInit(__FILE__, winPos, initFlags, winFlags, rendFlags, &win, &rend, &rendInfo, &viewport);
if (res!=0) exit(res);
- res=loadMiscRes(rend, &gIni, &gRess); if (res!=0) exit(res);
+ res=loadMiscRes (rend, &gIni, &gRess); if (res!=0) exit(res);
res=loadStyleRes(rend, &gIni, &gRess); if (res!=0) exit(res);
res=paintTerrain(&gIni, &gRess, &gState); if (res!=0) exit(res);
- res=renderTerrainToTexture(rend, &gState); if (res!=0) exit(res);
+ res=renderTerrainToTextures(rend, gState.terrain, &gUI);
+ if (res!=0) exit(res);
- gState.renderListSize=buildTestRL(&gRess, &gState, MAX_RENDERLIST_SIZE, gState.renderList);
- gState.cameraX = gIni.level.xPos;
+ gUI.renderListSize=buildTestRL(&gRess, &gUI, MAX_RENDERLIST_SIZE);
+ gUI.cameraX = gIni.level.xPos;
/* Main render loop */
uiTick = 0;
mainLoopEnd = 0;
while (!mainLoopEnd) {
- int i;
/* Check for events */
while (SDL_PollEvent(&uiEvent)) {
@@ -69,26 +71,26 @@ int main(int argc, char **argv) {
}
}
- (void) renderTerrainToTexture(rend, &gState);
+ (void) renderTerrainToTextures(rend, gState.terrain, &gUI);
SDL_RenderClear(rend);
- (void) renderSprites(rend, &gState);
+ (void) renderSprites(rend, &gUI);
SDL_RenderPresent(rend);
if (uiTick % 4 == 0) {
+ int i;
gState.tick++;
- for (i=0;i<gState.renderListSize;i++) {
- renderItem_t *it = &gState.renderList[i];
+ for (i=0;i<gUI.renderListSize;i++) {
+ renderItem_t *it = &gUI.renderList[i];
if (it->animate==1) {
it->currframe = (it->currframe + 1) % it->sprite->frames;
}
}
}
SDL_Delay(25);
- gState.cameraX = (gState.cameraX + 1) % (LEVEL_WIDTH - MPL_WIN_W);
+ gUI.cameraX = (gUI.cameraX + 1) % (LEVEL_WIDTH - MPL_WIN_W);
uiTick++;
}
- disposeRenderList(&gState);
unloadStyleRes(&gRess);
unloadMiscRes(&gRess);
@@ -132,26 +134,26 @@ int addRLitem(renderItem_t list[], sprite_t *it, int rlMaxLen) {
return cur;
}
-int buildTestRL(gameRess_t *gRess, gameState_t *gState, int rlMaxLen, renderItem_t renderList[]) {
+int buildTestRL(gameRess_t *gRess, gameUI_t *gUI, int rlMaxLen) {;
int i, rlLen;
- rlLen=addRLitem(renderList, &gState->terrainSprite, rlMaxLen);
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gUI->terrainSprite, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, NULL, rlMaxLen);
for (i=0; i<MAX_LEMMANIM_COUNT; i++) {
- rlLen=addRLitem(renderList, &gRess->lemmingAnims[i], rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->lemmingAnims[i], rlMaxLen);
}
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, NULL, rlMaxLen);
for (i=0; i<MAX_OBJECTS_COUNT; i++) {
- rlLen=addRLitem(renderList, &gRess->objects[i], rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->objects[i], rlMaxLen);
}
- rlLen=addRLitem(renderList, NULL, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, NULL, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->font1, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->font2, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->countdown, rlMaxLen);
- rlLen=addRLitem(renderList, &gRess->cursor, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->font1, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->font2, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->countdown, rlMaxLen);
+ rlLen=addRLitem(gUI->renderList, &gRess->cursor, rlMaxLen);
return rlLen;
}