diff --git a/config.cpp b/config.cpp index b8e60a27..9084a90a 100644 --- a/config.cpp +++ b/config.cpp @@ -82,6 +82,7 @@ void addsaver(charstyle& cs, string s) { addsaver(cs.swordcolor, s + ".swordcolor"); addsaver(cs.dresscolor2, s + ".dresscolor2"); addsaver(cs.uicolor, s + ".uicolor"); + addsaver(cs.lefthanded, s + ".lefthanded"); } // R:239, G:208, B:207 @@ -102,6 +103,7 @@ void initcs(charstyle &cs) { cs.swordcolor = 0xD0D0D0FF; cs.dresscolor2= 0x8080FFC0; cs.uicolor = 0xFF0000FF; + cs.lefthanded = false; } #if CAP_CONFIG @@ -1408,6 +1410,8 @@ void showCustomizeChar() { if(!shmup::on && multi::players == 1) dialog::addSelItem(XLAT("save whom"), XLAT1(minf[moPrincess].name), 'p'); if(numplayers() > 1) dialog::addSelItem(XLAT("player"), its(shmup::cpid+1), 'a'); + + dialog::addBoolItem(XLAT("left-handed"), cs.lefthanded, 'l'); dialog::addBreak(50); dialog::addBack(); @@ -1442,6 +1446,7 @@ void showCustomizeChar() { else if(uni == 'd') switchcolor(cs.dresscolor, cat ? haircolors : dresscolors); else if(uni == 'f') switchcolor(cs.dresscolor2, dresscolors2); else if(uni == 'u') switchcolor(cs.uicolor, eyecolors); + else if(uni == 'l') cs.lefthanded = !cs.lefthanded; else if(doexiton(sym, uni)) popScreen(); }; } diff --git a/graph.cpp b/graph.cpp index 98baa2de..77186067 100644 --- a/graph.cpp +++ b/graph.cpp @@ -894,27 +894,29 @@ bool drawMonsterType(eMonster m, cell *where, const transmatrix& V, color_t col, if(items[itOrbSide1] && !shmup::on) queuepoly(VBODY * spin(-M_PI/24), cs.charid >= 2 ? shSabre : shPSword, fc(314, cs.swordcolor, 3)); // 3 not colored + transmatrix VWPN = cs.lefthanded ? VBODY * Mirror : VBODY; + if(peace::on) ; else if(items[itOrbThorns]) - queuepoly(VBODY, shHedgehogBladePlayer, items[itOrbDiscord] ? watercolor(0) : 0x00FF00FF); + queuepoly(VWPN, shHedgehogBladePlayer, items[itOrbDiscord] ? watercolor(0) : 0x00FF00FF); else if(!shmup::on && items[itOrbDiscord]) - queuepoly(VBODY, cs.charid >= 2 ? shSabre : shPSword, watercolor(0)); + queuepoly(VWPN, cs.charid >= 2 ? shSabre : shPSword, watercolor(0)); else if(items[itRevolver]) - queuepoly(VBODY, shGunInHand, fc(314, cs.swordcolor, 3)); // 3 not colored + queuepoly(VWPN, shGunInHand, fc(314, cs.swordcolor, 3)); // 3 not colored else if(items[itOrbSlaying]) { - queuepoly(VBODY, shFlailTrunk, fc(314, cs.swordcolor, 3)); - queuepoly(VBODY, shHammerHead, fc(314, cs.swordcolor, 3)); + queuepoly(VWPN, shFlailTrunk, fc(314, cs.swordcolor, 3)); + queuepoly(VWPN, shHammerHead, fc(314, cs.swordcolor, 3)); } else if(!shmup::on) - queuepoly(VBODY, cs.charid >= 2 ? shSabre : shPSword, fc(314, cs.swordcolor, 3)); // 3 not colored + queuepoly(VWPN, cs.charid >= 2 ? shSabre : shPSword, fc(314, cs.swordcolor, 3)); // 3 not colored else if(shmup::curtime >= shmup::getPlayer()->nextshot) - queuepoly(VBODY, shPKnife, fc(314, cs.swordcolor, 3)); // 3 not colored + queuepoly(VWPN, shPKnife, fc(314, cs.swordcolor, 3)); // 3 not colored if(items[itOrbBeauty]) { if(cs.charid&1) queuepoly(VHEAD, shFlowerHair, darkena(iinf[itOrbBeauty].color, 0, 0xFF)); else - queuepoly(VBODY, shFlowerHand, darkena(iinf[itOrbBeauty].color, 0, 0xFF)); + queuepoly(VWPN, shFlowerHand, darkena(iinf[itOrbBeauty].color, 0, 0xFF)); } if(where && where->land == laWildWest) { diff --git a/hyper.h b/hyper.h index 52e6bb40..f1fa44ce 100644 --- a/hyper.h +++ b/hyper.h @@ -749,6 +749,7 @@ void activateActiv(cell *c, bool msg); struct charstyle { int charid; color_t skincolor, haircolor, dresscolor, swordcolor, dresscolor2, uicolor; + bool lefthanded; }; string csname(charstyle& cs);