From a1e9bc7430ca827808a502f455b20a23ba15e31a Mon Sep 17 00:00:00 2001 From: oroborus Date: Thu, 22 May 2008 20:13:25 +0000 Subject: - dopisany skutocny ID manager - objekt wall je ako modul - oprava chyby, pri prepinani screenov sa nevyprazdnoval layer - oprava chyby, pri odstraneni vsetkych obrazkov zo skupiny sa odstrani iba prvy obrazok - oprava chyby, pri odstraneni vsetkej hudby zo skupiny sa odstrani iba prva hudba PS: (asi) zajtra ten kod trochu esteticky upravim git-svn-id: http://opensvn.csie.org/tuxanci_ng@53 0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e --- src/idManager.c | 97 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 src/idManager.c (limited to 'src/idManager.c') diff --git a/src/idManager.c b/src/idManager.c new file mode 100644 index 0000000..1da30bc --- /dev/null +++ b/src/idManager.c @@ -0,0 +1,97 @@ + +#include +#include +#include + +#include "main.h" +#include "list.h" +#include "idManager.h" + +list_t * newListID() +{ + return newList(); +} + +int getNewID(list_t *p) +{ + 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; +} + +int isRegisterID(list_t *p, int id) +{ + int i; + + assert( p != NULL ); + + for( i = 0 ; i < p->count ; i++ ) + { + int *z; + + z = (int *) p->list[i]; + + if( *z == id ) + { + return i; + } + } + + return -1; +} + +void delID(list_t *p, int id) +{ + int index; + + assert( p != NULL ); + + index = isRegisterID(p, id); + + if( index == -1 ) + { + assert( ! "takyto ID nebol nikdy registrovany !" ); + return; // ha ha ha + } + + delListItem(p, index, free); + + return; +} + +void replaceID(list_t *p, int old_id, int new_id) +{ + delID(p, old_id); + + if( new_id != -1 ) + { + assert( isRegisterID(p, new_id) == -1 ); + addList(p, newInt(new_id) ); + } +} + +void destroyListID(list_t *p) +{ + assert( p != NULL ); + destroyListItem(p, free); +} -- cgit v1.2.3