1
0
mirror of https://github.com/zenorogue/hyperrogue.git synced 2024-12-24 09:00:34 +00:00

rogueviz:: cgi

This commit is contained in:
Zeno Rogue 2019-05-27 07:18:18 +02:00
parent 2402dfeac9
commit 5ab26ee6c3
7 changed files with 27 additions and 28 deletions

View File

@ -446,7 +446,7 @@ void bantar_stats() {
for(auto p: parent) if(gmatrix.count(p.first) && gmatrix.count(p.second))
queueline(tC0(gmatrix[p.first]), tC0(gmatrix[p.second]), 0x00FF00FF, 4);
double x = hexvdist;
double x = cgi.hexvdist;
for(auto gm: gmatrix) for(cell *c: {gm.first})
if(euclid || !pseudohept(c)) for(int t=0; t<c->type; t++) if(infos.count(c) && infos.count(c->move(t)) && c->move(t) && infos[c].gid != infos[c->move(t)].gid)
if(euclid ? c->move(t)<c : (((t^1)&1) || c->move(t) < c))

View File

@ -33,7 +33,7 @@ void cvl_marker() {
for(auto& loc: l.second.locs) {
if(gmatrix.count(loc.lviewctr.at->c7)) {
transmatrix T = gmatrix[loc.lviewctr.at->c7] * inverse(spin(loc.lviewctr.spin*2*M_PI/S7 + master_to_c7_angle())) * inverse(loc.lView);
queuepoly(T, shAsymmetric, 0xFF00FFFF);
queuepoly(T, cgi.shAsymmetric, 0xFF00FFFF);
queuestr(T, 1.0, its(l.first)+"/"+its(id), 0xFFFFFF);
}
id++;

View File

@ -200,11 +200,11 @@ void fundamental_marker() {
int mc = (mirrored ? color1 : color2) >> 8;
if(hdist(corner(cw), corner(next_corner[cw])) > 1e-3) {
queuestr(labelpos(corner(cw), corner(next_corner[cw])), label_scale/scalefactor, its(id), mc);
queuestr(labelpos(corner(cw), corner(next_corner[cw])), label_scale/cgi.scalefactor, its(id), mc);
if(mirrored)
queuestr(labelpos(corner(cw1), corner(next_corner[cw1])), label_scale/scalefactor, its(id), mc);
queuestr(labelpos(corner(cw1), corner(next_corner[cw1])), label_scale/cgi.scalefactor, its(id), mc);
else
queuestr(labelpos(corner(prev_corner[cw1]), corner(cw1)), label_scale/scalefactor, its(id), mc);
queuestr(labelpos(corner(prev_corner[cw1]), corner(cw1)), label_scale/cgi.scalefactor, its(id), mc);
id++;
}
}

View File

@ -237,7 +237,7 @@ void distribute_neurons() {
w.drawn_samples++;
}
ld rad = .25 * scalefactor;
ld rad = .25 * cgi.scalefactor;
for(auto p: sample_vdata_id) {
int id = p.second;

View File

@ -53,7 +53,7 @@ void magic(int sides) {
firstland = specialland = laCanvas;
patterns::whichCanvas = 'g';
patterns::canvasback = 0;
need_reset_geometry = true;
check_cgi();
start_game();
build(crystal::c0, 0);

View File

@ -112,14 +112,13 @@ void run_snub(int v, int w) {
set_geometry(gArchimedean);
set_variation(eVariation::pure);
arcm::current.parse("("+its(v)+",3," + its(w) + ",3,3) (2,3)(1,0)(4)");
check_cgi();
cgi.require_basics();
specialland = laCanvas;
patterns::whichCanvas = 'A';
// vid.wallmode = 1;
need_reset_geometry = true;
printf("start game\n");
printf("distlimit = %d\n", base_distlimit);
precalc();
printf("distlimit = %d\n", base_distlimit);
printf("distlimit = %d\n", cgi.base_distlimit);
start_game();
printf("ok\n");
printf("allcells = %d\n", isize(currentmap->allcells()));

View File

@ -27,7 +27,6 @@
#include "rogueviz.h"
namespace hr { extern hpcshape shEagle, shMiniGhost, shGhost, shShark, shAnimatedEagle[30], shAnimatedTinyEagle[30]; }
#if MAXMDIM >= 4
namespace hr { extern renderbuffer *floor_textures; }
#endif
@ -1146,8 +1145,6 @@ void storeline(vector<glvertex>& tab, const hyperpoint& h1, const hyperpoint& h2
storelineto(tab, h1, h2);
}
hpcshape *vshapes[4] = { &shDisk, &shDisk, &shHeptaMarker, &shSnowball };
color_t darken_a(color_t c) {
for(int p=0; p<3; p++)
for(int i=0; i<darken; i++) part(c, i+1) = (part(c, i+1) + part(backcolor, i)) >> 1;
@ -1168,7 +1165,10 @@ void queuedisk(const transmatrix& V, const colorpair& cp, bool legend, const str
transmatrix V1;
auto& sh = *(vshapes[vertex_shape]);
auto& sh =
vertex_shape == 2 ? cgi.shHeptaMarker :
vertex_shape == 3 ? cgi.shSnowball :
cgi.shDisk;
if(vertex_shape == 0) ;
else if(DIM == 3 && among(cp.shade, 'b', 'f', 'g', 'B', 'F', 'G')) {
@ -1186,7 +1186,7 @@ void queuedisk(const transmatrix& V, const colorpair& cp, bool legend, const str
queuepolyat(V, sh, 0x80, PPR::MONSTER_SHADOW);
poly_outline = p;
if(info) queueaction(PPR::MONSTER_HEAD, [info] () { SVG_LINK(*info); });
queuepolyat(V1 = mscale(V, geom3::BODY), sh, darken_a(cp.color1), PPR::MONSTER_HEAD);
queuepolyat(V1 = mscale(V, cgi.BODY), sh, darken_a(cp.color1), PPR::MONSTER_HEAD);
if(info) queueaction(PPR::MONSTER_HEAD, [] () { SVG_LINK(""); });
}
else {
@ -1195,16 +1195,16 @@ void queuedisk(const transmatrix& V, const colorpair& cp, bool legend, const str
if(info) queueaction(PPR::MONSTER_HEAD, [] () { SVG_LINK(""); });
}
switch(cp.shade) {
case 't': queuepoly(V1, shDiskT, darken_a(cp.color2)); return;
case 's': queuepoly(V1, shDiskS, darken_a(cp.color2)); return;
case 'q': queuepoly(V1, shDiskSq, darken_a(cp.color2)); return;
case 'm': queuepoly(V1, shDiskM, darken_a(cp.color2)); return;
case 'b': queuepoly(V1, DIM == 3 ? shAnimatedTinyEagle[((long long)(ticks) * 30 / 1000+i) % 30] : shTinyBird, darken_a(cp.color2)); return;
case 'f': queuepoly(V1, shTinyShark, darken_a(cp.color2)); return;
case 'g': queuepoly(V1, shMiniGhost, darken_a(cp.color2)); return;
case 'B': queuepoly(V1, DIM == 3 ? shAnimatedEagle[((long long)(ticks) * 30 / 1000+i) % 30] : shEagle, darken_a(cp.color2)); return;
case 'F': queuepoly(V1, shShark, darken_a(cp.color2)); return;
case 'G': queuepoly(V1, shGhost, darken_a(cp.color2)); return;
case 't': queuepoly(V1, cgi.shDiskT, darken_a(cp.color2)); return;
case 's': queuepoly(V1, cgi.shDiskS, darken_a(cp.color2)); return;
case 'q': queuepoly(V1, cgi.shDiskSq, darken_a(cp.color2)); return;
case 'm': queuepoly(V1, cgi.shDiskM, darken_a(cp.color2)); return;
case 'b': queuepoly(V1, DIM == 3 ? cgi.shAnimatedTinyEagle[((long long)(ticks) * 30 / 1000+i) % 30] : cgi.shTinyBird, darken_a(cp.color2)); return;
case 'f': queuepoly(V1, cgi.shTinyShark, darken_a(cp.color2)); return;
case 'g': queuepoly(V1, cgi.shMiniGhost, darken_a(cp.color2)); return;
case 'B': queuepoly(V1, DIM == 3 ? cgi.shAnimatedEagle[((long long)(ticks) * 30 / 1000+i) % 30] : cgi.shEagle, darken_a(cp.color2)); return;
case 'F': queuepoly(V1, cgi.shShark, darken_a(cp.color2)); return;
case 'G': queuepoly(V1, cgi.shGhost, darken_a(cp.color2)); return;
}
}
@ -1416,7 +1416,7 @@ bool drawVertex(const transmatrix &V, cell *c, shmup::monster *m) {
if(doshow && !behindsphere(V2)) {
auto info = vd.info;
if(info) queueaction(PPR::MONSTER_HEAD, [info] () { SVG_LINK(*info); });
queuestr(V2, (svg::in ? .28 : .2) * crossf / hcrossf, vd.name, backcolor ? 0x000000 : 0xFFFF00, (svg::in || ISWEB) ? 0 : 1);
queuestr(V2, (svg::in ? .28 : .2) * cgi.crossf / cgi.hcrossf, vd.name, forecolor, (svg::in || ISWEB) ? 0 : 1);
if(info) queueaction(PPR::MONSTER_HEAD, [] () { SVG_LINK(""); });
}
}
@ -1527,7 +1527,7 @@ bool rogueviz_hud() {
transmatrix V = atscreenpos(x, y, current_display->radius/8);
poly_outline = t->color | 0xFF;
queuepolyat(V, shTriangle, 0, PPR::MONSTER_HEAD);
queuepolyat(V, cgi.shTriangle, 0, PPR::MONSTER_HEAD);
poly_outline = OUTLINE_DEFAULT;
queuestr(int(x-rad), int(y), 0, rad*(svg::in?5:3)/4, t->name, forecolor, 0, 16);