basic text drawing

develop
Myk Taylor 2022-12-20 11:00:49 -08:00
parent 7f91cf6e2a
commit d7f51e5ed8
No known key found for this signature in database
GPG Key ID: 8A39CA0FA0C16E78
2 changed files with 25 additions and 33 deletions

@ -2150,19 +2150,13 @@ bool Gui::setDesignationCoords (const int32_t x, const int32_t y, const int32_t
df::coord Gui::getMousePos()
{
df::coord pos;
/* TODO: understand how this changes for v50
if (gps && gps->mouse_x > -1) {
// return invalid coords if the cursor is not over the map
DwarfmodeDims dims = getDwarfmodeViewDims();
if (gps->mouse_x < dims.map_x1 || gps->mouse_x > dims.map_x2 ||
gps->mouse_y < dims.map_y1 || gps->mouse_y > dims.map_y2) {
return pos;
}
if (gps && gps->mouse_x_pixel > -1) {
pos = getViewportPos();
pos.x += gps->mouse_x - 1;
pos.y += gps->mouse_y - 1;
}
/* TODO: understand how this changes for v50
pos.x += gps->mouse_x_pixel / tile_width;
pos.y += gps->mouse_y_pixel / tile_height;
*/
}
return pos;
}

@ -76,26 +76,20 @@ using std::string;
* Screen painting API.
*/
// returns text grid coordinates, even if the game map is scaled differently
// returns ui grid coordinates, even if the game map is scaled differently
df::coord2d Screen::getMousePos()
{
int32_t pixelx = 0, pixely = 0, tilex = 0, tiley = 0;
if (!enabler || !enabler->renderer->get_mouse_coords(
&pixelx, &pixely, &tilex, &tiley)) {
if (!gps)
return df::coord2d(-1, -1);
}
return df::coord2d(tilex, tiley);
return df::coord2d(gps->mouse_x_tile, gps->mouse_y_tile);
}
// returns the screen pixel coordinates
df::coord2d Screen::getMousePixels()
{
int32_t pixelx = 0, pixely = 0, tilex = 0, tiley = 0;
if (!enabler || !enabler->renderer->get_mouse_coords(
&pixelx, &pixely, &tilex, &tiley)) {
if (!gps)
return df::coord2d(-1, -1);
}
return df::coord2d(pixelx, pixely);
return df::coord2d(gps->mouse_x_pixel, gps->mouse_y_pixel);
}
df::coord2d Screen::getWindowSize()
@ -120,18 +114,22 @@ static bool doSetTile_default(const Pen &pen, int x, int y, bool map)
if (x < 0 || x >= dim.x || y < 0 || y >= dim.y)
return false;
/* TODO: understand how this changes for v50
// TODO: understand how this changes for v50
int index = ((x * gps->dimy) + y);
auto screen = gps->screen + index*4;
screen[0] = uint8_t(pen.ch);
screen[1] = uint8_t(pen.fg) & 15;
screen[2] = uint8_t(pen.bg) & 15;
screen[3] = uint8_t(pen.bold) & 1;
gps->screentexpos[index] = pen.tile;
gps->screentexpos_addcolor[index] = (pen.tile_mode == Screen::Pen::CharColor);
gps->screentexpos_grayscale[index] = (pen.tile_mode == Screen::Pen::TileColor);
gps->screentexpos_cf[index] = pen.tile_fg;
gps->screentexpos_cbr[index] = pen.tile_bg;
gps->screen1_opt_tile[index] = uint8_t(pen.ch);
// we need a new way to represent color
//auto argb = &gps->screen1_asciirgb[index * 8];
/* old code
// auto screen = gps->screen + index*4;
// screen[0] = uint8_t(pen.ch);
// screen[1] = uint8_t(pen.fg) & 15;
// screen[2] = uint8_t(pen.bg) & 15;
// screen[3] = uint8_t(pen.bold) & 1;
// gps->screentexpos[index] = pen.tile;
// gps->screentexpos_addcolor[index] = (pen.tile_mode == Screen::Pen::CharColor);
// gps->screentexpos_grayscale[index] = (pen.tile_mode == Screen::Pen::TileColor);
// gps->screentexpos_cf[index] = pen.tile_fg;
// gps->screentexpos_cbr[index] = pen.tile_bg;
*/
return true;
}