summaryrefslogtreecommitdiff
path: root/src/idManager.c
diff options
context:
space:
mode:
authororoborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-05-22 20:13:25 +0000
committeroroborus <oroborus@0ee4d065-81f0-4d1e-b06c-ff20ad07cc3e>2008-05-22 20:13:25 +0000
commita1e9bc7430ca827808a502f455b20a23ba15e31a (patch)
tree0f5367068425be881657840c08756662510adf39 /src/idManager.c
parent7055882c93022da3a6a1cf74cebf3d17c44ce6c4 (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.c97
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);
+}