From 8a836fd1ea7716dc51692a7f21c41bb54d59b80a Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Wed, 31 Mar 2021 03:18:36 +0200 Subject: [PATCH] rogueviz:: used args::add and made hypcity and hypocycloid enablable --- rogueviz/fullnet.cpp | 11 ++------ rogueviz/hypcity.cpp | 13 ++++++---- rogueviz/hypocycloid.cpp | 19 +++++++++----- rogueviz/janko.cpp | 10 ++------ rogueviz/magiccube.cpp | 18 +------------ rogueviz/pentagonal.cpp | 24 +++-------------- rogueviz/pentaroll.cpp | 34 +++++++------------------ rogueviz/playing-with-impossibility.cpp | 6 ++--- rogueviz/rogueviz-all.cpp | 3 +++ rogueviz/tree.cpp | 17 +------------ 10 files changed, 44 insertions(+), 111 deletions(-) diff --git a/rogueviz/fullnet.cpp b/rogueviz/fullnet.cpp index be12de31..8109106e 100644 --- a/rogueviz/fullnet.cpp +++ b/rogueviz/fullnet.cpp @@ -33,19 +33,12 @@ void drawExtra() { canmove = true; items[itOrbAether] = true; } -auto hooks = - addHook(hooks_args, 100, [] { - using namespace arg; - if(argis("-net")) { - PHASE(3); +auto hooks = arg::add3("-net", [] { init(0); rv_hook(hooks_frame, 0, drawExtra); linepatterns::patTriTree.color = 0x30; linepatterns::patTriOther.color = 0x10; linepatterns::patTriRings.color = 0xFF; - return 0; - } - return 1; - }); + }); }} diff --git a/rogueviz/hypcity.cpp b/rogueviz/hypcity.cpp index afc9d1c3..d270f946 100644 --- a/rogueviz/hypcity.cpp +++ b/rogueviz/hypcity.cpp @@ -6,15 +6,16 @@ // see the results posted here: // https://twitter.com/ZenoRogue/status/1375750351391981570 -// -noplayer -geo 4x5 -gp 1 1 -unrectified -switch-fpp -canvas 303030 camera=0 depth=0 -sr 3 -PM 0 -alpha 1 -zoom .95 +// -hypcity -noplayer -geo 4x5 -gp 1 1 -unrectified -switch-fpp -canvas 303030 camera=0 depth=0 -sr 3 -PM 0 -alpha 1 -zoom .95 // https://twitter.com/ZenoRogue/status/1375748835046215682 -// -noplayer -geo nil -canvas 303030 -back 44e4 -sight3 3 +// -hypcity -noplayer -geo nil -canvas 303030 -back 44e4 -sight3 3 // https://twitter.com/ZenoRogue/status/1375754422752575488 -// add -PM 0 -alpha 1 +// add -PM 0 -alpha 1 namespace hr { +namespace hypcity { using namespace rogueviz::objmodels; @@ -89,6 +90,8 @@ bool draw_city_at(cell *c, const shiftmatrix& V) { return false; } -auto hypcity_ah = addHook(hooks_drawcell, 100, draw_city_at); +void enable() { rogueviz::rv_hook(hooks_drawcell, 100, draw_city_at); } -} +auto hypcity_ah = arg::add3("-hypcity", enable); + +}} diff --git a/rogueviz/hypocycloid.cpp b/rogueviz/hypocycloid.cpp index b5655650..fe19fbf2 100644 --- a/rogueviz/hypocycloid.cpp +++ b/rogueviz/hypocycloid.cpp @@ -1,22 +1,24 @@ // compile with mymake rogueviz/hypocycloid // for https://twitter.com/ZenoRogue/status/1358464890978127875 : -// hyper -shot-1000 -noscr -canvas i -noplayer -geo 1 circ1=1 circ2=2 show=.05 lw=20 -zoom .9 -animvideo 360 cycloid-2-euc.mp4 +// -hypocyc -shot-1000 -noscr -canvas i -noplayer -geo 1 circ1=1 circ2=2 show=.05 lw=20 -zoom .9 -animvideo 360 cycloid-2-euc.mp4 // for https://twitter.com/ZenoRogue/status/1358464962088337410 : -// hyper -shot-1000 -noscr -canvas i -noplayer -geo 0 "circ1=0../0..4../0..|4../0..0../0" "circ2=0../0..8../0..|8../0..0../0" show=.05 lw=3 loops=10 -zoom .9 -animvideo 3600 cycloid-2-hyp.mp4 +// -hypocyc -shot-1000 -noscr -canvas i -noplayer -geo 0 "circ1=0../0..4../0..|4../0..0../0" "circ2=0../0..8../0..|8../0..0../0" show=.05 lw=3 loops=10 -zoom .9 -animvideo 3600 cycloid-2-hyp.mp4 // for https://twitter.com/ZenoRogue/status/1358465029876690948 : -// hyper -shot-1000 -noscr -canvas i -noplayer -geo 0 "circ1=0../0..8../0..|8../0..0../0" "circ2=0../0..32../0..|32../0..0../0" prec=3600 show=.05 lw=3 loops=10 -zoom .9 -animvideo 3600 cycloid-4-hyp.mp4 +// -hypocyc -shot-1000 -noscr -canvas i -noplayer -geo 0 "circ1=0../0..8../0..|8../0..0../0" "circ2=0../0..32../0..|32../0..0../0" prec=3600 show=.05 lw=3 loops=10 -zoom .9 -animvideo 3600 cycloid-4-hyp.mp4 // for https://twitter.com/ZenoRogue/status/1358506225990828033 : -// hyper -shot-1000 -noscr -canvas i -noplayer -geo 2 "circ1=0../0...5../0..|.5../0..0../0" "circ2=0../0..1../0..|1../0..0../0" show=.05 lw=3 loops=10 -zoom .9 -animvideo 1200 cycloid-2-sph.mp4 +// -hypocyc -shot-1000 -noscr -canvas i -noplayer -geo 2 "circ1=0../0...5../0..|.5../0..0../0" "circ2=0../0..1../0..|1../0..0../0" show=.05 lw=3 loops=10 -zoom .9 -animvideo 1200 cycloid-2-sph.mp4 // for https://twitter.com/ZenoRogue/status/1358505146553159682 : -// hyper -shot-1000 -noscr -canvas i -noplayer -geo 0 circ1=1 circ2=2 show=.1 lw=5 -zoom .9 "ratio=2../0..8../0..|8../0..2../0" prec=3600 -animvideo 3600 half-radius.mp4 +// -hypocyc -shot-1000 -noscr -canvas i -noplayer -geo 0 circ1=1 circ2=2 show=.1 lw=5 -zoom .9 "ratio=2../0..8../0..|8../0..2../0" prec=3600 -animvideo 3600 half-radius.mp4 #include "../hyper.h" namespace hr { +namespace hypocyc { + /* what to roll on: 0 = circle, 1 = horocycle, 2 = straight line, 3 = equidistant */ int shape = 0; @@ -143,7 +145,11 @@ void circ_frame() { vid.linewidth /= lw; } -auto shot_hooks = addHook(hooks_frame, 100, circ_frame) +void enable() { + addHook(hooks_frame, 100, circ_frame); + } + +auto shot_hooks = arg::add2("-hypocyc", enable) + addHook(hooks_configfile, 100, [] { param_f(circ1, "circ1"); param_f(circ2, "circ2"); @@ -159,3 +165,4 @@ auto shot_hooks = addHook(hooks_frame, 100, circ_frame) }); } +} diff --git a/rogueviz/janko.cpp b/rogueviz/janko.cpp index 79a8939a..38364db2 100644 --- a/rogueviz/janko.cpp +++ b/rogueviz/janko.cpp @@ -132,14 +132,8 @@ void create_janko() { gi.menu_displayed_name = "Janko group J1"; } -auto shot_hooks = addHook(hooks_args, 100, [] { - if(arg::argis("-janko1x")) { - build(); - experiment(); - } - else return true; - return false; - }) + addHook(hooks_initialize, 100, create_janko); +auto shot_hooks = arg::add3("-janko1x", [] { build(); experiment(); }) + + addHook(hooks_initialize, 100, create_janko); } diff --git a/rogueviz/magiccube.cpp b/rogueviz/magiccube.cpp index a94811b6..5da24dac 100644 --- a/rogueviz/magiccube.cpp +++ b/rogueviz/magiccube.cpp @@ -156,23 +156,7 @@ void magic(int sides) { rv_hook(hooks_handleKey, 150, magic_rugkey); } -int readArgs() { - using namespace arg; - - if(0) ; - else if(argis("-magic")) { - PHASEFROM(2); - shift(); magic(argi()); - } - else if(argis("-magic3")) { - PHASEFROM(2); - magic(-1); - } - else return 1; - return 0; - } - -auto magichook = addHook(hooks_args, 100, readArgs); +auto magichook = arg::add2("-magic3", [] { magic(-1); }) + arg::add2("-magic", [] { magic(arg::shift_argi()); }); } #endif diff --git a/rogueviz/pentagonal.cpp b/rogueviz/pentagonal.cpp index dee24cb8..98b4f24d 100644 --- a/rogueviz/pentagonal.cpp +++ b/rogueviz/pentagonal.cpp @@ -281,26 +281,6 @@ void create_model() { } -#if CAP_COMMANDLINE -int readArgs() { - using namespace arg; - - if(0) ; - else if(argis("-snub")) { - PHASE(3); - shift(); - run_snub(argi(), 3); - } - else if(argis("-snub4")) { - PHASE(3); - shift(); - run_snub(argi(), 4); - } - else return 1; - return 0; - } -#endif - bool frame() { if(snubon && rug::rugged) { create_model(); @@ -343,7 +323,9 @@ bool handleKey(int sym, int uni) { } -auto xhook = addHook(hooks_args, 100, readArgs) +auto xhook = + arg::add3("-snub", [] { run_snub(arg::shift_argi(), 3); }) ++ arg::add3("-snub4", [] { run_snub(arg::shift_argi(), 4); }) + addHook(hooks_handleKey, 0, handleKey) + addHook(hooks_prestats, 0, frame) + addHook(hooks_clearmemory, 40, [] () { snubon = false; } ) diff --git a/rogueviz/pentaroll.cpp b/rogueviz/pentaroll.cpp index f2b4d402..2ea5e928 100644 --- a/rogueviz/pentaroll.cpp +++ b/rogueviz/pentaroll.cpp @@ -1,4 +1,4 @@ -#include "../hyper.h" +#include "rogueviz.h" // implementation of this demo: https://twitter.com/ZenoRogue/status/1304130700870901761 @@ -12,9 +12,9 @@ namespace hr { namespace pentaroll { -bool animated; +void animate(); -void create_pentaroll() { +void create_pentaroll(bool animated) { start_game(); /* get the list of all close cells */ cell *c0 = currentmap->gamestart(); @@ -54,22 +54,8 @@ void create_pentaroll() { cw1.peek()->landparam = hrand(0x1000000) | 0x808080; } } - } - -int args() { - using namespace arg; - - if(0) ; - - else if(argis("-pentaroll")) { - PHASEFROM(3); - - /* 1 = animated, 0 = not animated */ - shift(); animated = argi(); - } - - else return 1; - return 0; + if(animated) + rogueviz::rv_hook(anims::hooks_anim, 100, animate); } /* currently not configurable */ @@ -79,12 +65,8 @@ ld how_far = 1; ld orig_distance = 1; ld far_distance = 1; -auto hooks = - addHook(hooks_args, 100, args) - + addHook(hooks_clearmemory, 40, [] () { animated = false; }) -+ addHook(anims::hooks_anim, 100, [] { +void animate() { - if(!animated) return; centerover = currentmap->gamestart(); ld t = ticks * 20. / anims::period; @@ -141,7 +123,9 @@ auto hooks = View = spin((angle-M_PI) * int(t)) * View; anims::moved(); - }); + } + +auto hooks = arg::add3("-pentaroll", [] { create_pentaroll(arg::shift_argi()); }); } diff --git a/rogueviz/playing-with-impossibility.cpp b/rogueviz/playing-with-impossibility.cpp index e13c495a..7135f538 100644 --- a/rogueviz/playing-with-impossibility.cpp +++ b/rogueviz/playing-with-impossibility.cpp @@ -39,8 +39,7 @@ namespace bricks { } namespace pentaroll { - extern bool animated; - extern void create_pentaroll(); + extern void create_pentaroll(bool); } namespace ply { @@ -656,8 +655,7 @@ slide dmv_slides[] = { set_geometry(gFieldQuotient); */ start_game(); - pentaroll::create_pentaroll(); - pentaroll::animated = true; + pentaroll::create_pentaroll(true); tour::slide_backup(anims::period, 30000.); tour::slide_backup(sightranges[geometry], 4); start_game(); diff --git a/rogueviz/rogueviz-all.cpp b/rogueviz/rogueviz-all.cpp index 9f44a203..6493fe10 100644 --- a/rogueviz/rogueviz-all.cpp +++ b/rogueviz/rogueviz-all.cpp @@ -33,6 +33,9 @@ #include "fifteen.cpp" #include "crystal-sokoban.cpp" +#include "hypcity.cpp" +#include "hypocycloid.cpp" + #include "simple-impossible.cpp" #include "ascending-descending.cpp" #include "balls.cpp" diff --git a/rogueviz/tree.cpp b/rogueviz/tree.cpp index 8853a57d..eefd841f 100644 --- a/rogueviz/tree.cpp +++ b/rogueviz/tree.cpp @@ -105,21 +105,7 @@ namespace tree { storeall(); } -#if CAP_COMMANDLINE -int readArgs() { - using namespace arg; - - if(0) ; - - else if(argis("-tree")) { - PHASE(3); shift(); tree::read(args()); - } - - else return 1; - return 0; - } - -int ah = addHook(hooks_args, 120, readArgs) +int ah = arg::add3("-tree", [] { tree::read(arg::shift_args()); }) + addHook(pres::hooks_build_rvtour, 120, [] (string s, vector& v) { if(s != "data") return; using namespace pres; @@ -142,7 +128,6 @@ int ah = addHook(hooks_args, 120, readArgs) })} ); }); -#endif } }