diff options
| author | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-05-22 20:13:25 +0000 |
|---|---|---|
| committer | oroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e> | 2008-05-22 20:13:25 +0000 |
| commit | a1e9bc7430ca827808a502f455b20a23ba15e31a (patch) | |
| tree | 0f5367068425be881657840c08756662510adf39 /src/idManager.c | |
| parent | 7055882c93022da3a6a1cf74cebf3d17c44ce6c4 (diff) | |
- 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
Diffstat (limited to 'src/idManager.c')
| -rw-r--r-- | src/idManager.c | 97 |
1 files changed, 97 insertions, 0 deletions
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 <stdlib.h> +#include <stdio.h> +#include <assert.h> + +#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); +} |