fix generator, not completed
This commit is contained in:
parent
41ba6b25c7
commit
bacc20acb5
15
generator.c
15
generator.c
@ -88,6 +88,9 @@ void create_map(t_pixel** map, t_team* teams, int w, int h){
|
|||||||
error = 1;
|
error = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
map[x_rand][y_rand].type=SPAWN;
|
||||||
|
|
||||||
teams[k].spawn.x = x_rand;
|
teams[k].spawn.x = x_rand;
|
||||||
teams[k].spawn.y = y_rand;
|
teams[k].spawn.y = y_rand;
|
||||||
}
|
}
|
||||||
@ -106,7 +109,7 @@ void create_epicenter(int type){
|
|||||||
}
|
}
|
||||||
|
|
||||||
int generate(int x, int y){
|
int generate(int x, int y){
|
||||||
int i, ratio, dist_to_epi, sum, val, type;
|
int i, ratio, dist_to_epi, sum, val;
|
||||||
int proba[5];
|
int proba[5];
|
||||||
t_epicenter epi;
|
t_epicenter epi;
|
||||||
|
|
||||||
@ -114,22 +117,26 @@ int generate(int x, int y){
|
|||||||
epi = l_epicenters[i];
|
epi = l_epicenters[i];
|
||||||
dist_to_epi = distance_manhattan(x,y,epi.x, epi.y);
|
dist_to_epi = distance_manhattan(x,y,epi.x, epi.y);
|
||||||
if (dist_to_epi < epi.radius){
|
if (dist_to_epi < epi.radius){
|
||||||
ratio = (int) ((epi.radius - dist_to_epi) * 100) / epi.radius;
|
ratio = (int) (dist_to_epi * 100) / epi.radius;
|
||||||
proba[epi.type-1]=epi.power * ratio;
|
proba[epi.type-1]=epi.power * ratio;
|
||||||
|
}else{
|
||||||
|
proba[epi.type-1]=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sum=0;
|
sum=0;
|
||||||
for (i=0;i<5;i++){
|
for (i=0;i<5;i++){
|
||||||
sum += proba[i];
|
sum += proba[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
val = rand()%sum;
|
val = rand()%sum;
|
||||||
|
|
||||||
int seuil = 0;
|
int seuil = 0;
|
||||||
|
|
||||||
for (i=0;i<5;i++){
|
for (i=0;i<5;i++){
|
||||||
seuil += proba[i];
|
seuil += proba[i];
|
||||||
if(val < seuil)
|
if(val < seuil)
|
||||||
return i+1;
|
return i+2;
|
||||||
}
|
}
|
||||||
return GRASS;
|
return GRASS;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user