mirror of
https://github.com/zenorogue/hyperrogue.git
synced 2025-06-16 13:24:08 +00:00
pen width and paint color are now defined in mapeditor.cpp not texture.cpp
This commit is contained in:
parent
f504eef7df
commit
4ffbe27784
@ -17,7 +17,9 @@ EX namespace mapeditor {
|
|||||||
static const int USERSHAPEGROUPS = 5;
|
static const int USERSHAPEGROUPS = 5;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
color_t dtfill;
|
EX color_t dtfill = 0;
|
||||||
|
EX color_t dtcolor = 0x000000FF;
|
||||||
|
EX ld dtwidth = .02;
|
||||||
|
|
||||||
/* drawing_tool shapes */
|
/* drawing_tool shapes */
|
||||||
struct dtshape {
|
struct dtshape {
|
||||||
@ -131,15 +133,15 @@ EX namespace mapeditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(drawing_tool && (cmode & sm::DRAW)) {
|
if(drawing_tool && (cmode & sm::DRAW)) {
|
||||||
dynamicval<ld> lw(vid.linewidth, vid.linewidth * texture::penwidth * 100);
|
dynamicval<ld> lw(vid.linewidth, vid.linewidth * dtwidth * 100);
|
||||||
if(holdmouse && mousekey == 'c')
|
if(holdmouse && mousekey == 'c')
|
||||||
queue_hcircle(rgpushxto0(lstart), hdist(lstart, mouseh));
|
queue_hcircle(rgpushxto0(lstart), hdist(lstart, mouseh));
|
||||||
else if(holdmouse && mousekey == 'l')
|
else if(holdmouse && mousekey == 'l')
|
||||||
queueline(lstart, mouseh, texture::config.paint_color, 4 + vid.linequality, PPR::LINE);
|
queueline(lstart, mouseh, dtcolor, 4 + vid.linequality, PPR::LINE);
|
||||||
else if(!holdmouse) {
|
else if(!holdmouse) {
|
||||||
transmatrix T = rgpushxto0(mouseh);
|
transmatrix T = rgpushxto0(mouseh);
|
||||||
queueline(T * xpush0(-.1), T * xpush0(.1), texture::config.paint_color);
|
queueline(T * xpush0(-.1), T * xpush0(.1), dtcolor);
|
||||||
queueline(T * ypush0(-.1), T * ypush0(.1), texture::config.paint_color);
|
queueline(T * ypush0(-.1), T * ypush0(.1), dtcolor);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -147,9 +149,9 @@ EX namespace mapeditor {
|
|||||||
/** dtshapes takes ownership of sh */
|
/** dtshapes takes ownership of sh */
|
||||||
void dt_add(cell *where, dtshape *sh) {
|
void dt_add(cell *where, dtshape *sh) {
|
||||||
sh->where = where;
|
sh->where = where;
|
||||||
sh->col = texture::config.paint_color;
|
sh->col = dtcolor;
|
||||||
sh->fill = dtfill;
|
sh->fill = dtfill;
|
||||||
sh->lw = texture::penwidth * 100;
|
sh->lw = dtwidth * 100;
|
||||||
|
|
||||||
dtshapes.push_back(unique_ptr<dtshape>(sh));
|
dtshapes.push_back(unique_ptr<dtshape>(sh));
|
||||||
}
|
}
|
||||||
@ -1747,7 +1749,7 @@ namespace mapeditor {
|
|||||||
displayButton(8, 8+fs*16, XLAT("p = color"), 'p', 0);
|
displayButton(8, 8+fs*16, XLAT("p = color"), 'p', 0);
|
||||||
if(drawing_tool)
|
if(drawing_tool)
|
||||||
displayButton(8, 8+fs*17, XLAT("f = fill") + (dtfill ? " (on)" : " (off)"), 'f', 0);
|
displayButton(8, 8+fs*17, XLAT("f = fill") + (dtfill ? " (on)" : " (off)"), 'f', 0);
|
||||||
displayButton(8, 8+fs*4, XLAT("b = brush size: %1", fts(texture::penwidth)), 'b', 0);
|
displayButton(8, 8+fs*4, XLAT("b = brush size: %1", fts(dtwidth)), 'b', 0);
|
||||||
displayButton(8, 8+fs*5, XLAT("u = undo"), 'u', 0);
|
displayButton(8, 8+fs*5, XLAT("u = undo"), 'u', 0);
|
||||||
displaymm('d', 8, 8+fs*7, 2, vid.fsize, XLAT("d = draw"), 0);
|
displaymm('d', 8, 8+fs*7, 2, vid.fsize, XLAT("d = draw"), 0);
|
||||||
displaymm('l', 8, 8+fs*8, 2, vid.fsize, XLAT("l = line"), 0);
|
displaymm('l', 8, 8+fs*8, 2, vid.fsize, XLAT("l = line"), 0);
|
||||||
@ -1779,7 +1781,7 @@ namespace mapeditor {
|
|||||||
if(8 + fs * (6+i) < vid.yres - 8 - fs * 7)
|
if(8 + fs * (6+i) < vid.yres - 8 - fs * 7)
|
||||||
displayColorButton(vid.xres-8, 8+fs*(6+i), "###", 1000 + i, 16, 1, dialog::displaycolor(texture_colors[i+1]));
|
displayColorButton(vid.xres-8, 8+fs*(6+i), "###", 1000 + i, 16, 1, dialog::displaycolor(texture_colors[i+1]));
|
||||||
|
|
||||||
if(displayfr(vid.xres-8 - fs * 3, 8+fs*(6+i), 0, vid.fsize, its(i+1), texture::penwidth == brush_sizes[i] ? 0xFF8000 : 0xC0C0C0, 16))
|
if(displayfr(vid.xres-8 - fs * 3, 8+fs*(6+i), 0, vid.fsize, its(i+1), dtwidth == brush_sizes[i] ? 0xFF8000 : 0xC0C0C0, 16))
|
||||||
getcstat = 2000+i;
|
getcstat = 2000+i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2223,7 +2225,7 @@ namespace mapeditor {
|
|||||||
canvas_default_wall = waInvisibleFloor;
|
canvas_default_wall = waInvisibleFloor;
|
||||||
patterns::whichCanvas = 'g';
|
patterns::whichCanvas = 'g';
|
||||||
patterns::canvasback = 0xFFFFFF;
|
patterns::canvasback = 0xFFFFFF;
|
||||||
texture::config.paint_color = (forecolor << 8) | 255;
|
dtcolor = (forecolor << 8) | 255;
|
||||||
drawplayer = false;
|
drawplayer = false;
|
||||||
vid.use_smart_range = 2;
|
vid.use_smart_range = 2;
|
||||||
start_game();
|
start_game();
|
||||||
@ -2314,7 +2316,7 @@ namespace mapeditor {
|
|||||||
|
|
||||||
if(freedraw) {
|
if(freedraw) {
|
||||||
|
|
||||||
int tcolor = (texture::config.paint_color >> 8) | ((texture::config.paint_color & 0xFF) << 24);
|
int tcolor = (dtcolor >> 8) | ((dtcolor & 0xFF) << 24);
|
||||||
|
|
||||||
if(uni == '-' && !clickused) {
|
if(uni == '-' && !clickused) {
|
||||||
if(mousekey == 'e') {
|
if(mousekey == 'e') {
|
||||||
@ -2351,7 +2353,7 @@ namespace mapeditor {
|
|||||||
else if(mousekey == 'c' && intexture) {
|
else if(mousekey == 'c' && intexture) {
|
||||||
texture::config.data.undoLock();
|
texture::config.data.undoLock();
|
||||||
ld rad = hdist(lstart, mouseh);
|
ld rad = hdist(lstart, mouseh);
|
||||||
int circp = int(1 + 3 * (circlelength(rad) / texture::penwidth));
|
int circp = int(1 + 3 * (circlelength(rad) / dtwidth));
|
||||||
if(circp > 1000) circp = 1000;
|
if(circp > 1000) circp = 1000;
|
||||||
transmatrix T = rgpushxto0(lstart);
|
transmatrix T = rgpushxto0(lstart);
|
||||||
texture::where = lstartcell;
|
texture::where = lstartcell;
|
||||||
@ -2370,10 +2372,10 @@ namespace mapeditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(uni >= 1000 && uni < 1010)
|
if(uni >= 1000 && uni < 1010)
|
||||||
texture::config.paint_color = texture_colors[uni - 1000 + 1];
|
dtcolor = texture_colors[uni - 1000 + 1];
|
||||||
|
|
||||||
if(uni >= 2000 && uni < 2010)
|
if(uni >= 2000 && uni < 2010)
|
||||||
texture::penwidth = brush_sizes[uni - 2000];
|
dtwidth = brush_sizes[uni - 2000];
|
||||||
|
|
||||||
if(uni == '0')
|
if(uni == '0')
|
||||||
texture::texturesym = !texture::texturesym;
|
texture::texturesym = !texture::texturesym;
|
||||||
@ -2384,18 +2386,18 @@ namespace mapeditor {
|
|||||||
|
|
||||||
if(uni == 'p') {
|
if(uni == 'p') {
|
||||||
if(!clickused)
|
if(!clickused)
|
||||||
dialog::openColorDialog(texture::config.paint_color, texture_colors);
|
dialog::openColorDialog(dtcolor, texture_colors);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uni == 'f') {
|
if(uni == 'f') {
|
||||||
if(dtfill == texture::config.paint_color)
|
if(dtfill == dtcolor)
|
||||||
dtfill = 0;
|
dtfill = 0;
|
||||||
else
|
else
|
||||||
dtfill = texture::config.paint_color;
|
dtfill = dtcolor;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(uni == 'b')
|
if(uni == 'b')
|
||||||
dialog::editNumber(texture::penwidth, 0, 0.1, 0.005, 0.02, XLAT("brush size"), XLAT("brush size"));
|
dialog::editNumber(dtwidth, 0, 0.1, 0.005, 0.02, XLAT("brush size"), XLAT("brush size"));
|
||||||
}
|
}
|
||||||
|
|
||||||
else {
|
else {
|
||||||
@ -2506,7 +2508,7 @@ namespace mapeditor {
|
|||||||
pts.push_back(Ctr * xspinpush0(M_PI*j*2/circp, radius));
|
pts.push_back(Ctr * xspinpush0(M_PI*j*2/circp, radius));
|
||||||
for(int j=0; j<circp; j++) curvepoint(pts[j]);
|
for(int j=0; j<circp; j++) curvepoint(pts[j]);
|
||||||
curvepoint(pts[0]);
|
curvepoint(pts[0]);
|
||||||
queuecurve(texture::config.paint_color, 0, PPR::LINE);
|
queuecurve(dtcolor, 0, PPR::LINE);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CAP_POLY
|
#if CAP_POLY
|
||||||
@ -2545,10 +2547,10 @@ namespace mapeditor {
|
|||||||
queue_hcircle(M2 * ml, hdist(lstart, mouseh));
|
queue_hcircle(M2 * ml, hdist(lstart, mouseh));
|
||||||
break;
|
break;
|
||||||
case 'l':
|
case 'l':
|
||||||
queueline(M2 * mh * C0, M2 * ml * C0, texture::config.paint_color, 4 + vid.linequality, PPR::LINE);
|
queueline(M2 * mh * C0, M2 * ml * C0, dtcolor, 4 + vid.linequality, PPR::LINE);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
queue_hcircle(M2 * mh, texture::penwidth);
|
queue_hcircle(M2 * mh, dtwidth);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
10
textures.cpp
10
textures.cpp
@ -65,7 +65,6 @@ struct texture_data {
|
|||||||
struct texture_config {
|
struct texture_config {
|
||||||
string texturename;
|
string texturename;
|
||||||
string configname;
|
string configname;
|
||||||
color_t paint_color;
|
|
||||||
eTextureState tstate;
|
eTextureState tstate;
|
||||||
eTextureState tstate_max;
|
eTextureState tstate_max;
|
||||||
|
|
||||||
@ -121,7 +120,6 @@ struct texture_config {
|
|||||||
texturename = "textures/hyperrogue-texture.png";
|
texturename = "textures/hyperrogue-texture.png";
|
||||||
configname = "textures/hyperrogue.txc";
|
configname = "textures/hyperrogue.txc";
|
||||||
itt = Id;
|
itt = Id;
|
||||||
paint_color = 0x000000FF;
|
|
||||||
grid_color = 0;
|
grid_color = 0;
|
||||||
mesh_color = 0;
|
mesh_color = 0;
|
||||||
master_color = 0xFFFFFF30;
|
master_color = 0xFFFFFF30;
|
||||||
@ -1449,8 +1447,6 @@ array<point, 3> ptc(const array<hyperpoint, 3>& h) {
|
|||||||
return make_array(ptc(h[0]), ptc(h[1]), ptc(h[2]));
|
return make_array(ptc(h[0]), ptc(h[1]), ptc(h[2]));
|
||||||
}
|
}
|
||||||
|
|
||||||
EX ld penwidth = .02;
|
|
||||||
|
|
||||||
int texture_distance(pair<int, int> p1, pair<int, int> p2) {
|
int texture_distance(pair<int, int> p1, pair<int, int> p2) {
|
||||||
return max(abs(p1.first-p2.first), abs(p1.second - p2.second));
|
return max(abs(p1.first-p2.first), abs(p1.second - p2.second));
|
||||||
}
|
}
|
||||||
@ -1521,7 +1517,7 @@ void filltriangle(const array<hyperpoint, 3>& v, const array<point, 3>& p, color
|
|||||||
|
|
||||||
void splitseg(const transmatrix& A, const array<ld, 2>& angles, const array<hyperpoint, 2>& h, const array<point, 2>& p, color_t col, int lev) {
|
void splitseg(const transmatrix& A, const array<ld, 2>& angles, const array<hyperpoint, 2>& h, const array<point, 2>& p, color_t col, int lev) {
|
||||||
ld newangle = (angles[0] + angles[1]) / 2;
|
ld newangle = (angles[0] + angles[1]) / 2;
|
||||||
hyperpoint nh = A * xspinpush0(newangle, penwidth);
|
hyperpoint nh = A * xspinpush0(newangle, mapeditor::dtwidth);
|
||||||
auto np = ptc(nh);
|
auto np = ptc(nh);
|
||||||
|
|
||||||
filltriangle(make_array(h[0],h[1],nh), make_array(p[0],p[1],np), col, lev);
|
filltriangle(make_array(h[0],h[1],nh), make_array(p[0],p[1],np), col, lev);
|
||||||
@ -1538,7 +1534,7 @@ void fillcircle(hyperpoint h, color_t col) {
|
|||||||
|
|
||||||
ld step = M_PI * 2/3;
|
ld step = M_PI * 2/3;
|
||||||
|
|
||||||
array<hyperpoint, 3> mh = make_array(A * xpush0(penwidth), A * xspinpush0(step, penwidth), A * xspinpush0(-step, penwidth));
|
array<hyperpoint, 3> mh = make_array(A * xpush0(mapeditor::dtwidth), A * xspinpush0(step, mapeditor::dtwidth), A * xspinpush0(-step, mapeditor::dtwidth));
|
||||||
auto mp = ptc(mh);
|
auto mp = ptc(mh);
|
||||||
|
|
||||||
filltriangle(mh, mp, col, 0);
|
filltriangle(mh, mp, col, 0);
|
||||||
@ -1596,7 +1592,7 @@ EX void drawPixel(hyperpoint h, color_t col) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
EX void drawLine(hyperpoint h1, hyperpoint h2, color_t col, int steps IS(10)) {
|
EX void drawLine(hyperpoint h1, hyperpoint h2, color_t col, int steps IS(10)) {
|
||||||
if(steps > 0 && hdist(h1, h2) > penwidth / 3) {
|
if(steps > 0 && hdist(h1, h2) > mapeditor::dtwidth / 3) {
|
||||||
hyperpoint h3 = mid(h1, h2);
|
hyperpoint h3 = mid(h1, h2);
|
||||||
drawLine(h1, h3, col, steps-1);
|
drawLine(h1, h3, col, steps-1);
|
||||||
drawLine(h3, h2, col, steps-1);
|
drawLine(h3, h2, col, steps-1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user