28int create_empty_map(
MAP** map,
char* name,
int XSIZE,
int YSIZE,
int TILEW,
int TILEH,
int nbmaxobjects,
int nbmaxgroup,
int nbmaxanims,
int nbtiles,
int nbanims) {
32 nbmaxobjects = nbmaxgroup = nbmaxanims = nbtiles = nbanims = 1;
33 nbmaxgroup = nbmaxobjects;
45 Malloc((*map)->name,
char, ustrsizez(name));
47 ustrcpy((*map)->name, name);
49 if (!(*map)->grid || !(*map)->name)
52 (*map)->XSIZE = XSIZE;
53 (*map)->YSIZE = YSIZE;
55 for (x = 0; x < XSIZE; x++) {
56 for (y = 0; y < YSIZE; y++) {
64 (*map)->TILEW = TILEW;
65 (*map)->TILEH = TILEH;
66 (*map)->bgcolor = makeacol(0, 0, 0, 255);
67 (*map)->wirecolor = makeacol(255, 255, 255, 255);
71 (*map)->mousemap = create_bitmap((*map)->TILEW, (*map)->TILEH);
72 (*map)->colortile = create_bitmap((*map)->TILEW, (*map)->TILEH);
74 clear_to_color((*map)->mousemap, makecol(255, 255, 255));
75 clear_to_color((*map)->colortile, (*map)->bgcolor);
78 line((*map)->mousemap, 0, (TILEH >> 1) - 2, (TILEW >> 1) - 3, 0, makecol(255, 0, 0));
79 floodfill((*map)->mousemap, 1, 1, makecol(255, 0, 0));
81 line((*map)->mousemap, (TILEW >> 1) - 3, TILEH - 1, 0, (TILEH >> 1) + 1, makecol(0, 255, 0));
82 floodfill((*map)->mousemap, 1, TILEH - 2, makecol(0, 255, 0));
84 line((*map)->mousemap, (TILEW >> 1) + 2, TILEH - 1, TILEW - 1, (TILEH >> 1) + 1, makecol(0, 0, 255));
85 floodfill((*map)->mousemap, TILEW - 2, TILEH - 1, makecol(0, 0, 255));
87 line((*map)->mousemap, (TILEW >> 1) + 2, 0, TILEW - 1, (TILEH >> 1) - 2, makecol(255, 255, 0));
88 floodfill((*map)->mousemap, TILEW - 1, 0, makecol(255, 255, 0));
91 line((*map)->colortile, 0, (TILEH >> 1) - 2, (TILEW >> 1) - 3, 0, makecol(255, 0, 255));
92 floodfill((*map)->colortile, 1, 1, makecol(255, 0, 255));
94 line((*map)->colortile, (TILEW >> 1) - 3, TILEH - 1, 0, (TILEH >> 1) + 1, makecol(255, 0, 255));
95 floodfill((*map)->colortile, 1, TILEH - 2, makecol(255, 0, 255));
97 line((*map)->colortile, (TILEW >> 1) + 2, TILEH - 1, TILEW - 1, (TILEH >> 1) + 1, makecol(255, 0, 255));
98 floodfill((*map)->colortile, TILEW - 2, TILEH - 1, makecol(255, 0, 255));
100 line((*map)->colortile, (TILEW >> 1) + 2, 0, TILEW - 1, (TILEH >> 1) - 2, makecol(255, 0, 255));
101 floodfill((*map)->colortile, TILEW - 1, 0, makecol(255, 0, 255));
103 (*map)->ptanchorX = (*map)->X = 0;
104 (*map)->ptanchorY = (*map)->Y = 0;
186int ScreenToMap(
int mx,
int my,
int* Tilex,
int* Tiley, BITMAP* mousemap) {
188 int RegionX, RegionY,
189 RegionDX = 0, RegionDY = 0,
190 MouseMapX, MouseMapY,
191 MouseMapWidth, MouseMapHeight, c;
193 MouseMapWidth = mousemap->w;
194 MouseMapHeight = mousemap->h;
197 RegionX = (mx / MouseMapWidth);
198 RegionY = (my / MouseMapHeight) << 1;
202 MouseMapX = mx % MouseMapWidth;
203 MouseMapY = my % MouseMapHeight;
206 c = getpixel(mousemap, MouseMapX, MouseMapY);
208 if (c == makecol(255, 0, 0)) {
213 if (c == makecol(255, 255, 0)) {
218 if (c == makecol(255, 255, 255)) {
223 if (c == makecol(0, 255, 0)) {
228 if (c == makecol(0, 0, 255)) {
233 *Tilex = (RegionDX + RegionX);
234 *Tiley = (RegionDY + RegionY);
362 char temp_name[1024];
367 loaded = pack_fopen(filename,
"rb");
375 it = pack_igetl(loaded);
377 pack_fread(temp_name, it, loaded);
380 temp_map.
XSIZE = pack_igetl(loaded);
381 temp_map.
YSIZE = pack_igetl(loaded);
382 temp_map.
TILEW = pack_igetl(loaded);
383 temp_map.
TILEH = pack_igetl(loaded);
386 temp_map.
X = pack_igetl(loaded);
387 temp_map.
Y = pack_igetl(loaded);
388 temp_map.
bgcolor = pack_igetl(loaded);
394 2000, 2000, 2000, 2000, 2000);
395 (*map)->XSIZE = temp_map.
XSIZE;
396 (*map)->YSIZE = temp_map.
YSIZE;
397 (*map)->TILEW = temp_map.
TILEW;
398 (*map)->TILEH = temp_map.
TILEH;
401 (*map)->X = temp_map.
X;
402 (*map)->Y = temp_map.
Y;
403 (*map)->bgcolor = temp_map.
bgcolor;
407 for (it = 0; it < (*map)->XSIZE; it++) {
408 for (it1 = 0; it1 < (*map)->YSIZE; it1++) {
409 (*map)->grid[it + it1 * (*map)->XSIZE].tilenumber = pack_igetl(loaded);
410 (*map)->grid[it + it1 * (*map)->XSIZE].ability = pack_igetl(loaded);
411 (*map)->grid[it + it1 * (*map)->XSIZE].objectnumber = pack_igetl(loaded);
412 (*map)->grid[it + it1 * (*map)->XSIZE].music = pack_igetl(loaded);