Polished map editor. Fixed crop function.

This commit is contained in:
Ryan "Lofenyy" Medeiros 2023-06-23 17:48:54 -06:00
parent 697c9c6198
commit 6268c5f032
7 changed files with 134 additions and 67 deletions

2
Assets/House3 Normal file
View File

@ -0,0 +1,2 @@
10 x 28
FFFFFFFFFFFF FwwwwwwwwwwF FwwwwwwwwwwF RRRRRRRR |____D_| t t PPPPPPPP . PPPPPPPPPPPPPP . . . .

2
Assets/House4 Normal file
View File

@ -0,0 +1,2 @@
14 x 28
FFFFFFFFFFFF FwwwwwwwwwwF FwwwwwwwwwwF RRRRRRRR |____D_| t t PPPPPPPP . PPPPPPPPPPPPPP . . . . vvvvvvvvvv vvvvvvvvvvvv

2
Assets/House5 Normal file
View File

@ -0,0 +1,2 @@
14 x 28
FFFFFFFFFFFF FwwwwwwwwwwF o FwwwwwwwwwwF RRRRRRRR |____D_| t t PPPPPPPP . PPPPPPPPPPPPPP . . . . vvvvvvvvvv vvvvvvvvvvvv

View File

@ -1,2 +0,0 @@
55 x 55
FFFFFFFFFFFF FwwwwwwwwwwF FwwwwwwwwwwF RRRRRRRR |____D_| t t PPPPPPPP . PPPPPPPPPPPPPP . . . . <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

BIN
Source/a.out Executable file

Binary file not shown.

View File

