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%<W;XZ2mj6A^Ix;S z{Sh}q%f`4`)gqqEDGMH+Y1_Q^_xkO5ay$$dj{Vzi>@HlE`;pgo#+q#se`U{o7r%OH zvD|ij-_TGqQMFHU0?EQ+ZuSxPc|Yygz0LT2eeK@TD$cA~$0{~CNQC(Z+M0*F-?Hkf z74yS{%O>adnAbgczb@j>r415(CwHEgcwDOKT&=b1?biRoeF05w@BAb4gImK|_n%Vm z&`Pn>HRDTDW8S~_PyNaoW3@(=kGr+qLQmYQwH2+IbfU?tD3Zc|J`yod5sPy4NbAE|Wg)O7We=;I{eB?=P?J zzOKB?Tb0l7*;!$)bpE!uRqNXpoxH5)_&Ix~abUfDMb7@L&iWh1zqYhr40n#_?PNTW z|M;uS>J|0ht@L+X{M-J>K__nd9=%kj0D}`r-G7fhTvl?V$m*E^zs7`gySwKr_wD+^ zKK0y&)JF+r_WNy-^OI^Rjq}_dZ?KgpF}iLqGjFYQF2PcKN5YzuSH-X8X75 zz@GgZYm%SdPWskkSNW{wxwWYAqDRK1_1)*?CLDQSs@z-Ke!AfHuGBxpeLaVMJ<;1& zem(4N!_&3@ETr4kmB#y>%JJ)4J}H2qpw_WI?c{|y&tFZc`10DX_U~_QZ^5oxrw`}4 zeffM|e!d-Z17~wsWl{w54+e%Ka<^~J-DZ7o$vuWU%o5R-5BJ^KnRocW;d>KYFTZ>z zQfx119M@W(vB&&#jqe=es{8|r6AWy7XMcHi{chT#+dI0Q=B?MeQjy1eFHdw?WLHG+ z<*&;ZZMaZhF7#th;O(bh8D>BAe>^#JnSsHvThpH<^a-amtaz!c9Ud!s!EnlbZ7v=| zn-#}u+0LZ2sj_`NQ`sW@ZhqhKlKTt`78pOQU0M9#?mkY29~@o34z6Xdi%>E`7t11di}UHx3vIVCg!0PMXh Ag#Z8m delta 1222 zcmbQn^^bFciYjM;M`SSr1Gg{;GcwGYBf-GHz+U3%>&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%C3=9qo3=9Gc3=Av`3=E9;x%CL? zFMEPs{%5@U=hMFXY56A@!oJtXywXfyXwdq$U#{p2LxwSfn>J4s!)hyD21$o?X4St} zY~II~@L!n0L7G`XKFi;Ko2Dymx&CO8-66RTv&?_> zKMb6vYSgfs-NT3Vpk#nZYsTyPWa&1pR0W9x1yi?wW@b=eU}#9cA~)%qfI7p(!xyxB zgcx=#(Yvd%V&BmVjnml|*oKOq|NZN1g!cJW#tyUdqVHc@TNyilwYvL?)m~Gkht8FL zb!>O;Umdpovn$MPxn{kno22qH^Ss%@+g_ZncHB?5b!C%a>t5n?Ds$uQoOY)DR{!ej zv;V*IZQ7vXqg61;L%hGr_Q;oA_svQtsc4;EZy>|t@<`<%`+=7F?YCs+Y)am_K7NJH z@^w!4c(l)}nl|563VdI=|M*|m6!XegVtb>H{PpXX&D)vxCV zJ^T9MWz{9w3|EdG|J$`JV{_2Sa}7JSxzt{**ROwfTfa19m%*$>xm{rr45csEJ@@JQ zHT$~O>AmkZi?aU}{h66B)YRm-YugQZ**qzCi7Y|pPg5?}PF;O-X?@_%p62h(vd!;v z@3wuNyO}+pUXzny_m|s;(CYRpc#`L${$Ol9om#qv;DCBn}`lEhS;+Y zWtfg`7E#QeSnp6TXqp+tpcQ^al}Ylzt?I|ptgQ1oc7ET}+uy70GDxoKPe{1ah z9;CxnX!0;%Zo}H|Mc>RS7ca;+jqf(fmNA;wb8}`Ks&ahh_fb0Gh?Av__z8gJ3e1m|N8WOzK(0es=o4m$&2Uh>+62;Fxc_-^{oKE-2})py)vmr{Zhd{ZLBb7bqb#etlan5*C*9lqp}hC|qxtJ! zW?RjVE#O$YNtxSL*pH z?GsLYTK+v{mL1Q@8#^6@WYy0w#9p=zJGV>wLDG$SeGP*(&t25}9%udX>y+46B=L~> zy#M;o5^GE6if?gTTa_Gkq+RtC!v@y1zpl6}lHGTLfrEj8fr){kfdK@d3find("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