1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2025-04-15 15:23:14 +00:00

color change in rogueviz

This commit is contained in:
Zeno Rogue 2024-05-05 20:20:00 +02:00
parent ce825db2c0
commit 43a3e8f030
14 changed files with 52 additions and 63 deletions

View File

@ -46,8 +46,7 @@ void run_sb() {
crystal::set_crystal(6);
set_variation(eVariation::pure);
enable_canvas();
patterns::whichCanvas = 'g';
patterns::canvasback = 0x101010;
ccolor::set_plain(0x101010);
check_cgi();
start_game();

View File

@ -325,6 +325,8 @@ bool view_labels = true, view_lines = true;
namespace hr {
extern ccolor::data grigorchuk_coloring;
struct hrmap_grigorchuk : hrmap_standard {
heptagon *origin;
@ -411,8 +413,8 @@ struct hrmap_grigorchuk : hrmap_standard {
if(grigorchuk::view_labels) queuestr(V, 0.3, grigorchuk::deform(dec[c->master]), 0xFFFFFF);
if(patterns::whichCanvas == 'G' && c->landparam == 0)
c->landparam = 0x102008 * (1 + ((hrmap_grigorchuk*)currentmap)->dec[c->master]->len);
if(ccolor::which == &grigorchuk_coloring && c->landparam == 0)
c->landparam = grigorchuk_coloring(c);
drawcell(c, V * currentmap->master_relative(c, false));
@ -436,6 +438,10 @@ struct hrmap_grigorchuk : hrmap_standard {
eGeometry gGrigorchuk(eGeometry(-1));
ccolor::data grigorchuk_coloring = ccolor::data("Grigorchuk", [] { return geometry == gGrigorchuk; }, [] (cell *c, ccolor::data& cco) {
return 0x102008 * (1 + ((hrmap_grigorchuk*)currentmap)->dec[c->master]->len);
}, {});
void create_grigorchuk_geometry() {
if(gGrigorchuk != eGeometry(-1)) return;
ginf.push_back(ginf[gNormal]);
@ -449,6 +455,7 @@ void create_grigorchuk_geometry() {
gi.menu_displayed_name = "Grigorchuk group";
gi.shortname = "Grig";
gi.default_variation = eVariation::pure;
ccolor::all.push_back(&grigorchuk_coloring);
}
int readArgsG() {
@ -483,11 +490,6 @@ int readArgsG() {
auto hook = addHook(hooks_args, 100, readArgsG)
+ addHook(hooks_newmap, 100, [] { return geometry == gGrigorchuk ? new hrmap_grigorchuk : nullptr; })
+ addHook(patterns::hooks_generate_canvas, 100, [] (cell* c) {
if(patterns::whichCanvas == 'G' && geometry == gGrigorchuk)
return 0x102008 * (1 + ((hrmap_grigorchuk*)currentmap)->dec[c->master]->len);
return -1;
})
+ addHook(dialog::hooks_display_dialog, 100, [] () {
if(current_screen_cfunction() == showEuclideanMenu && geometry == gGrigorchuk) {
dialog::addBoolItem_action(XLAT("Grigorchuk lines"), grigorchuk::view_lines, 'L');
@ -516,7 +518,7 @@ auto hook = addHook(hooks_args, 100, readArgsG)
if(mode == pmStart) {
grigorchuk::grig_limit = 10000;
gamestack::push();
slide_backup(patterns::whichCanvas, 'G');
slide_backup(ccolor::which, &grigorchuk_coloring);
slide_backup(firstland, laCanvas);
slide_backup(specialland, laCanvas);
set_geometry(gGrigorchuk);

View File

@ -74,8 +74,7 @@ void run_cpick() {
crystal::set_crystal(6);
set_variation(eVariation::pure);
enable_canvas();
patterns::whichCanvas = 'g';
patterns::canvasback = 0;
ccolor::set_plain(0);
check_cgi();
start_game();
current_center = currentmap->gamestart();
@ -208,8 +207,7 @@ void run_sb() {
crystal::set_crystal(6);
set_variation(eVariation::pure);
enable_canvas();
patterns::whichCanvas = 'g';
patterns::canvasback = 0;
ccolor::set_plain(0);
check_cgi();
rv_hook(hooks_drawcell, 100, sokomap);
start_game();
@ -394,7 +392,7 @@ int mycanvas(cell *c) {
}
void enable() {
rv_hook(patterns::hooks_generate_canvas, 100, mycanvas);
rv_hook(ccolor::hooks_generate_canvas, 100, mycanvas);
}
auto explore_structure(int _shapeid) {
@ -407,7 +405,7 @@ auto explore_structure(int _shapeid) {
stop_game();
set_geometry(geometry == gCrystal534 ? gCrystal534 : gCrystal344);
enable_canvas();
patterns::whichCanvas = ' ';
ccolor::which = &ccolor::plain;
shapeid = _shapeid;
enable();
crystal::crystal_period = 4;
@ -444,7 +442,7 @@ void house(int sides, int shape = 10) {
crystal::set_crystal(sides);
set_variation(eVariation::pure);
enable_canvas();
patterns::whichCanvas = ' ';
ccolor::which = &ccolor::plain;
shapeid = shape;
check_cgi();
enable();
@ -466,7 +464,7 @@ tour::slide *gen_high_demo() {
sync(mode, VC);
if(mode == pmStart) {
crystal::set_crystal(6);
patterns::whichCanvas = 'K';
ccolor::which = &ccolor::crystal_colors;
start_game();
}
}
@ -479,7 +477,7 @@ tour::slide *gen_high_demo() {
sync(mode, VC);
if(mode == pmStart) {
crystal::set_crystal(8);
patterns::whichCanvas = 'K';
ccolor::which = &ccolor::crystal_colors;
start_game();
}
}
@ -563,10 +561,7 @@ tour::slide *gen_high_demo() {
sync(mode, NO_VC | PLAYER);
if(mode == pmStart) {
crystal::set_crystal(6);
patterns::whichCanvas = 'c';
colortables['c'][0] = 0x208020;
colortables['c'][1] = 0x105010;
patterns::canvasback = 0x101010;
ccolor::set_colors(ccolor::chessboard, {0x208020, 0x105010});
start_game();
auto & us = vid.cs;
us.charid = 4;

View File

@ -374,10 +374,8 @@ void enable() {
vid.linequality = 4;
enable_canvas();
patterns::whichCanvas = 'F';
colortables['F'][0] = 0x80C080;
colortables['F'][1] = 0x80A080;
ccolor::set_colors(ccolor::football, {0x80C080, 0x80A080});
pconf.scale = .3;
vid.use_smart_range = 2;

View File

@ -246,7 +246,7 @@ vector<cell*> current_list;
void mine_slide(tour::presmode mode, reaction_t set_geom, function<vector<cell*>()> celllister, function<void(cell*)> assigner) {
using namespace tour;
patterns::canvasback = 0;
ccolor::plain.ctab = {0};
setCanvas(mode, '0');
if(mode == pmStart) {
slide_backup(mapeditor::drawplayer, false);
@ -334,7 +334,7 @@ void enable_earth() {
stop_game();
set_geometry(gSphere);
enable_canvas();
patterns::whichCanvas = 'F';
ccolor::which = &ccolor::football;
start_game();
texture::config.configname = "textures/earth.txc";
texture::config.load();
@ -543,8 +543,8 @@ slide sweeper_slides[] = {
stop_game();
set_geometry(g45);
set_variation(eVariation::pure);
tour::slide_backup(colortables['c'][0], 0x104010);
tour::slide_backup(colortables['c'][1], 0x10F010);
tour::slide_backup(ccolor::chessboard.ctab[0], 0x104010);
tour::slide_backup(ccolor::chessboard.ctab[1], 0x10F010);
tour::slide_backup(vid.use_smart_range, 2);
tour::slide_backup(vid.smart_range_detail, 1);
start_game();
@ -562,7 +562,7 @@ slide sweeper_slides[] = {
setCanvas(mode, 'g');
non_game_slide_scroll(mode);
if(mode == pmStart) {
tour::slide_backup(patterns::canvasback, 0x10A010);
tour::slide_backup(ccolor::plain.ctab[0], 0x10A010);
stop_game();
set_geometry(gBinary4);
set_variation(eVariation::pure);
@ -840,7 +840,7 @@ slide sweeper_slides[] = {
setCanvas(mode, 'g');
non_game_slide_scroll(mode);
if(mode == pmStart) {
tour::slide_backup(patterns::canvasback, 0x10A010);
tour::slide_backup(ccolor::plain.ctab[0], 0x10A010);
stop_game();
set_geometry(gBinary4);
set_variation(eVariation::pure);

View File

@ -217,8 +217,7 @@ void create_intra_solv() {
}
void create_intra_120() {
patterns::whichCanvas = 'r';
patterns::rwalls = 0;
ccolor::set_random(0);
if(intra::in) intra::become();
else stop_game();
arcm::current.parse("8,4,6");
@ -261,8 +260,7 @@ void create_intra_120() {
}
void create_intra_1440() {
patterns::whichCanvas = 'r';
patterns::rwalls = 0;
ccolor::set_random(0);
if(intra::in) intra::become();
else stop_game();
set_geometry(gCell8);
@ -330,8 +328,7 @@ vector<reaction_t> portals;
void create_intra_bxe() {
println(hlog, "called create_intra_bxe");
patterns::whichCanvas = 'r';
patterns::rwalls = 100;
ccolor::set_random(100);
if(intra::in) intra::become();
else stop_game();
hybrid::csteps = 0;
@ -404,8 +401,7 @@ void recurse_portal_solv2(int r, cell *cl, cell *cr) {
void create_intra_sol() {
println(hlog, "called create_intra_sol");
patterns::whichCanvas = 'r';
patterns::rwalls = 100;
ccolor::set_random(100);
if(intra::in) intra::become();
else stop_game();

View File

@ -144,8 +144,7 @@ void magic(int sides) {
crystal::set_crystal(sides);
set_variation(eVariation::pure);
enable_canvas();
patterns::whichCanvas = 'g';
patterns::canvasback = back;
ccolor::set_plain(back);
check_cgi();
start_game();

View File

@ -559,7 +559,7 @@ void pick_pattern() {
dialog::add_action([] {
chg_pattern([] {
enable_canvas();
patterns::whichCanvas = 'B';
ccolor::which = &ccolor::sides;
});
});
@ -570,7 +570,7 @@ void pick_pattern() {
gp::param.second = 0;
set_variation(eVariation::goldberg);
enable_canvas();
patterns::whichCanvas = 'F';
ccolor::which = &ccolor::football;
});
});
@ -579,7 +579,7 @@ void pick_pattern() {
chg_pattern([] {
set_geometry(gOctagon);
enable_canvas();
patterns::whichCanvas = 'T';
ccolor::which = &ccolor::zebra_stripes;
});
});
@ -612,7 +612,7 @@ void pick_pattern() {
arcm::current.parse("4^5");
set_geometry(gArchimedean);
enable_canvas();
patterns::whichCanvas = 'A';
ccolor::which = &ccolor::shape;
});
});

View File

@ -26,10 +26,10 @@ auto geoslide(eGeometry g, char canvas, int jhole, int jblock) {
tour::slide_backup<ld>(sightranges[gSol], 7);
tour::slide_backup<ld>(sightranges[gSpace435], 7);
vid.texture_step = 4;
tour::slide_backup(patterns::jhole, jhole);
tour::slide_backup(patterns::rwalls, jhole);
tour::slide_backup(patterns::jblock, jblock);
tour::slide_backup(patterns::whichCanvas, canvas);
tour::slide_backup(ccolor::jhole, jhole);
tour::slide_backup(ccolor::rwalls, jhole);
tour::slide_backup(ccolor::jblock, jblock);
tour::slide_backup(ccolor::which, ccolor::legacy(canvas));
tour::slide_backup(vid.linewidth, vid.linewidth / 10);
start_game();
if(jblock < 0) {
@ -45,7 +45,7 @@ auto geoslide(eGeometry g, char canvas, int jhole, int jblock) {
if(in_special && among(mode, pmGeometrySpecial, pmStop)) {
in_special = false;
gamestack::pop();
patterns::whichCanvas = canvas;
ccolor::which = ccolor::legacy(canvas);
vid.grid = false;
fat_edges = false;
sightranges[gSpace435] = 7;
@ -54,7 +54,7 @@ auto geoslide(eGeometry g, char canvas, int jhole, int jblock) {
else if(mode == pmGeometrySpecial && !in_special) {
in_special = true;
gamestack::push();
patterns::whichCanvas = 'g';
ccolor::set_plain(0);
vid.grid = true;
stdgridcolor = 0xFFFF00FF;
fat_edges = true;

View File

@ -114,7 +114,7 @@ void run_snub(int v, int w) {
check_cgi();
cgi.require_basics();
specialland = laCanvas;
patterns::whichCanvas = 'A';
ccolor::which = &ccolor::shape;
// vid.wallmode = 1;
printf("start game\n");
printf("distlimit = %d\n", cgi.base_distlimit);

View File

@ -591,7 +591,7 @@ void enable_earth() {
stop_game();
set_geometry(gSphere);
enable_canvas();
patterns::whichCanvas = 'F';
ccolor::which = &ccolor::football;
start_game();
texture::config.configname = "textures/earth.txc";
texture::config.load();
@ -635,8 +635,8 @@ slide dmv_slides[] = {
set_geometry(gArchimedean); arcm::current.parse("3^6");
set_variation(eVariation::pure);
slide_backup(colortables['F'][0], 0xC0FFC0);
slide_backup(colortables['F'][1], 0x80FF80);
slide_backup(ccolor::football.ctab[0], 0xC0FFC0);
slide_backup(ccolor::football.ctab[1], 0x80FF80);
slide_backup(pconf.alpha, 1);
slide_backup(pconf.scale, 1);
start_game();
@ -708,8 +708,8 @@ slide dmv_slides[] = {
slide_backup(specialland, laCanvas);
set_geometry(gNormal);
set_variation(eVariation::bitruncated);
slide_backup(colortables['F'][0], 0xC0FFC0);
slide_backup(colortables['F'][1], 0x80FF80);
slide_backup(ccolor::football.ctab[0], 0xC0FFC0);
slide_backup(ccolor::football.ctab[1], 0x80FF80);
slide_backup(pconf.alpha, 1);
slide_backup(pconf.scale, 1);
slide_backup(rug::mouse_control_rug, true);
@ -755,7 +755,7 @@ slide dmv_slides[] = {
[] (presmode mode) {
if(mode == pmStart) {
slide_backup(patterns::rwalls, 10);
slide_backup(ccolor::rwalls, 10);
slide_backup(vid.fov, 120);
}

View File

@ -108,7 +108,7 @@ bool labeller(cell* c, const shiftmatrix& V) {
if(m) {
string s = m->asg[c->master].second;
cgi.scalefactor = 1;
queuestr(V, 0.5, s, colortables['j'][c->master->distance+1]);
queuestr(V, 0.5, s, ccolor::jmap.ctab[c->master->distance+1]);
}
return false;
}

View File

@ -179,7 +179,7 @@ namespace rogueviz {
template<class T, class U> function<void(presmode)> roguevizslide(char c, const T& t, const U& f) {
return [c,t,f] (presmode mode) {
f(mode);
patterns::canvasback = 0x101010;
ccolor::plain.ctab = {0x101010};
setCanvas(mode, c);
if(mode == 1 || mode == pmGeometryStart) t();
@ -201,7 +201,7 @@ template<class T> function<void(presmode)> roguevizslide(char c, const T& t) { r
template<class T, class U>
function<void(presmode)> roguevizslide_action(char c, const T& t, const U& act) {
return [c,t,act] (presmode mode) {
patterns::canvasback = 0x101010;
ccolor::plain.ctab = {0x101010};
setCanvas(mode, c);
if(mode == pmStart || mode == pmGeometryStart) t();

View File

@ -1097,7 +1097,7 @@ namespace sag {
create_viz();
for(int i=0; i<DN; i++) {
color_t col = patterns::compute_cell_color(sagcells[sagid[i]]);
color_t col = ccolor::formula.f(sagcells[sagid[i]], ccolor::formula);
col <<= 8;
col |= 0xFF;
vdata[i].cp.color1 = vdata[i].cp.color2 = col;