diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-12 16:36:13 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-06-12 16:36:13 +0000 |
| commit | 9751218f594526982877332d6ca0fa90b67bbb7b (patch) | |
| tree | 2acbc70e3d8432bb80ef70470bda75ba93bc2593 /include | |
| parent | 4919e623c6695a80aaf96187253756dcbb72bf87 (diff) | |
- prva cast prepisu kodu pre pozuivanie space_t a space_t API, ktore je optimalizovany pre ukladanie informacii o
objektoch vo velkych mapach.
POZOR: nie je vhodne kompilovat ako gameserver ( pre istotu to ani nejde ) // este to msusim doorbit :)
git-svn-id: http://opensvn.csie.org/tuxanci_ng@63 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'include')
| -rw-r--r-- | include/arena.h | 10 | ||||
| -rw-r--r-- | include/item.h | 17 | ||||
| -rwxr-xr-x | include/list.h | 1 | ||||
| -rw-r--r-- | include/main.h | 4 | ||||
| -rw-r--r-- | include/modules.h | 4 | ||||
| -rw-r--r-- | include/screen_world.h | 1 | ||||
| -rw-r--r-- | include/server.h | 2 | ||||
| -rw-r--r-- | include/shot.h | 2 | ||||
| -rw-r--r-- | include/space.h | 36 | ||||
| -rw-r--r-- | include/tux.h | 7 |
10 files changed, 69 insertions, 15 deletions
diff --git a/include/arena.h b/include/arena.h index c800169..2c06659 100644 --- a/include/arena.h +++ b/include/arena.h @@ -4,10 +4,13 @@ #define ARENA_H #include "main.h" + #ifndef PUBLIC_SERVER #include "interface.h" #endif + #include "list.h" +#include "space.h" typedef struct arena_struct { @@ -18,14 +21,15 @@ typedef struct arena_struct #endif int w, h; list_t *listTimer; - list_t *listTux; + //list_t *listTux; list_t *listShot; - list_t *listItem; + space_t *spaceTux; + space_t *spaceItem; } arena_t; extern void setCurrentArena(arena_t *p); extern arena_t* getCurrentArena(); -extern arena_t* newArena(); +extern arena_t* newArena(int w, int h); extern int conflictSpace(int x1,int y1,int w1,int h1,int x2,int y2,int w2,int h2); extern int isFreeSpace(arena_t *arena, int x, int y, int w, int h); extern void findFreeSpace(arena_t *arena, int *x, int *y, int w, int h); diff --git a/include/item.h b/include/item.h index dd67765..b8a9825 100644 --- a/include/item.h +++ b/include/item.h @@ -60,19 +60,18 @@ typedef struct item_struct extern bool_t isItemInicialized(); extern void initItem(); extern item_t* newItem(int x, int y, int type, int author_id); -extern item_t* getItemID(list_t *listItem, int id); +extern void getStatusItem(void *p, int *id, int *x, int *y ,int *w, int *h); +extern void setStatusItem(void *p, int x, int y, int w, int h); extern void replaceItemID(item_t *item, int id); -extern void addNewItem(list_t *listItem, int author_id); +extern void addNewItem(space_t *spaceItem, int author_id); #ifndef PUBLIC_SERVER -extern void drawItem(item_t *p); extern void drawListItem(list_t *listItem); +extern void eventListItem(space_t *listSpace); #endif -extern void eventListItem(list_t *listItem); -extern void eventConflictShotWithItem(list_t *listItem, list_t *listShot); -extern int isConflictWithListItem(list_t *listItem, int x, int y, int w, int h); -extern void mineExplosion(list_t *listItem, item_t *item); -extern int eventGiveTuxItem(tux_t *tux, list_t *listItem, item_t *item); -extern void eventGiveTuxListItem(tux_t *tux, list_t *listItem); +extern void mineExplosion(space_t *spaceItem, item_t *item); +extern void eventConflictShotWithItem(arena_t *arena); +extern void eventGiveTuxItem(tux_t *tux, item_t *item, space_t *spaceItem); +extern void eventGiveTuxListItem(tux_t *tux, space_t *spaceItem); extern void destroyItem(item_t *p); extern void quitItem(); diff --git a/include/list.h b/include/list.h index 8722baa..5a15786 100755 --- a/include/list.h +++ b/include/list.h @@ -25,6 +25,7 @@ extern int searchListItem(list_t *p, void *n); extern void delList(list_t *p,int n); extern void delListItem(list_t *p,int n,void *f); +extern void listDoEmpty(list_t *p); extern void destroyList(list_t *p); extern void destroyListItem(list_t *p,void *f); diff --git a/include/main.h b/include/main.h index ea3d703..942064f 100644 --- a/include/main.h +++ b/include/main.h @@ -21,6 +21,10 @@ #define WINDOW_SIZE_X 800 #define WINDOW_SIZE_Y 600 +#include "list.h" + +extern list_t *listHelp; + extern char* getParam(char *s); extern char* getParamElse(char *s1, char *s2); extern bool_t isParamFlag(char *s); diff --git a/include/modules.h b/include/modules.h index f05234f..085e476 100644 --- a/include/modules.h +++ b/include/modules.h @@ -52,7 +52,7 @@ typedef struct module_s int (*fce_init)(export_fce_t *p); #ifndef PUBLIC_SERVER - int (*fce_draw)(); + int (*fce_draw)(int x, int y,int w, int h); #endif int (*fce_event)(); int (*fce_isConflict)(int x, int y, int w, int h); @@ -64,7 +64,7 @@ typedef struct module_s extern void initModule(); extern int loadModule(char *name); #ifndef PUBLIC_SERVER -extern void drawModule(); +extern void drawModule(int x, int y, int w, int h); #endif extern void eventModule(); extern void cmdModule(char *s); diff --git a/include/screen_world.h b/include/screen_world.h index b6a4259..0ba4b41 100644 --- a/include/screen_world.h +++ b/include/screen_world.h @@ -20,6 +20,7 @@ extern void countRoundInc(); extern void setWorldEnd(); extern void setMaxCountRound(int n); extern tux_t* getControlTux(int control_type); +extern void setControlTux(tux_t *tux, int control_type); extern void tuxControl(tux_t *p); extern void drawWorld(); extern void eventWorld(); diff --git a/include/server.h b/include/server.h index 8d97ed3..178dc34 100644 --- a/include/server.h +++ b/include/server.h @@ -81,8 +81,10 @@ extern void sendAllClientSeesTux(char *msg, tux_t *tux); extern void addMsgClient(client_t *p, char *msg, int id); extern void addMsgAllClientBut(char *msg, client_t *p, int id); extern void addMsgAllClient(char *msg, int id); +extern void addMsgAllClientSeesTux(char *msg, tux_t *tux, int id); extern tux_t *getServerTux(); +extern client_t *getClientFromTux(tux_t *tux); extern void eventClientListBuffer(); extern void sendInfoCreateClient(client_t *client); extern void eventServer(); diff --git a/include/shot.h b/include/shot.h index 4ec8acf..fa7516a 100644 --- a/include/shot.h +++ b/include/shot.h @@ -9,6 +9,7 @@ #endif #include "list.h" #include "tux.h" +#include "arena.h" typedef struct shot_struct { @@ -45,6 +46,7 @@ extern void drawListShot(list_t *listShot); #endif extern int isConflictWithListShot(list_t *listShot, int x, int y, int w, int h); extern void eventMoveListShot(list_t *listShot); +extern void checkShotIsInTuxScreen(arena_t *arena); extern void boundBombBall(shot_t *shot); extern void transformOnlyLasser(shot_t *shot); diff --git a/include/space.h b/include/space.h new file mode 100644 index 0000000..8f5ad7c --- /dev/null +++ b/include/space.h @@ -0,0 +1,36 @@ + +#ifndef SPACE_H + +#define SPACE_H + +#include "main.h" +#include "list.h" + +typedef struct space_struct +{ + int w; + int h; + int segW; + int segH; + list_t ***area; + list_t *list; + void (*getStatus)(void *p, int *id, int *x, int *y, int *w, int *h); + void (*setStatus)(void *p, int x, int y, int w, int h); +} space_t; + +extern space_t *newSpace(int w, int h, int segW, int segH, + void (*getStatus)(void *p, int *id, int *x, int *y, int *w, int *h), + void (*setStatus)(void *p, int x, int y, int w, int h)); + +extern void addObjectToSpace(space_t *p, void *item); +extern void getObjectFromSpace(space_t *p, int x, int y, int w, int h, list_t *list); +extern void* getObjectFromSpaceWithID(space_t *p, int id); +extern int isConflictWithObjectFromSpace(space_t *p, int x, int y, int w, int h); +extern void delObjectFromSpace(space_t *p, void *item); +extern void delObjectFromSpaceWithMem(space_t *p, void *item, void *f); +extern void moveObjectInSpace(space_t *p, void *item, int move_x, int move_y); +extern void printSpace(space_t *p); +extern void destroySpace(space_t *p, void *f); + +#endif + diff --git a/include/tux.h b/include/tux.h index c07cf0a..2905ffe 100644 --- a/include/tux.h +++ b/include/tux.h @@ -5,6 +5,7 @@ #include "main.h" #include "list.h" +#include "arena.h" #define TUX_STEP 7 #define TUX_LAYER 0 @@ -56,6 +57,8 @@ #define ITEM_COUNT 16 +#define SHOT_CHECK_AREA 25 + #define GUN_SIMPLE 0 #define GUN_DUAL_SIMPLE 1 #define GUN_SCATTER 2 @@ -114,7 +117,7 @@ extern void drawListTux(list_t *listTux); extern void eventTuxIsDead(tux_t *tux); extern tux_t* isConflictWithListTux(list_t *listTux, int x, int y, int w, int h); extern int isConflictTuxWithListTux(tux_t *tux, list_t *listTux); -extern void eventConflictTuxWithShot(list_t *listTux, list_t *listShot); +extern void eventConflictTuxWithShot(arena_t *arena); extern void eventConflictTuxWithTeleport(list_t *listTux, list_t *listTeleport); extern void tuxTeleport(tux_t *tux); extern void actionTux(tux_t *tux, int action); @@ -124,6 +127,8 @@ extern void getTuxProportion(tux_t *tux, int *x,int *y, int *w, int *h); extern void replaceTuxID(tux_t *tux, int id); extern int isTuxSeesTux(tux_t *tux, tux_t *thisTux); extern void setTuxProportion(tux_t *tux, int x, int y); +extern void getStatusTux(void *p, int *id, int *x,int *y, int *w, int *h); +extern void setStatusTux(void *p, int x, int y, int w, int h); extern void destroyTux(tux_t *tux); extern void quitTux(); |