diff --git a/config.cpp b/config.cpp index 2ae5d857..eb4b9c18 100644 --- a/config.cpp +++ b/config.cpp @@ -724,6 +724,13 @@ EX void initConfig() { {"by number", ""} }, "inventory/kill sorting", 'k'); + param_enum(vid.orbmode, "orb_mode", "orb display mode", 2) + ->editable({ + {"plain", ""}, + {"types", ""}, + {"icons", ""}, + }, "orb display mode", 'o'); + param_b(less_in_landscape, "less_in_landscape", false) ->editable("less items/kills in landscape", 'L') -> set_sets([] { dialog::reaction_final = [] { println(hlog, "Reset"); vid.killreduction = 0; }; }); @@ -1856,6 +1863,7 @@ EX void configureInterface() { add_edit(less_in_portrait); add_edit(display_yasc_codes); + add_edit(vid.orbmode); dialog::addSelItem(XLAT("draw crosshair"), crosshair_size > 0 ? fts(crosshair_size) : ONOFF(false), 'x'); dialog::add_action([] () { diff --git a/graph.cpp b/graph.cpp index 076411b1..e442d566 100644 --- a/graph.cpp +++ b/graph.cpp @@ -761,10 +761,12 @@ EX shiftmatrix face_the_player(const shiftmatrix V) { } EX hpcshape& orbshape(eOrbshape s) { + if(vid.orbmode == 0) return cgi.shRing; switch(s) { case osLove: return cgi.shLoveRing; case osRanged: return cgi.shTargetRing; - case osOffensive: case osDirectional: return cgi.shSawRing; + case osOffensive: return cgi.shSawRing; + case osDirectional: return vid.orbmode == 2 ? cgi.shSawRing : cgi.shSpearRing; case osFriend: return cgi.shPeaceRing; case osUtility: return cgi.shGearRing; case osPowerUtility: return cgi.shPowerGearRing; @@ -1056,11 +1058,15 @@ EX bool drawItemType(eItem it, cell *c, const shiftmatrix& V, color_t icol, int icol = orb_auxiliary_color(it); color_t col = darkena(icol, 0, int(0x80 + 0x70 * sinptick(300))); - if(it == itOrbFish) + if(it == itOrbFish && vid.orbmode == 2) queuepolyat(Vit * spinptick(1500, 0), cgi.shFishTail, col, PPR::ITEM_BELOW); if(xch == 'c') queuepolyat(Vit * spinptick(500, 0), cgi.shMoonDisk, darkena(0x801080, 0, hidden ? 0x20 : 0xC0), prio); + else if(vid.orbmode < 2) { + icol1 = orb_inner_color(it); + queuepolyat(Vit, cgi.shDisk, darkena(icol1, 0, inice ? 0x80 : hidden ? 0x20 : 0xC0), prio); + } else { icol1 = orb_inner_color(it); auto dark = darkena(icol1, 0, inice ? 0x80 : hidden ? 0x20 : (it == itOrbBeauty) ? 0xA0 : 0xC0);