Symbolische Konstanten fuer walker
Die Verwendung des Arrays pro NPC ist so besser lesbar.
Change-Id: I6bf5292de5c6211874519bbf20890270ab3e5b7c
diff --git a/p/service/padreic/mnpc/walk_master.c b/p/service/padreic/mnpc/walk_master.c
index 3e003c8..6231cfd 100644
--- a/p/service/padreic/mnpc/walk_master.c
+++ b/p/service/padreic/mnpc/walk_master.c
@@ -28,6 +28,10 @@
#define RANDOM(r) ((r & 0xff00) >> 8) /* 8 Bit = 256 */
#define WERT(t, r) ((t & 0x00ff)+((r << 8) & 0xff00)) /* 16 Bit */
+// Indizes fuer walker
+#define WALK_DELAY 0
+#define WALK_CLOSURE 1
+
static int counter; // zur Orientierung im walker-array
static int num_walker; // anzahl der walker im array
//static mixed *walker; // ({ ..., ({ ..., ({ wert, closure }), ...}), ...})
@@ -94,7 +98,7 @@
for (i=MAX_DELAYTIME; i>=0; i--) {
for (j=sizeof(walker[i])-1; j>=0; j--)
{
- if (get_type_info(walker[i][j][1], 2)==previous_object())
+ if (get_type_info(walker[i][j][WALK_CLOSURE], 2)==previous_object())
{
if (i==counter) // koennte gerade im heart_beat stecken...
walker[i][j]=({ 0, #'dummy_walk });
@@ -120,7 +124,7 @@
for (i=MAX_DELAYTIME; i>=0; i--)
{
for (j=sizeof(walker[i])-1; j>=0; j--)
- if (get_type_info(walker[i][j][1], 2)==previous_object())
+ if (get_type_info(walker[i][j][WALK_CLOSURE], 2)==previous_object())
reg++;
}
return reg;
@@ -141,9 +145,11 @@
}
else {
if (walker[counter][i][1] &&
- !catch(tmp=(int)funcall(walker[counter][i][1])) && tmp) {
- tmp=counter+(TIME(walker[counter][i][0])
- +random(RANDOM(walker[counter][i][0])))/2;
+ !catch(tmp=(int)funcall(walker[counter][i][WALK_CLOSURE]))
+ && tmp)
+ {
+ tmp=counter+(TIME(walker[counter][i][WALK_DELAY])
+ +random(RANDOM(walker[counter][i][WALK_DELAY])))/2;
if (tmp>MAX_DELAYTIME) tmp-=MAX_DELAYTIME;
walker[tmp]+=({ walker[counter][i] });
num_walker++;