From 670d080fae6f5e8e4e2dfde49a32de5cccbaefd8 Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 16 Oct 2017 22:54:11 -0400 Subject: [PATCH] Improved tutorial, made smooth camera a setting --- core/assets/maps/tutorial.png | Bin 1278 -> 1302 bytes core/src/io/anuke/mindustry/Renderer.java | 22 +++-- core/src/io/anuke/mindustry/Tutorial.java | 80 +++++++++++++++--- core/src/io/anuke/mindustry/UI.java | 2 +- core/src/io/anuke/mindustry/Vars.java | 3 + .../io/anuke/mindustry/entities/Player.java | 7 +- 6 files changed, 95 insertions(+), 19 deletions(-) diff --git a/core/assets/maps/tutorial.png b/core/assets/maps/tutorial.png index 8b03ea41128e3b64313e0656f516f0acda8d9a4a..5e4ddfeae57de2eab07032591f813a5d95751554 100644 GIT binary patch delta 1218 zcmeyzIgM+A3O`$tx4R3&e-K=-clqRriV7TpOj@FwUT-U$=&4a(=jq}YQgQ3;9Np=2 z3?y1N7YCe>D>0GUyJ}I@myD9%{9#|@bH2W~x>$QvR=3+?%c(EA&McD@QgFCev*G(Z z(Kj+_Y2WSMy9+V-m&O`v%<mIyc7xCxP1_{5DJI_lzF4c6d*4p)U>wn?CfF`$h{*n2?tzoVEPbqk4 zrP%43@ujIT@8A2Uer1iZTBFLx-P&%UC+^kSiq=dz(d1rRXZ-c{w?h)rzxoWPiT~kq zK5S4FQ*SWgn*HZGX14Pxe;6k`v|neIzV?mAyYA*a4?c%xr2MVxnP z{8eW4iu&(X`a3TEZGYsT6E}U2UaC`o!HJ~qzegV~D>+hR^~``@V?w&!-Sd_Ec70)= zdhSN0y+!4R+81ow_f>1y-P<>Xr6KCq)kOcOhx=#n2AV(AU26YGMd0oa4&#SgRBFQy z-+vp?A;u7U_M;_>Qs|_5$p^V|7hI@4w#UzU*z{GiFd_f3S_q_0jIn_K&ByoRiae zb&^qH`{&^EoO^WrO0Hi^ED}y@IBeON`Z)KW$(483|9uXf-TAHB_9fTEeN*bUePdZH zlPBi2fU}!*X79W0;@9HdD2LB^S-ix1pRQ`c#<;1WpZ***-*s2J{8QTBZNC>Yw7ioDqr5(rxQXsX(5^1__wuclOddF@yG_cynX1GiD=7*`|j+_JAB~qy$P`mrbQ_S3Hnv!D7uo}9VNz~I=e>CY1SfMK@crLuN-tmp;9DfhLxcnob; z9IItJlhUTj_Vr9&pI+i%*nK=uC-$$HZuj`U+1M z$B>F!Z|7)FzilAUy4TXJ$@bW>gU7nL#Ms%{xBp+T;QxZ72fLfOyQW>capT7F3p*S- zS4Di%zSv{?Y436c-??YM)qS3j5~;uZvS#D7%Y0%$dmMmR0Ek(Dm=Qm>9wGf@PteQ% zj934B+IK%K{{%zW_xhMunh6XITHp4|6@6jIFlKPm=BZ*>ZN9EeM`uB>>``8lx z3o|%KGb?EPIm%qHciPiB9?1lm|0|6D{xZ#H`TK9vbfqoVA1$&wB==#K`LF(mfzwot z8g{dL_^=+73=nC}cwL_?-Nu!wAaS5z>h{mf3f1QocKEKM?VRl~h{cCG0W9P3{cVDsEYs&P{xzewW?auwH z!`6Rxg}E))tQU2YRDNcjH(Pkyi}Tfv`{}l>Y!YnUOPo$+ZoHk-&a~g^UwwV{|98Gk z8&rI>3MP4o_gC2-`LgT2S?MGdt<&obWO!U2sT^cK&{Dtsmdu<@$vfA_uh3b(&gmYH z_IXv)=DSLP?<@Bo|LdA!UinIFZ}gGBe*Lm}JM(^g_E3+!At;{B`RYv3`pc_lUq8I8 zx+I(7%F*M0yOw2a4mx?RVW&2i+N<^Y_3v)$mxk;zn6)UkD@=l+^yRweK3%_NU)MUl z_uXbu_P?S(GxLR-njCj+yCE-|C*>}YCCL0~%H`Urt8Xr?58T<){JmMW`F-x)wy$$H zvj@~`ax(1xa{I7cOuyAUu|b*EYu4BRzGFO=j-ZUpT5u6agA8jSKcpq@w|O~-7g*nJ08EMk%y%Yura)_ z-6kyeMrfm-`-#7CDrADGhV-Km3n4&;M)p=vq4AZ%z9@lntD^6(?b4AJzu4L!l_To zzo*Qy<2iX_r-P8J`Wc4U%hqA%c42vMVX)@8i+bPVtY3be68nlI9x|WzU;kNR zZRuR`EskrelEaR)tDa)mz`FL=6_-V_`%W-$0CPPPFdqRaI75MTo`W gfF`I!!fdf$>@tEs#54;nw}F&find("sectionbuttondistribution").fireClick(); + World.tile(blockPlaceX + World.core.x, blockPlaceY + World.core.y).setBlock(Blocks.air); } }, conduitUse2{ @@ -473,9 +473,13 @@ public class Tutorial{ targetBlock = ProductionBlocks.conduit; blockPlaceX = 4; blockPlaceY = -2; - blockRotation = 2; + blockRotation = 1; text = "And a few more..."; } + + void onSwitch(){ + World.tile(blockPlaceX + World.core.x, blockPlaceY + World.core.y).setBlock(Blocks.air); + } }, conduitUse3{ { @@ -489,11 +493,65 @@ public class Tutorial{ blockRotation = 1; text = "And a few more..."; } - }*/ + + void onSwitch(){ + World.tile(blockPlaceX + World.core.x, blockPlaceY + World.core.y).setBlock(Blocks.air); + } + }, + extractor{ + { + canBack = false; + canForward = false; + showBlock = true; + canPlace = true; + targetBlock = ProductionBlocks.coalpurifier; + blockPlaceX = 4; + blockPlaceY = 0; + text = "Now, place a [orange]coal extractor[] block at the end of the conduit."; + } + + void onSwitch(){ + World.tile(blockPlaceX + World.core.x, blockPlaceY + World.core.y).setBlock(Blocks.air); + Vars.ui.find("sectionbuttonproduction").fireClick(); + Vars.control.addItem(Item.steel, 60); + Vars.control.addItem(Item.iron, 60); + } + }, + extractorExplain{ + { + canBack = false; + text = "The extractor will now produce [orange]coal[] from the stone and water, then move it to the core."; + } + + void onSwitch(){ + for(int i = -2; i <= 2; i ++){ + World.tile(World.core.x + i + 4, World.core.y + 2).setBlock(ProductionBlocks.stonedrill); + World.tile(World.core.x + i + 4, World.core.y + 2).setFloor(Blocks.stone); + } + + for(int i = 0; i < 3; i ++){ + World.tile(World.core.x + 4 - 1 - i, World.core.y).setBlock(ProductionBlocks.conveyor, 2); + } + + World.tile(World.core.x + 2, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 0); + World.tile(World.core.x + 3, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 0); + World.tile(World.core.x + 4, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 3); + World.tile(World.core.x + 5, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 2); + World.tile(World.core.x + 6, World.core.y + 1).setBlock(ProductionBlocks.conveyor, 2); + + } + }, + extractorMore{ + { + canBack = false; + canPlace = true; + text = "The [orange]smeltery[] and [orange]crucible[] blocks work similarly to extractors, except they accept only items."; + } + }, end{ { text = "And that concludes the tutorial!"; - canBack =false; + canBack = false; } }; String text = "no text"; diff --git a/core/src/io/anuke/mindustry/UI.java b/core/src/io/anuke/mindustry/UI.java index c91cbe37be..b5156bafa5 100644 --- a/core/src/io/anuke/mindustry/UI.java +++ b/core/src/io/anuke/mindustry/UI.java @@ -139,9 +139,9 @@ public class UI extends SceneModule{ prefs.screenshakePref(); prefs.volumePrefs(); - prefs.checkPref("tutorial", "Show tutorial Window", true); prefs.checkPref("fps", "Show FPS", false); prefs.checkPref("noshadows", "Disable shadows", false); + prefs.checkPref("smoothcam", "Smooth Camera", true); prefs.hidden(()->{ if(!GameState.is(State.menu)){ diff --git a/core/src/io/anuke/mindustry/Vars.java b/core/src/io/anuke/mindustry/Vars.java index facc2b0f80..f3f4f953af 100644 --- a/core/src/io/anuke/mindustry/Vars.java +++ b/core/src/io/anuke/mindustry/Vars.java @@ -31,6 +31,9 @@ public class Vars{ //TODO named save slots, possibly with a scroll dialog public static final int saveSlots = 4; + //only if smoothCamera + public static boolean snapCamera = true; + //turret and enemy shoot speed inverse multiplier public static final float multiplier = android ? 3 : 2; diff --git a/core/src/io/anuke/mindustry/entities/Player.java b/core/src/io/anuke/mindustry/entities/Player.java index 1f3df969ff..30a2d91cf3 100644 --- a/core/src/io/anuke/mindustry/entities/Player.java +++ b/core/src/io/anuke/mindustry/entities/Player.java @@ -44,7 +44,12 @@ public class Player extends DestructibleEntity{ @Override public void draw(){ - Draw.rect("player", (int)x, (int)y, direction.angle()-90); + if(Vars.snapCamera && Settings.getBool("smoothcam")){ + Draw.rect("player", (int)x, (int)y, direction.angle()-90); + }else{ + Draw.rect("player", x, y, direction.angle()-90); + } + } @Override