From 5f0ef9b27ef059d88ea6eac85f8927fe3e8f075f Mon Sep 17 00:00:00 2001 From: Anuken Date: Mon, 2 May 2022 14:29:32 -0400 Subject: [PATCH] WIP T3 tank --- .../assets-raw/sprites/units/precept-cell.png | Bin 0 -> 319 bytes .../sprites/units/precept-treads.png | Bin 0 -> 483 bytes .../sprites/units/precept-weapon-cell.png | Bin 0 -> 696 bytes .../sprites/units/precept-weapon.png | Bin 0 -> 1960 bytes core/assets-raw/sprites/units/precept.png | Bin 0 -> 2904 bytes core/assets/icons/icons.properties | 1 + core/assets/logicids.dat | Bin 4358 -> 4367 bytes core/src/mindustry/content/UnitTypes.java | 48 +++++++++++++++++- .../src/mindustry/graphics/BlockRenderer.java | 2 +- core/src/mindustry/type/UnitType.java | 26 ++++++---- gradle.properties | 2 +- 11 files changed, 67 insertions(+), 12 deletions(-) create mode 100644 core/assets-raw/sprites/units/precept-cell.png create mode 100644 core/assets-raw/sprites/units/precept-treads.png create mode 100644 core/assets-raw/sprites/units/precept-weapon-cell.png create mode 100644 core/assets-raw/sprites/units/precept-weapon.png create mode 100644 core/assets-raw/sprites/units/precept.png diff --git a/core/assets-raw/sprites/units/precept-cell.png b/core/assets-raw/sprites/units/precept-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4a9ecdafc31ab1a2fd62dac4982be20137194e GIT binary patch literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^6(G#P1|%(0%q{^b#^NA%Cx&(BWL^R}KRsO>Ln`LH zy&BEeWFWwL;o#aAY9;><`o4(z;4Y;2G%>nn-sk&?MfuLkK*fZ>w9@kT_a5KQnHn8j ze52yvvdmTI{)a|C3(LK5PIwzUax8@F!t532%2Ve6le7X;{gROWR^y zj{K{b^S`5L@-(k~^Uezj7Fx{R^!c>ijp?^%Yenw-yv*y}>9(~ bZvW7nm;EO<^!}TD??4isu6{1-oD!Mzopr0HIvY AivR!s literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/precept-weapon-cell.png b/core/assets-raw/sprites/units/precept-weapon-cell.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cad4156d31be1a5781ecd3e9066def3f73a8ed GIT binary patch literal 696 zcmeAS@N?(olHy`uVBq!ia0vp^F+eEakt zG3V{=#Gu0p0&Nf1hF|o)^4ou}i>>#c4mOd^qWDv3k>E|5`8N)eoAhdG^%B1AQ5XC;PZZc{}7MxNmv*R(CgZn&IoU zr)KF1R-8U@CS>MO-Aj${IRk71X-nOJC(XEs=7al}DAC0=aE-Jx|^-O}XaB z`KNBTDEptkUrQ_2M$O)8SHaC+Bm2UPqklto?)v-bEpk#n${JoDusvKCqHXnM!vW># z6Qx?8x|YfRTjjLfy+7^J@#o9E>o>ic*7DvxyZO6ZN!Z=BQ`j5cK3L2)H#Gdv-?C_< zZK;u^j0^{Q&Xsh`*~j0zW6RSxb#0Kd;guz{-7IM?Oa;l$?ZtGvAXBN({m>Mch;raKbhje`c7~{)C;4=ewNLD zK4sjV?ebu8;`DuXo7&Vn4^&TO3i~OtA-v*2^?ZZqgYS54A7`4Uw)OLEQNM8U!e+au z0{%T^-xrr3P&~Sa6iR!Tc^M?ki*tGXY&KoJtiBjC49HZ+FqBw zWncT1-K~2Qzt{cyRL=H&%iO~40gn3iRfqheSUB`>b0?dznib{j!4TJ zGY^>w#|E9b_5aVcr%Oe*Jt|64li6|eA2Z|C4QG!qn@jV@TIOu#WHNuvA8VVl*^|lq za+UB~$>6s^ag2@Zvmc!=So&$*Q{!bXU%a~VJ}T{DtT#qd@q5O8XkzECy&q1l1j%{2 L`njxgN@xNA7SK5| literal 0 HcmV?d00001 diff --git a/core/assets-raw/sprites/units/precept-weapon.png b/core/assets-raw/sprites/units/precept-weapon.png new file mode 100644 index 0000000000000000000000000000000000000000..a90cf9ad7385b931aa5266dc22cd3ae2a966447e GIT binary patch literal 1960 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 delta 19 acmeBIYE#<4!pCU2nU!xJ lightview.add(tile)); diff --git a/core/src/mindustry/type/UnitType.java b/core/src/mindustry/type/UnitType.java index b89af108dd..4650430b7a 100644 --- a/core/src/mindustry/type/UnitType.java +++ b/core/src/mindustry/type/UnitType.java @@ -362,17 +362,26 @@ public class UnitType extends UnlockableContent{ /** how much of a top part of a tread sprite is "cut off" relative to the pattern; this is corrected for */ public int treadPullOffset = 0; - //SEGMENTED / CRAWL UNITS + //SEGMENTED / CRAWL UNITS (this is WIP content!) - //for crawlers + /** number of independent segments */ public int segments = 0; - public float segmentSpacing = 2f, segmentScl = 4f, segmentPhase = 5f, segmentRotSpeed = 1f, segmentMaxRot = 30f; + /** magnitude of sine offset between segments */ + public float segmentMag = 2f, + /** scale of sine offset between segments */ + segmentScl = 4f, + /** index multiplier of sine offset between segments */ + segmentPhase = 5f, + /** how fast each segment moves towards the next one */ + segmentRotSpeed = 1f, + /** maximum difference between segment angles */ + segmentMaxRot = 30f, /** speed multiplier this unit will have when crawlSlowdownFrac is met. */ - public float crawlSlowdown = 0.5f; + crawlSlowdown = 0.5f, /** damage dealt to blocks under this tank/crawler every frame. */ - public float crushDamage = 0f; + crushDamage = 0f, /** the fraction of solids under this block necessary for it to reach crawlSlowdown. */ - public float crawlSlowdownFrac = 0.55f; + crawlSlowdownFrac = 0.55f; //MISSILE UNITS @@ -1377,6 +1386,7 @@ public class UnitType extends UnlockableContent{ Draw.reset(); } + //TODO public void drawCrawl(Crawlc crawl){ Unit unit = (Unit)crawl; applyColor(unit); @@ -1386,20 +1396,18 @@ public class UnitType extends UnlockableContent{ TextureRegion[] regions = p == 0 ? segmentOutlineRegions : segmentRegions; for(int i = 0; i < segments; i++){ - float trns = Mathf.sin(crawl.crawlTime() + i * segmentPhase, segmentScl, segmentSpacing); + float trns = Mathf.sin(crawl.crawlTime() + i * segmentPhase, segmentScl, segmentMag); //at segment 0, rotation = segmentRot, but at the last segment it is rotation float rot = Mathf.slerp(crawl.segmentRot(), unit.rotation, i / (float)(segments - 1)); float tx = Angles.trnsx(rot, trns), ty = Angles.trnsy(rot, trns); - //shadow Draw.color(0f, 0f, 0f, 0.2f); //Draw.rect(regions[i], unit.x + tx + 2f, unit.y + ty - 2f, rot - 90); applyColor(unit); - //TODO merge outlines? Draw.rect(regions[i], unit.x + tx, unit.y + ty, rot - 90); } diff --git a/gradle.properties b/gradle.properties index 675f91763b..7b642a60b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,4 @@ org.gradle.caching=true #used for slow jitpack builds; TODO see if this actually works org.gradle.internal.http.socketTimeout=100000 org.gradle.internal.http.connectionTimeout=100000 -archash=7f36a32bec +archash=9ae34c37ed