1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
#include "formation.h"
#include "sector_map.h"
formation::formation (char name [])
{strcpy (f_name, name);
load (f_name);
}
formation::~formation ()
{
}
void formation::save ()
{save (f_name);
}
void formation::save (char name [])
{FILE *f;
open_f;
perform_save;
fclose (f);
. open_f
{f_open (f, complete (name, ".formation"), "w");
}.
. perform_save
{save_f;
save_men;
}.
. save_men
{for (int i = 0; i < num; i++)
fprintf (f, "%d %d %d %d\n", type [i], prio [i], x [i], y [i]);
}.
. save_f
{for (int i = 0; i < 8; i++)
{fprintf (f,
"%d %d %d %d\n",
s [i],
l [i],
ss [i],
ll [i]);
};
}.
}
void formation::load (char name [])
{FILE *f;
open_f;
init ();
perform_load;
fclose (f);
. open_f
{f_open (f, complete (name, ".formation"), "r");
}.
. perform_load
{load_f;
load_men;
}.
. load_f
{for (int i = 0; i < 8; i++)
{fscanf (f,
"%d %d %d %d",
&s [i],
&l [i],
&ss [i],
&ll [i]);
};
}.
. load_men
{while (another_record)
{read_record;
};
}.
. another_record
fscanf (f, "%d %d %d %d",&type[num],&prio[num],&x[num],&y[num]) != EOF.
. read_record
{num++;
}.
}
void formation::edit ()
{
}
void formation::init ()
{num = 0;
}
int formation::match (sector_map *sm)
{int r = 0;
for (int i = 0; i < 8; i++)
check_dir;
return r;
. check_dir
{check_s;
check_l;
}.
. check_s
{if (sm->s [i] > s [i] || sm->ss [i] > ss [i])
{r += 10 * i_max (0, sm->s [i] - s [i]);
r += 10 * i_max (0, sm->ss [i] - ss [i]);
};
}.
. check_l
{if (sm->l [i] > l [i] || sm->ll [i] > ll [i])
{r += i_max (0, sm->l [i] - l [i]);
r += i_max (0, sm->ll [i] - ll [i]);
};
}.
}
|