summaryrefslogtreecommitdiff
path: root/src/idManager.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-05-28 19:25:15 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-05-28 19:25:15 +0000
commite5120505b21ff38dc25efcad129a440bbfa9996d (patch)
tree583e0683fb1f71f65bb81b0fcdf2e71587e1fe46 /src/idManager.c
parentc94fd664bba352732bf0e5c9a77e709b49f1aa4f (diff)
- zrychlenie hry, bez toho aby sa menila rychlost hlavneho casovaca
- oprava chyby v ID managery - ID manager spravuje ID-y pre vsetky objekty git-svn-id: http://opensvn.csie.org/tuxanci_ng@55 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e
Diffstat (limited to 'src/idManager.c')
-rw-r--r--src/idManager.c81
1 files changed, 38 insertions, 43 deletions
diff --git a/src/idManager.c b/src/idManager.c
index 1da30bc..ef46433 100644
--- a/src/idManager.c
+++ b/src/idManager.c
@@ -7,49 +7,25 @@
#include "list.h"
#include "idManager.h"
-list_t * newListID()
-{
- return newList();
-}
+static list_t *listID;
-int getNewID(list_t *p)
+void initListID()
{
- int ret;
- int i;
-
- assert( p != NULL );
-
- do{
- ret = random() % MAX_ID + 1;
-
- for( i = 0 ; i < p->count ; i++ )
- {
- int *z;
-
- z = (int *) p->list[i];
-
- if( *z == ret )continue;
- }
-
- }while(0);
-
- addList(p, newInt(ret) );
-
- //printf("new ID -> %d\n", ret);
- return ret;
+ listID = newList();
+ printf("init ID manger..\n");
}
-int isRegisterID(list_t *p, int id)
+int isRegisterID(int id)
{
int i;
- assert( p != NULL );
+ assert( listID != NULL );
- for( i = 0 ; i < p->count ; i++ )
+ for( i = 0 ; i < listID->count ; i++ )
{
int *z;
- z = (int *) p->list[i];
+ z = (int *) listID->list[i];
if( *z == id )
{
@@ -60,13 +36,29 @@ int isRegisterID(list_t *p, int id)
return -1;
}
-void delID(list_t *p, int id)
+int getNewID()
+{
+ int ret;
+
+ assert( listID != NULL );
+
+ do{
+ ret = random() % MAX_ID + 1;
+ }while( isRegisterID(ret) != -1 );
+
+ addList(listID, newInt(ret) );
+
+ //printf("new ID -> %d\n", ret);
+ return ret;
+}
+
+void delID(int id)
{
int index;
- assert( p != NULL );
+ assert( listID != NULL );
- index = isRegisterID(p, id);
+ index = isRegisterID(id);
if( index == -1 )
{
@@ -74,24 +66,27 @@ void delID(list_t *p, int id)
return; // ha ha ha
}
- delListItem(p, index, free);
+ delListItem(listID, index, free);
return;
}
-void replaceID(list_t *p, int old_id, int new_id)
+void replaceID(int old_id, int new_id)
{
- delID(p, old_id);
+ delID(old_id);
if( new_id != -1 )
{
- assert( isRegisterID(p, new_id) == -1 );
- addList(p, newInt(new_id) );
+ assert( isRegisterID(new_id) == -1 );
+ addList(listID, newInt(new_id) );
}
}
-void destroyListID(list_t *p)
+void quitListID()
{
- assert( p != NULL );
- destroyListItem(p, free);
+ printf("quit ID manger..\n");
+
+ assert( listID != NULL );
+ destroyListItem(listID, free);
}
+