| commit 66: | c03900863615 |
| parent 65: | b00445db4d8a |
| branch: | market-1 |
changed initial of agents from default to self new function
Changed (Δ699 bytes):
raw changeset »
agents/evil.c (28 lines added, 16 lines removed)
agents/simpleton.c (28 lines added, 16 lines removed)
agtevo1.c (4 lines added, 9 lines removed)
descr (1 lines added, 1 lines removed)
Up to file-list agents/evil.c:
| … | … | @@ -51,32 +51,44 @@ action_context_t* context(agent_t* agent |
51 |
51 |
return agent; |
52 |
52 |
} |
53 |
53 |
|
54 |
void unref(agent_t* agent) |
|
55 |
{ |
|
56 |
if (agent->neuro) |
|
57 |
neuro_unref(agent->neuro); |
|
58 |
if (agent->genome) |
|
59 |
genome_unref(agent->genome); |
|
60 |
counter --; |
|
61 |
} |
|
62 |
||
54 |
63 |
agent_t* new(agent_t* agent) |
55 |
64 |
{ |
56 |
65 |
agent_t* newagent = (agent_t*) ksmalloc(sizeof(*agent), "agent_t"); |
57 |
66 |
newagent->neuro = NULL; |
58 |
67 |
newagent->genome = NULL; |
59 |
|
|
68 |
if (agent) { |
|
69 |
newagent->cell = agent->cell; |
|
70 |
newagent->direction = agent->direction; |
|
71 |
newagent->infected = agent->infected; |
|
72 |
newagent->action = agent->action; |
|
73 |
newagent->new_agent = agent->new_agent; |
|
74 |
newagent->unref = agent->unref; |
|
75 |
newagent->energy = agent->energy; |
|
76 |
} |
|
77 |
else { |
|
78 |
newagent->energy = default_energy; |
|
79 |
newagent->cell = NULL; |
|
80 |
newagent->direction = TOP; |
|
81 |
newagent->infected = 0; |
|
82 |
newagent->action = action; |
|
83 |
newagent->new_agent = new; |
|
84 |
newagent->unref = unref; |
|
85 |
} |
|
60 |
86 |
newagent->energy_max = default_energy_max; |
61 |
newagent->cell = agent->cell; |
|
62 |
newagent->direction = agent->direction; |
|
63 |
newagent->infected = agent->infected; |
|
64 |
newagent->action = agent->action; |
|
65 |
newagent->new_agent = agent->new_agent; |
|
66 |
newagent->unref = agent->unref; |
|
67 |
87 |
newagent->action_context = context(newagent); |
88 |
||
68 |
89 |
return newagent; |
69 |
90 |
} |
70 |
91 |
|
71 |
void unref(agent_t* agent) |
|
72 |
{ |
|
73 |
if (agent->neuro) |
|
74 |
neuro_unref(agent->neuro); |
|
75 |
if (agent->genome) |
|
76 |
ksfree(agent->genome); |
|
77 |
counter --; |
|
78 |
} |
|
79 |
||
80 |
92 |
void stat() |
81 |
93 |
{ |
82 |
94 |
printf("evil\t %d\n", counter); |
Up to file-list agents/simpleton.c:
| … | … | @@ -51,32 +51,44 @@ action_context_t* context(agent_t* agent |
51 |
51 |
return agent; |
52 |
52 |
} |
53 |
53 |
|
54 |
void unref(agent_t* agent) |
|
55 |
{ |
|
56 |
if (agent->neuro) |
|
57 |
neuro_unref(agent->neuro); |
|
58 |
if (agent->genome) |
|
59 |
genome_unref(agent->genome); |
|
60 |
counter --; |
|
61 |
} |
|
62 |
||
54 |
63 |
agent_t* new(agent_t* agent) |
55 |
64 |
{ |
56 |
65 |
agent_t* newagent = (agent_t*) ksmalloc(sizeof(*agent), "agent_t"); |
57 |
66 |
newagent->neuro = NULL; |
58 |
67 |
newagent->genome = NULL; |
59 |
|
|
68 |
if (agent) { |
|
69 |
newagent->cell = agent->cell; |
|
70 |
newagent->direction = agent->direction; |
|
71 |
newagent->infected = agent->infected; |
|
72 |
newagent->action = agent->action; |
|
73 |
newagent->new_agent = agent->new_agent; |
|
74 |
newagent->unref = agent->unref; |
|
75 |
newagent->energy = agent->energy; |
|
76 |
} |
|
77 |
else { |
|
78 |
newagent->energy = default_energy; |
|
79 |
newagent->cell = NULL; |
|
80 |
newagent->direction = TOP; |
|
81 |
newagent->infected = 0; |
|
82 |
newagent->action = action; |
|
83 |
newagent->new_agent = new; |
|
84 |
newagent->unref = unref; |
|
85 |
} |
|
60 |
86 |
newagent->energy_max = default_energy_max; |
61 |
newagent->cell = agent->cell; |
|
62 |
newagent->direction = agent->direction; |
|
63 |
newagent->infected = agent->infected; |
|
64 |
newagent->action = agent->action; |
|
65 |
newagent->new_agent = agent->new_agent; |
|
66 |
newagent->unref = agent->unref; |
|
67 |
87 |
newagent->action_context = context(newagent); |
88 |
||
68 |
89 |
return newagent; |
69 |
90 |
} |
70 |
91 |
|
71 |
void unref(agent_t* agent) |
|
72 |
{ |
|
73 |
if (agent->neuro) |
|
74 |
neuro_unref(agent->neuro); |
|
75 |
if (agent->genome) |
|
76 |
ksfree(agent->genome); |
|
77 |
counter --; |
|
78 |
} |
|
79 |
||
80 |
92 |
void stat() |
81 |
93 |
{ |
82 |
94 |
printf("simpleton %d\n", counter); |
7 |
7 |
#include "world.h" |
8 |
8 |
#include "agent.h" |
9 |
9 |
|
10 |
typedef action_context_t* (*context_getter)(agent_t* agent); |
|
11 |
||
12 |
10 |
world_t* world; |
13 |
11 |
int age; |
14 |
12 |
extern int helps; |
| … | … | @@ -48,14 +46,11 @@ void save_dump(int sig) |
48 |
46 |
agent_t* agent_new_from_object(void* handle) |
49 |
47 |
{ |
50 |
48 |
agent_t* agent; |
51 |
context_getter getter; |
|
52 |
49 |
void* kfree; |
53 |
agent = agent_new_default(); |
|
54 |
agent->action = dlsym(handle, "action"); |
|
55 |
agent->new_agent = dlsym(handle, "new"); |
|
56 |
agent->unref = dlsym(handle, "unref"); |
|
57 |
getter = dlsym(handle, "context"); |
|
58 |
agent->action_context = getter(agent); |
|
50 |
agent_t* (*new)(agent_t* agent); |
|
51 |
new = dlsym(handle, "new"); |
|
52 |
agent = new(NULL); |
|
53 |
agent->new_agent = new; |
|
59 |
54 |
return agent; |
60 |
55 |
} |
61 |
56 |