@ -36,110 +36,133 @@ char tile_W[8] = {'~','.',' ',' ',' ','.','~','^'};
int newMap()
{
char buffer1[256];
char buffer1[256] = "";
char buffer2[256];
echo();
mvprintw(1,0,"Map height: ");
getnstr(buffer1, 256);
mvprintw(2,0,"Map width: ");
getnstr(buffer2, 256);
mapYmax = atoi(buffer1);
mapXmax = atoi(buffer2);
map = malloc(mapYmax*sizeof(uint8_t*));
for(int i=0; i < mapYmax; i++) map[i] = malloc(mapXmax*sizeof(uint8_t));
if(map == NULL) exit(1);
//Blank our map
for(int H = 0;H < mapYmax;H++)
if(strcmp(buffer1, "") != 0)
{
for(int W = 0;W < mapXmax;W++) map[H][W] = ' ';
mvprintw(2,0,"Map width: ");
getnstr(buffer2, 256);
mapYmax = atoi(buffer1);
mapXmax = atoi(buffer2);
map = malloc(mapYmax*sizeof(uint8_t*));
for(int i=0; i < mapYmax; i++) map[i] = malloc(mapXmax*sizeof(uint8_t));
if(map == NULL) exit(1);
//Blank our map
for(int H = 0;H < mapYmax;H++)
{
for(int W = 0;W < mapXmax;W++) map[H][W] = ' ';
}
}
}
int saveMap()
{
char buffer[256];
char buffer[256] = "";
echo();
mvprintw(1,0,"Save name: ");
getnstr(buffer, 256);
FILE* fp = fopen(buffer,"w");
fprintf(fp, "%li x %li\n", mapYmax, mapXmax);
for(int H = 0;H < mapYmax;H++)
if(strcmp(buffer, "") != 0)
{
for(int W = 0;W < mapXmax;W++) fputc(map[H][W], fp);
FILE* fp = fopen(buffer,"w");
if(fp == NULL) return 1;
fprintf(fp, "%li x %li\n", mapYmax, mapXmax);
for(int H = 0;H < mapYmax;H++)
{
for(int W = 0;W < mapXmax;W++) fputc(map[H][W], fp);
}
fclose(fp);
}
fclose(fp);
}
int loadMap()
{
char buffer[256];
char buffer[256] = "";
echo();
mvprintw(1,0,"Load name: ");
getnstr(buffer, 256);
FILE* fp = fopen(buffer,"r");
fscanf(fp, "%li x %li\n", &mapYmax, &mapXmax);
map = malloc(mapYmax*sizeof(uint8_t*));
for(int i=0; i < mapYmax; i++) map[i] = malloc(mapXmax*sizeof(uint8_t));
if(map == NULL) exit(1);
for(int H = 0;H < mapYmax;H++)
if(strcmp(buffer, "") != 0)
{
for(int W = 0;W < mapXmax;W++) map[H][W] = fgetc(fp);
FILE* fp = fopen(buffer,"r");
if(fp == NULL) return 1;
fscanf(fp, "%li x %li\n", &mapYmax, &mapXmax);
map = malloc(mapYmax*sizeof(uint8_t*));
for(int i=0; i < mapYmax; i++) map[i] = malloc(mapXmax*sizeof(uint8_t));
if(map == NULL) exit(1);
for(int H = 0;H < mapYmax;H++)
{
for(int W = 0;W < mapXmax;W++) map[H][W] = fgetc(fp);
}
}
}
int cropMap()
{
char buffer1[256];
char buffer1[256] = "";
char buffer2[256];
char buffer3[256];
char buffer4[256];
int FX;
int FY;
int TX;
int TY;
int FX = 0;
int FY = 0;
int TX = 0;
int TY = 0;
echo();
mvprintw(1,0,"From X: ");
getnstr(buffer1, 256);
mvprintw(2,0,"From Y: ");
getnstr(buffer2, 256);
mvprintw(3,0,"To X: ");
getnstr(buffer3, 256);
mvprintw(4,0,"To X: ");
getnstr(buffer4, 256);
FX = atoi(buffer1);
FY = atoi(buffer2);
TX = atoi(buffer3);
TY = atoi(buffer4);
TmapXmax = TX-FX;
TmapYmax = TY-FY;
Tmap = malloc(TmapYmax*sizeof(uint8_t*));
for(int i=0; i < TmapYmax; i++) Tmap[i] = malloc(TmapXmax*sizeof(uint8_t));
if(Tmap == NULL) exit(1);
for(int W = FX;W < TX;W++)
for(int H = FY;H < FY;H++)
if(strcmp(buffer1, "") != 0)
{
mvprintw(2,0,"From Y: ");
getnstr(buffer2, 256);
mvprintw(3,0,"To X: ");
getnstr(buffer3, 256);
mvprintw(4,0,"To Y: ");
getnstr(buffer4, 256);
FX = atoi(buffer1);
FY = atoi(buffer2);
TX = atoi(buffer3);
TY = atoi(buffer4);
TmapXmax = TX-FX;
TmapYmax = TY-FY;
Tmap = malloc(TmapYmax*sizeof(uint8_t*));
for(int i=0; i < TmapYmax; i++) Tmap[i] = malloc(TmapXmax*sizeof(uint8_t));
if(Tmap == NULL) exit(1);
for(int W = FX;W < TX;W++)
{
if((H >= 0) && (H <= mapYmax) && (W >= 0) && (W <= mapXmax))
Tmap[H-FY][W-FX] = map[H][W];
else
Tmap[H-FY][W-FX] = ' ';
for(int H = FY;H < TY;H++)
{
if((H >= 0) && (H < mapYmax) && (W >= 0) && (W < mapXmax))
{
Tmap[H-FY][W-FX] = map[H][W];
}
else
{
Tmap[H-FY][W-FX] = ' ';
}
}
}
memcpy(map, Tmap, sizeof(Tmap));
mapXmax = TmapXmax;
mapYmax = TmapYmax;
map = Tmap;
mapXmax = TmapXmax;
mapYmax = TmapYmax;
}
}
int main()
@ -207,6 +230,30 @@ int main()
attron(COLOR_PAIR(6));
mvprintw(H,W,"%c", ' ');
break;
case '^': //Path
attron(COLOR_PAIR(4));
mvprintw(H,W,"%c", '^');
break;
case 'v': //Path
attron(COLOR_PAIR(4));
mvprintw(H,W,"%c", 'v');
break;
case '<': //Path
attron(COLOR_PAIR(4));
mvprintw(H,W,"%c", '<');
break;
case '>': //Path
attron(COLOR_PAIR(4));
mvprintw(H,W,"%c", '>');
break;
case 'W': //Path
attron(COLOR_PAIR(3));
mvprintw(H,W,"%c", 'W');
break;
case 'o': //Path
attron(COLOR_PAIR(9));
mvprintw(H,W,"%c", 'o');
break;
}
}
else
@ -233,7 +280,16 @@ int main()
else if(k == KEY_RIGHT) x++;
//Tool controls
else if(k == ' ') map[ymax/2 +y][xmax/2 +x] = tip;
else if((k == ' '))
{
if((ymax/2+y >= 0) && (ymax/2+y < mapYmax))
{
if((xmax/2+x >= 0) && (xmax/2+x < mapXmax))
{
map[ymax/2 +y][xmax/2 +x] = tip;
}
}
}
else if(k == KEY_F(5)) saveMap();
else if(k == KEY_F(6)) loadMap();
else if(k == KEY_F(7)) cropMap();
@ -249,6 +305,12 @@ int main()
else if(k == 'D') tip = 'D';
else if(k == 'P') tip = 'P';
else if(k == 'R') tip = 'R';
else if(k == 'v') tip = 'v';
else if(k == '^') tip = '^';
else if(k == '<') tip = '<';
else if(k == '>') tip = '>';
else if(k == 'W') tip = 'W';
else if(k == 'o') tip = 'o';
}
endwin();

View File

@ -8,13 +8,14 @@ int initEngine()
halfdelay(2);
init_pair(1, COLOR_WHITE, COLOR_BLACK);
init_pair(2, COLOR_WHITE, COLOR_BLUE);
init_pair(2, COLOR_WHITE, COLOR_BLUE);
init_pair(3, COLOR_BLACK, COLOR_GREEN);
init_pair(4, COLOR_RED, COLOR_GREEN);
init_pair(5, COLOR_GREEN, COLOR_GREEN);
init_pair(6, COLOR_WHITE, COLOR_WHITE);
init_pair(7, COLOR_RED, COLOR_WHITE);
init_pair(8, COLOR_BLACK, COLOR_WHITE);
init_pair(9, COLOR_YELLOW,COLOR_GREEN);
}
int joycon()