diff --git a/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png b/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png new file mode 100644 index 0000000000..9d50189fd9 Binary files /dev/null and b/core/assets-raw/sprites/blocks/environment/pooled-cryofluid.png differ diff --git a/core/assets/bundles/bundle.properties b/core/assets/bundles/bundle.properties index ec9d07e948..b1d30ffb15 100644 --- a/core/assets/bundles/bundle.properties +++ b/core/assets/bundles/bundle.properties @@ -1133,6 +1133,7 @@ block.sand-boulder.name = Sand Boulder block.basalt-boulder.name = Basalt Boulder block.grass.name = Grass block.molten-slag.name = Slag +block.pooled-cryofluid.name = Cryofluid block.space.name = Space block.salt.name = Salt block.salt-wall.name = Salt Wall diff --git a/core/assets/icons/icons.properties b/core/assets/icons/icons.properties new file mode 100755 index 0000000000..beddcd7a3d --- /dev/null +++ b/core/assets/icons/icons.properties @@ -0,0 +1,363 @@ +63743=spawn|block-spawn-ui +63742=deepwater|block-deepwater-ui +63741=shallow-water|block-shallow-water-ui +63740=tainted-water|block-tainted-water-ui +63739=darksand-tainted-water|block-darksand-tainted-water-ui +63738=sand-water|block-sand-water-ui +63737=darksand-water|block-darksand-water-ui +63736=tar|block-tar-ui +63735=stone|block-stone-ui +63734=craters|block-craters-ui +63733=char|block-char-ui +63732=ignarock|block-ignarock-ui +63731=hotrock|block-hotrock-ui +63730=magmarock|block-magmarock-ui +63729=sand|block-sand-ui +63728=darksand|block-darksand-ui +63726=grass|block-grass-ui +63725=salt|block-salt-ui +63724=snow|block-snow-ui +63723=ice|block-ice-ui +63722=ice-snow|block-ice-snow-ui +63721=cliffs|block-cliffs-ui +63718=rock|block-rock-ui +63717=snowrock|block-snowrock-ui +63711=spore-pine|block-spore-pine-ui +63710=snow-pine|block-snow-pine-ui +63709=pine|block-pine-ui +63708=shrubs|block-shrubs-ui +63707=white-tree-dead|block-white-tree-dead-ui +63706=white-tree|block-white-tree-ui +63705=spore-cluster|block-spore-cluster-ui +63704=shale|block-shale-ui +63702=shale-boulder|block-shale-boulder-ui +63701=sand-boulder|block-sand-boulder-ui +63700=moss|block-moss-ui +63699=spore-moss|block-spore-moss-ui +63698=metal-floor|block-metal-floor-ui +63697=metal-floor-damaged|block-metal-floor-damaged-ui +63696=metal-floor-2|block-metal-floor-2-ui +63695=metal-floor-3|block-metal-floor-3-ui +63694=metal-floor-5|block-metal-floor-5-ui +63693=dark-panel-1|block-dark-panel-1-ui +63692=dark-panel-2|block-dark-panel-2-ui +63691=dark-panel-3|block-dark-panel-3-ui +63690=dark-panel-4|block-dark-panel-4-ui +63689=dark-panel-5|block-dark-panel-5-ui +63688=dark-panel-6|block-dark-panel-6-ui +63687=dark-metal|block-dark-metal-ui +63686=pebbles|block-pebbles-ui +63685=tendrils|block-tendrils-ui +63684=ore-copper|block-ore-copper-ui +63683=ore-lead|block-ore-lead-ui +63682=ore-scrap|block-ore-scrap-ui +63681=ore-coal|block-ore-coal-ui +63680=ore-titanium|block-ore-titanium-ui +63679=ore-thorium|block-ore-thorium-ui +63678=graphite-press|block-graphite-press-ui +63677=multi-press|block-multi-press-ui +63676=silicon-smelter|block-silicon-smelter-ui +63675=kiln|block-kiln-ui +63674=plastanium-compressor|block-plastanium-compressor-ui +63673=phase-weaver|block-phase-weaver-ui +63672=alloy-smelter|block-alloy-smelter-ui +63671=cryofluid-mixer|block-cryofluid-mixer-ui +63670=blast-mixer|block-blast-mixer-ui +63669=pyratite-mixer|block-pyratite-mixer-ui +63668=melter|block-melter-ui +63667=separator|block-separator-ui +63666=spore-press|block-spore-press-ui +63665=pulverizer|block-pulverizer-ui +63664=coal-centrifuge|block-coal-centrifuge-ui +63663=incinerator|block-incinerator-ui +63662=copper-wall|block-copper-wall-ui +63661=copper-wall-large|block-copper-wall-large-ui +63660=titanium-wall|block-titanium-wall-ui +63659=titanium-wall-large|block-titanium-wall-large-ui +63658=plastanium-wall|block-plastanium-wall-ui +63657=plastanium-wall-large|block-plastanium-wall-large-ui +63656=thorium-wall|block-thorium-wall-ui +63655=thorium-wall-large|block-thorium-wall-large-ui +63654=phase-wall|block-phase-wall-ui +63653=phase-wall-large|block-phase-wall-large-ui +63652=surge-wall|block-surge-wall-ui +63651=surge-wall-large|block-surge-wall-large-ui +63650=door|block-door-ui +63649=door-large|block-door-large-ui +63648=scrap-wall|block-scrap-wall-ui +63647=scrap-wall-large|block-scrap-wall-large-ui +63646=scrap-wall-huge|block-scrap-wall-huge-ui +63645=scrap-wall-gigantic|block-scrap-wall-gigantic-ui +63644=thruster|block-thruster-ui +63643=mender|block-mender-ui +63642=mend-projector|block-mend-projector-ui +63641=overdrive-projector|block-overdrive-projector-ui +63640=force-projector|block-force-projector-ui +63639=shock-mine|block-shock-mine-ui +63638=conveyor|block-conveyor-ui +63637=titanium-conveyor|block-titanium-conveyor-ui +63636=armored-conveyor|block-armored-conveyor-ui +63635=junction|block-junction-ui +63634=bridge-conveyor|block-bridge-conveyor-ui +63633=phase-conveyor|block-phase-conveyor-ui +63632=sorter|block-sorter-ui +63631=inverted-sorter|block-inverted-sorter-ui +63630=router|block-router-ui +63629=distributor|block-distributor-ui +63628=overflow-gate|block-overflow-gate-ui +63627=mass-driver|block-mass-driver-ui +63626=mechanical-pump|block-mechanical-pump-ui +63625=rotary-pump|block-rotary-pump-ui +63624=thermal-pump|block-thermal-pump-ui +63623=conduit|block-conduit-ui +63622=pulse-conduit|block-pulse-conduit-ui +63621=plated-conduit|block-plated-conduit-ui +63620=liquid-router|block-liquid-router-ui +63619=liquid-tank|block-liquid-tank-ui +63618=liquid-junction|block-liquid-junction-ui +63617=bridge-conduit|block-bridge-conduit-ui +63616=phase-conduit|block-phase-conduit-ui +63615=power-node|block-power-node-ui +63614=power-node-large|block-power-node-large-ui +63613=surge-tower|block-surge-tower-ui +63612=diode|block-diode-ui +63611=battery|block-battery-ui +63610=battery-large|block-battery-large-ui +63609=combustion-generator|block-combustion-generator-ui +63608=thermal-generator|block-thermal-generator-ui +63607=steam-generator|block-steam-generator-ui +63606=differential-generator|block-differential-generator-ui +63605=rtg-generator|block-rtg-generator-ui +63604=solar-panel|block-solar-panel-ui +63603=solar-panel-large|block-solar-panel-large-ui +63602=thorium-reactor|block-thorium-reactor-ui +63601=impact-reactor|block-impact-reactor-ui +63600=mechanical-drill|block-mechanical-drill-ui +63599=pneumatic-drill|block-pneumatic-drill-ui +63598=laser-drill|block-laser-drill-ui +63597=blast-drill|block-blast-drill-ui +63596=water-extractor|block-water-extractor-ui +63595=cultivator|block-cultivator-ui +63594=oil-extractor|block-oil-extractor-ui +63593=core-shard|block-core-shard-ui +63592=core-foundation|block-core-foundation-ui +63591=core-nucleus|block-core-nucleus-ui +63590=vault|block-vault-ui +63589=container|block-container-ui +63588=unloader|block-unloader-ui +63587=launch-pad|block-launch-pad-ui +63586=launch-pad-large|block-launch-pad-large-ui +63585=duo|block-duo-ui +63584=scatter|block-scatter-ui +63583=scorch|block-scorch-ui +63582=hail|block-hail-ui +63581=wave|block-wave-ui +63580=lancer|block-lancer-ui +63579=arc|block-arc-ui +63578=swarmer|block-swarmer-ui +63577=salvo|block-salvo-ui +63576=fuse|block-fuse-ui +63575=ripple|block-ripple-ui +63574=cyclone|block-cyclone-ui +63573=spectre|block-spectre-ui +63572=meltdown|block-meltdown-ui +63571=draug-factory|block-draug-factory-ui +63570=spirit-factory|block-spirit-factory-ui +63569=phantom-factory|block-phantom-factory-ui +63568=command-center|block-command-center-ui +63567=wraith-factory|block-wraith-factory-ui +63566=ghoul-factory|block-ghoul-factory-ui +63565=revenant-factory|block-revenant-factory-ui +63564=dagger-factory|block-dagger-factory-ui +63563=crawler-factory|block-crawler-factory-ui +63562=titan-factory|block-titan-factory-ui +63561=fortress-factory|block-fortress-factory-ui +63560=repair-point|block-repair-point-ui +63559=dart-mech-pad|block-dart-mech-pad-ui +63558=delta-mech-pad|block-delta-mech-pad-ui +63557=tau-mech-pad|block-tau-mech-pad-ui +63556=omega-mech-pad|block-omega-mech-pad-ui +63555=javelin-ship-pad|block-javelin-ship-pad-ui +63554=trident-ship-pad|block-trident-ship-pad-ui +63553=glaive-ship-pad|block-glaive-ship-pad-ui +63552=power-source|block-power-source-ui +63551=power-void|block-power-void-ui +63550=item-source|block-item-source-ui +63549=item-void|block-item-void-ui +63548=liquid-source|block-liquid-source-ui +63547=liquid-void|block-liquid-void-ui +63546=message|block-message-ui +63545=illuminator|block-illuminator-ui +63544=copper|item-copper-ui +63543=lead|item-lead-ui +63542=metaglass|item-metaglass-ui +63541=graphite|item-graphite-ui +63540=sand|item-sand-ui +63539=coal|item-coal-ui +63538=titanium|item-titanium-ui +63537=thorium|item-thorium-ui +63536=scrap|item-scrap-ui +63535=silicon|item-silicon-ui +63534=plastanium|item-plastanium-ui +63533=phase-fabric|item-phase-fabric-ui +63532=surge-alloy|item-surge-alloy-ui +63531=spore-pod|item-spore-pod-ui +63530=blast-compound|item-blast-compound-ui +63529=pyratite|item-pyratite-ui +63528=water|liquid-water-ui +63527=slag|liquid-slag-ui +63526=oil|liquid-oil-ui +63525=cryofluid|liquid-cryofluid-ui +63524=underflow-gate|block-underflow-gate-ui +63523=dart-ship-pad|block-dart-ship-pad-ui +63522=alpha-mech-pad|block-alpha-mech-pad-ui +63521=cliff|block-cliff-ui +63520=legacy-mech-pad|block-legacy-mech-pad-ui +63519=ground-factory|block-ground-factory-ui +63518=legacy-unit-factory|block-legacy-unit-factory-ui +63517=mass-conveyor|block-mass-conveyor-ui +63516=legacy-command-center|block-legacy-command-center-ui +63515=block-forge|block-block-forge-ui +63514=block-launcher|block-block-launcher-ui +63513=plastanium-conveyor|block-plastanium-conveyor-ui +63512=crater|crater +63511=naval-factory|block-naval-factory-ui +63510=air-factory|block-air-factory-ui +63509=basic-reconstructor|block-basic-reconstructor-ui +63508=block-loader|block-block-loader-ui +63507=block-unloader|block-block-unloader-ui +63506=core-silo|block-core-silo-ui +63505=data-processor|block-data-processor-ui +63504=payload-router|block-payload-router-ui +63503=silicon-crucible|block-silicon-crucible-ui +63502=segment|block-segment-ui +63501=large-overdrive-projector|block-large-overdrive-projector-ui +63500=disassembler|block-disassembler-ui +63499=advanced-reconstructor|block-advanced-reconstructor-ui +63498=reconstructor-basis|block-reconstructor-basis-ui +63497=reconstructor-morphism|block-reconstructor-morphism-ui +63496=reconstructor-functor|block-reconstructor-functor-ui +63495=reconstructor-prime|block-reconstructor-prime-ui +63494=additive-reconstructor|block-additive-reconstructor-ui +63493=multiplicative-reconstructor|block-multiplicative-reconstructor-ui +63492=exponential-reconstructor|block-exponential-reconstructor-ui +63491=tetrative-reconstructor|block-tetrative-reconstructor-ui +63490=resupply-point|block-resupply-point-ui +63489=parallax|block-parallax-ui +63488=dagger|unit-dagger-ui +63487=mace|unit-mace-ui +63486=fortress|unit-fortress-ui +63485=nova|unit-nova-ui +63484=pulsar|unit-pulsar-ui +63483=quasar|unit-quasar-ui +63482=crawler|unit-crawler-ui +63481=atrax|unit-atrax-ui +63480=spiroct|unit-spiroct-ui +63479=arkyid|unit-arkyid-ui +63478=flare|unit-flare-ui +63477=horizon|unit-horizon-ui +63476=zenith|unit-zenith-ui +63475=antumbra|unit-antumbra-ui +63474=eclipse|unit-eclipse-ui +63473=mono|unit-mono-ui +63472=poly|unit-poly-ui +63471=mega|unit-mega-ui +63470=risse|unit-risse-ui +63469=minke|unit-minke-ui +63468=bryde|unit-bryde-ui +63467=alpha|unit-alpha-ui +63466=beta|unit-beta-ui +63465=gamma|unit-gamma-ui +63464=block|unit-block-ui +63463=risso|unit-risso-ui +63462=overdrive-dome|block-overdrive-dome-ui +63461=logic-processor|block-logic-processor-ui +63460=micro-processor|block-micro-processor-ui +63459=logic-display|block-logic-display-ui +63458=switch|block-switch-ui +63457=memory-cell|block-memory-cell-ui +63456=payload-conveyor|block-payload-conveyor-ui +63455=hyper-processor|block-hyper-processor-ui +63454=toxopid|unit-toxopid-ui +63453=vestige|unit-vestige-ui +63452=cataclyst|unit-cataclyst-ui +63451=scepter|unit-scepter-ui +63450=reign|unit-reign-ui +63449=dirt|block-dirt-ui +63447=stone-wall|block-stone-wall-ui +63446=spore-wall|block-spore-wall-ui +63445=ice-wall|block-ice-wall-ui +63444=snow-wall|block-snow-wall-ui +63443=dune-wall|block-dune-wall-ui +63442=sand-wall|block-sand-wall-ui +63441=salt-wall|block-salt-wall-ui +63440=shale-wall|block-shale-wall-ui +63439=dirt-wall|block-dirt-wall-ui +63437=basalt|block-basalt-ui +63436=dacite|block-dacite-ui +63435=boulder|block-boulder-ui +63434=snow-boulder|block-snow-boulder-ui +63433=dacite-wall|block-dacite-wall-ui +63432=dacite-boulder|block-dacite-boulder-ui +63431=large-logic-display|block-large-logic-display-ui +63430=omura|unit-omura-ui +63429=mud|block-mud-ui +63428=sei|unit-sei-ui +63427=quad|unit-quad-ui +63426=oct|unit-oct-ui +63425=vela|unit-vela-ui +63424=corvus|unit-corvus-ui +63423=memory-bank|block-memory-bank-ui +63422=foreshadow|block-foreshadow-ui +63421=tsunami|block-tsunami-ui +63420=space|block-space-ui +63419=legacy-unit-factory-air|block-legacy-unit-factory-air-ui +63418=legacy-unit-factory-ground|block-legacy-unit-factory-ground-ui +63417=interplanetary-accelerator|block-interplanetary-accelerator-ui +63416=basalt-boulder|block-basalt-boulder-ui +63415=none|status-none-ui +63414=burning|status-burning-ui +63413=freezing|status-freezing-ui +63412=unmoving|status-unmoving-ui +63411=slow|status-slow-ui +63410=wet|status-wet-ui +63409=muddy|status-muddy-ui +63408=melting|status-melting-ui +63407=sapped|status-sapped-ui +63406=spore-slowed|status-spore-slowed-ui +63405=tarred|status-tarred-ui +63404=overdrive|status-overdrive-ui +63403=overclock|status-overclock-ui +63402=shielded|status-shielded-ui +63401=boss|status-boss-ui +63400=shocked|status-shocked-ui +63399=blasted|status-blasted-ui +63398=corroded|status-corroded-ui +63397=disarmed|status-disarmed-ui +63385=duct|block-duct-ui +63376=repair-turret|block-repair-turret-ui +63375=payload-propulsion-tower|block-payload-propulsion-tower-ui +63374=payload-incinerator|block-payload-incinerator-ui +63373=payload-void|block-payload-void-ui +63372=payload-source|block-payload-source-ui +63368=retusa|unit-retusa-ui +63367=directional-item-bridge|block-directional-item-bridge-ui +63366=duct-router|block-duct-router-ui +63365=duct-bridge|block-duct-bridge-ui +63364=oxynoe|unit-oxynoe-ui +63363=cyerce|unit-cyerce-ui +63362=aegires|unit-aegires-ui +63361=electrified|status-electrified-ui +63360=navanax|unit-navanax-ui +63354=payload-launch-pad|block-payload-launch-pad-ui +63353=silicon-arc-furnace|block-silicon-arc-furnace-ui +63352=metal-floor-4|block-metal-floor-4-ui +63351=invincible|status-invincible-ui +63356=sharded|team-sharded +63357=crux|team-crux +63358=derelict|team-derelict +63350=deep-water|block-deep-water-ui +63348=molten-slag|block-molten-slag-ui +63347=crater-stone|block-crater-stone-ui +63346=deep-tainted-water|block-deep-tainted-water-ui +63345=pooled-cryofluid|block-pooled-cryofluid-ui diff --git a/core/assets/logicids.dat b/core/assets/logicids.dat index 07a91ab487..fd648e6292 100644 Binary files a/core/assets/logicids.dat and b/core/assets/logicids.dat differ diff --git a/core/assets/shaders/cryofluid.frag b/core/assets/shaders/cryofluid.frag new file mode 100644 index 0000000000..4299a0b8b1 --- /dev/null +++ b/core/assets/shaders/cryofluid.frag @@ -0,0 +1,35 @@ +#define HIGHP + +//shades of cryofluid +#define S1 vec3(53.0, 83.0, 93.0) / 100.0 +#define S2 vec3(68.0, 90.0, 97.0) / 100.0 +#define NSCALE 100.0 / 2.0 + +uniform sampler2D u_texture; +uniform sampler2D u_noise; + +uniform vec2 u_campos; +uniform vec2 u_resolution; +uniform float u_time; + +varying vec2 v_texCoords; + +const float shakeScl = 20.0; + +void main(){ + vec2 c = v_texCoords.xy; + vec2 coords = vec2(c.x * u_resolution.x + u_campos.x, c.y * u_resolution.y + u_campos.y); + + float btime = u_time / 5000.0; + float wave = abs(sin(coords.x * 1.1 + coords.y) + 0.1 * sin(2.5 * coords.x) + 0.15 * sin(3.0 * coords.y)) / 30.0; + float noise = wave + (texture2D(u_noise, (coords) / NSCALE + vec2(btime) * vec2(-0.2, 0.8)).r + texture2D(u_noise, (coords) / NSCALE + vec2(btime * 1.1) * vec2(0.8, -1.0)).r) / 2.0; + vec4 color = texture2D(u_texture, c); + + if(noise > 0.54 && noise < 0.57){ + color.rgb = S2; + }else if (noise > 0.49 && noise < 0.62){ + color.rgb = S1; + } + + gl_FragColor = color; +} diff --git a/core/src/mindustry/content/Blocks.java b/core/src/mindustry/content/Blocks.java index d944f433f0..295977b2ed 100644 --- a/core/src/mindustry/content/Blocks.java +++ b/core/src/mindustry/content/Blocks.java @@ -35,7 +35,7 @@ public class Blocks implements ContentList{ public static Block //environment - air, spawn, cliff, deepwater, water, taintedWater, deepTaintedWater, tar, slag, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space, + air, spawn, cliff, deepwater, water, taintedWater, deepTaintedWater, tar, slag, cryofluid, stone, craters, charr, sand, darksand, dirt, mud, ice, snow, darksandTaintedWater, space, dacite, stoneWall, dirtWall, sporeWall, iceWall, daciteWall, sporePine, snowPine, pine, shrubs, whiteTree, whiteTreeDead, sporeCluster, iceSnow, sandWater, darksandWater, duneWall, sandWall, moss, sporeMoss, shale, shaleWall, shaleBoulder, sandBoulder, daciteBoulder, boulder, snowBoulder, basaltBoulder, grass, salt, @@ -196,6 +196,22 @@ public class Blocks implements ContentList{ cacheLayer = CacheLayer.tar; }}; + cryofluid = new Floor("pooled-cryofluid"){{ + drownTime = 150f; + status = StatusEffects.freezing; + statusDuration = 240f; + speedMultiplier = 0.5f; + variants = 0; + liquidDrop = Liquids.cryofluid; + liquidMultiplier = 0.5f; + isLiquid = true; + cacheLayer = CacheLayer.cryofluid; + + emitLight = true; + lightRadius = 25f; + lightColor = Color.cyan.cpy().a(0.19f); + }}; + slag = new Floor("molten-slag"){{ drownTime = 150f; status = StatusEffects.melting; diff --git a/core/src/mindustry/content/Fx.java b/core/src/mindustry/content/Fx.java index dca9904588..9339df49ab 100644 --- a/core/src/mindustry/content/Fx.java +++ b/core/src/mindustry/content/Fx.java @@ -362,13 +362,13 @@ public class Fx{ Fill.circle(e.x, e.y, e.fin() * 10); Drawf.light(e.x, e.y, e.fin() * 20f, Pal.heal, 0.7f); - }).followParent(true), + }).followParent(true).rotWithParent(true), greenLaserChargeSmall = new Effect(40f, 100f, e -> { color(Pal.heal); stroke(e.fin() * 2f); Lines.circle(e.x, e.y, e.fout() * 50f); - }).followParent(true), + }).followParent(true).rotWithParent(true), greenCloud = new Effect(80f, e -> { color(Pal.heal); @@ -1943,7 +1943,7 @@ public class Fx{ } Lines.endLine(); - }).followParent(false), + }).followParent(false).rotWithParent(false), chainEmp = new Effect(30f, 300f, e -> { if(!(e.data instanceof Position p)) return; @@ -1980,5 +1980,5 @@ public class Fx{ } Lines.endLine(); - }).followParent(false); + }).followParent(false).rotWithParent(false); } diff --git a/core/src/mindustry/entities/Effect.java b/core/src/mindustry/entities/Effect.java index ba5def3822..4d298eb40f 100644 --- a/core/src/mindustry/entities/Effect.java +++ b/core/src/mindustry/entities/Effect.java @@ -30,8 +30,12 @@ public class Effect{ public float lifetime = 50f; /** Clip size. */ public float clip; + /** Amount added to rotation */ + public float baseRotation; /** If true, parent unit is data are followed. */ public boolean followParent; + /** If this and followParent are true, the effect will offset and rotate with the parent's rotation. */ + public boolean rotWithParent; public float layer = Layer.effect; public float layerDuration; @@ -61,11 +65,21 @@ public class Effect{ return this; } + public Effect rotWithParent(boolean follow){ + rotWithParent = follow; + return this; + } + public Effect layer(float l){ layer = l; return this; } + public Effect baseRotation(float d){ + baseRotation = d; + return this; + } + public Effect layer(float l, float duration){ layer = l; this.layerDuration = duration; @@ -156,12 +170,15 @@ public class Effect{ EffectState entity = EffectState.create(); entity.effect = effect; - entity.rotation = rotation; + entity.rotation = effect.baseRotation + rotation; entity.data = data; entity.lifetime = effect.lifetime; entity.set(x, y); entity.color.set(color); - if(effect.followParent && data instanceof Posc p) entity.parent = p; + if(effect.followParent && data instanceof Posc p){ + entity.parent = p; + entity.rotWithParent = effect.rotWithParent; + } entity.add(); } } diff --git a/core/src/mindustry/entities/comp/ChildComp.java b/core/src/mindustry/entities/comp/ChildComp.java index dae0c98814..f34a9198c9 100644 --- a/core/src/mindustry/entities/comp/ChildComp.java +++ b/core/src/mindustry/entities/comp/ChildComp.java @@ -1,29 +1,41 @@ package mindustry.entities.comp; +import arc.math.*; import arc.util.*; import mindustry.annotations.Annotations.*; import mindustry.gen.*; @Component -abstract class ChildComp implements Posc{ - @Import float x, y; +abstract class ChildComp implements Posc, Rotc{ + @Import float x, y, rotation; @Nullable Posc parent; - float offsetX, offsetY; + boolean rotWithParent; + float offsetX, offsetY, offsetPos, offsetRot; @Override public void add(){ if(parent != null){ offsetX = x - parent.getX(); offsetY = y - parent.getY(); + if(rotWithParent && parent instanceof Rotc r){ + offsetPos = -r.rotation(); + offsetRot = rotation - r.rotation(); + } } } @Override public void update(){ if(parent != null){ - x = parent.getX() + offsetX; - y = parent.getY() + offsetY; + if(rotWithParent && parent instanceof Rotc r){ + x = parent.getX() + Angles.trnsx(r.rotation() + offsetPos, offsetX, offsetY); + y = parent.getY() + Angles.trnsy(r.rotation() + offsetPos, offsetX, offsetY); + rotation = r.rotation() + offsetRot; + }else{ + x = parent.getX() + offsetX; + y = parent.getY() + offsetY; + } } } } diff --git a/core/src/mindustry/graphics/CacheLayer.java b/core/src/mindustry/graphics/CacheLayer.java index a68b7f6e06..3921612853 100644 --- a/core/src/mindustry/graphics/CacheLayer.java +++ b/core/src/mindustry/graphics/CacheLayer.java @@ -10,7 +10,7 @@ import static mindustry.Vars.*; public class CacheLayer{ public static CacheLayer - water, mud, tar, slag, space, normal, walls; + water, mud, cryofluid, tar, slag, space, normal, walls; public static CacheLayer[] all = {}; @@ -37,6 +37,7 @@ public class CacheLayer{ mud = new ShaderLayer(Shaders.mud), tar = new ShaderLayer(Shaders.tar), slag = new ShaderLayer(Shaders.slag), + cryofluid = new ShaderLayer(Shaders.cryofluid), space = new ShaderLayer(Shaders.space), normal = new CacheLayer(), walls = new CacheLayer() diff --git a/core/src/mindustry/graphics/Shaders.java b/core/src/mindustry/graphics/Shaders.java index 7ea78a2549..33026d6fe1 100644 --- a/core/src/mindustry/graphics/Shaders.java +++ b/core/src/mindustry/graphics/Shaders.java @@ -21,7 +21,7 @@ public class Shaders{ public static UnitBuildShader build; public static DarknessShader darkness; public static LightShader light; - public static SurfaceShader water, mud, tar, slag, space, caustics; + public static SurfaceShader water, mud, tar, slag, cryofluid, space, caustics; public static PlanetShader planet; public static PlanetGridShader planetGrid; public static AtmosphereShader atmosphere; @@ -47,6 +47,7 @@ public class Shaders{ mud = new SurfaceShader("mud"); tar = new SurfaceShader("tar"); slag = new SurfaceShader("slag"); + cryofluid = new SurfaceShader("cryofluid"); space = new SpaceShader("space"); //caustics = new SurfaceShader("caustics"){ // @Override diff --git a/tools/build.gradle b/tools/build.gradle index c9985b1612..781c80e821 100644 --- a/tools/build.gradle +++ b/tools/build.gradle @@ -17,7 +17,7 @@ def doAntialias = !project.hasProperty("disableAntialias") def colorMap = new IntMap>(), colorIndexMap = new IntIntMap() //on my machine, I have a native Nim AA implementation that is ~10x faster //it's not compiled for other platforms so they don't get it -def useFastAA = System.getProperty("user.name") == "anuke" +def useFastAA = project.hasProperty("fastAA") || System.getProperty("user.name") == "anuke" def transformColors = { List> list -> list.each{ colors -> @@ -281,4 +281,4 @@ task updateScripts(dependsOn: classes, type: JavaExec){ classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = "../" -} \ No newline at end of file +}