27int 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) {
31 nbmaxobjects = nbmaxgroup = nbmaxanims = nbtiles = nbanims = 1;
32 nbmaxgroup = nbmaxobjects;
44 Malloc((*map)->name,
char, ustrsizez(name));
46 ustrcpy((*map)->name, name);
48 if (!(*map)->grid || !(*map)->name)
51 (*map)->XSIZE = XSIZE;
52 (*map)->YSIZE = YSIZE;
54 for (x = 0; x < XSIZE; x++) {
55 for (y = 0; y < YSIZE; y++) {
63 (*map)->TILEW = TILEW;
64 (*map)->TILEH = TILEH;
65 (*map)->bgcolor = makeacol(0, 0, 0, 255);
66 (*map)->wirecolor = makeacol(255, 255, 255, 255);
70 (*map)->mousemap = create_bitmap((*map)->TILEW, (*map)->TILEH);
71 (*map)->colortile = create_bitmap((*map)->TILEW, (*map)->TILEH);
73 clear_to_color((*map)->mousemap, makecol(255, 255, 255));
74 clear_to_color((*map)->colortile, (*map)->bgcolor);
77 line((*map)->mousemap, 0, (TILEH >> 1) - 2, (TILEW >> 1) - 3, 0, makecol(255, 0, 0));
78 floodfill((*map)->mousemap, 1, 1, makecol(255, 0, 0));
80 line((*map)->mousemap, (TILEW >> 1) - 3, TILEH - 1, 0, (TILEH >> 1) + 1, makecol(0, 255, 0));
81 floodfill((*map)->mousemap, 1, TILEH - 2, makecol(0, 255, 0));
83 line((*map)->mousemap, (TILEW >> 1) + 2, TILEH - 1, TILEW - 1, (TILEH >> 1) + 1, makecol(0, 0, 255));
84 floodfill((*map)->mousemap, TILEW - 2, TILEH - 1, makecol(0, 0, 255));
86 line((*map)->mousemap, (TILEW >> 1) + 2, 0, TILEW - 1, (TILEH >> 1) - 2, makecol(255, 255, 0));
87 floodfill((*map)->mousemap, TILEW - 1, 0, makecol(255, 255, 0));
90 line((*map)->colortile, 0, (TILEH >> 1) - 2, (TILEW >> 1) - 3, 0, makecol(255, 0, 255));
91 floodfill((*map)->colortile, 1, 1, makecol(255, 0, 255));
93 line((*map)->colortile, (TILEW >> 1) - 3, TILEH - 1, 0, (TILEH >> 1) + 1, makecol(255, 0, 255));
94 floodfill((*map)->colortile, 1, TILEH - 2, makecol(255, 0, 255));
96 line((*map)->colortile, (TILEW >> 1) + 2, TILEH - 1, TILEW - 1, (TILEH >> 1) + 1, makecol(255, 0, 255));
97 floodfill((*map)->colortile, TILEW - 2, TILEH - 1, makecol(255, 0, 255));
99 line((*map)->colortile, (TILEW >> 1) + 2, 0, TILEW - 1, (TILEH >> 1) - 2, makecol(255, 0, 255));
100 floodfill((*map)->colortile, TILEW - 1, 0, makecol(255, 0, 255));
102 (*map)->ptanchorX = (*map)->X = 0;
103 (*map)->ptanchorY = (*map)->Y = 0;
185int ScreenToMap(
int mx,
int my,
int* Tilex,
int* Tiley, BITMAP* mousemap) {
187 int RegionX, RegionY,
188 RegionDX = 0, RegionDY = 0,
189 MouseMapX, MouseMapY,
190 MouseMapWidth, MouseMapHeight, c;
192 MouseMapWidth = mousemap->w;
193 MouseMapHeight = mousemap->h;
196 RegionX = (mx / MouseMapWidth);
197 RegionY = (my / MouseMapHeight) << 1;
201 MouseMapX = mx % MouseMapWidth;
202 MouseMapY = my % MouseMapHeight;
205 c = getpixel(mousemap, MouseMapX, MouseMapY);
207 if (c == makecol(255, 0, 0)) {
212 if (c == makecol(255, 255, 0)) {
217 if (c == makecol(255, 255, 255)) {
222 if (c == makecol(0, 255, 0)) {
227 if (c == makecol(0, 0, 255)) {
232 *Tilex = (RegionDX + RegionX);
233 *Tiley = (RegionDY + RegionY);
361 char temp_name[1024];
366 loaded = pack_fopen(filename,
"rb");
374 it = pack_igetl(loaded);
376 pack_fread(temp_name, it, loaded);
379 temp_map.
XSIZE = pack_igetl(loaded);
380 temp_map.
YSIZE = pack_igetl(loaded);
381 temp_map.
TILEW = pack_igetl(loaded);
382 temp_map.
TILEH = pack_igetl(loaded);
385 temp_map.
X = pack_igetl(loaded);
386 temp_map.
Y = pack_igetl(loaded);
387 temp_map.
bgcolor = pack_igetl(loaded);
393 2000, 2000, 2000, 2000, 2000);
394 (*map)->XSIZE = temp_map.
XSIZE;
395 (*map)->YSIZE = temp_map.
YSIZE;
396 (*map)->TILEW = temp_map.
TILEW;
397 (*map)->TILEH = temp_map.
TILEH;
400 (*map)->X = temp_map.
X;
401 (*map)->Y = temp_map.
Y;
402 (*map)->bgcolor = temp_map.
bgcolor;
406 for (it = 0; it < (*map)->XSIZE; it++) {
407 for (it1 = 0; it1 < (*map)->YSIZE; it1++) {
408 (*map)->grid[it + it1 * (*map)->XSIZE].tilenumber = pack_igetl(loaded);
409 (*map)->grid[it + it1 * (*map)->XSIZE].ability = pack_igetl(loaded);
410 (*map)->grid[it + it1 * (*map)->XSIZE].objectnumber = pack_igetl(loaded);
411 (*map)->grid[it + it1 * (*map)->XSIZE].music = pack_igetl(loaded);