Merge branch 'master' of https://github.com/Anuken/Mindustry into 7.0-features

This commit is contained in:
Anuken
2021-09-16 10:23:31 -04:00
12 changed files with 43 additions and 22 deletions
+4
View File
@@ -162,3 +162,7 @@ gradle-app.setting
.DS_Store
Thumbs.db
android/libs/
# ignored due to frequent branch conflicts.
core/assets/logicids.dat
core/assets/icons/icons.properties
+10 -5
View File
@@ -15,11 +15,16 @@ const float shinefalloff = 4.0;
const float shinelen = 0.2;
void main(){
vec3 norc = u_ambientColor * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0)));
float shinedot = max((-dot(u_camdir, a_normal) - (1.0 - shinelen)) / shinelen, 0.0);
float albedo = (1.0 - a_color.a) * pow(shinedot, shinefalloff);
vec4 baseCol = vec4(a_color.rgb, 1.0);
vec3 specular = vec3(0, 0, 0);
v_col = mix(baseCol * vec4(norc, 1.0), vec4(1.0), albedo * norc.r);
vec3 lightReflect = normalize(reflect(a_normal, u_lightdir));
float specularFactor = dot(u_camdir, lightReflect);
if(specularFactor > 0){
specular = vec3(1.0f * pow(specularFactor, 32f)) * (1f-a_color.a); //specular power = 32
}
vec3 norc = (u_ambientColor + specular) * (diffuse + vec3(clamp((dot(a_normal, u_lightdir) + 1.0) / 2.0, 0.0, 1.0)));
v_col = vec4(a_color.rgb, 1.0) * vec4(norc, 1.0);
gl_Position = u_proj * u_trans * a_position;
}
+10 -8
View File
@@ -141,7 +141,7 @@ public class Blocks implements ContentList{
statusDuration = 120f;
drownTime = 200f;
cacheLayer = CacheLayer.water;
albedo = 0.5f;
albedo = 0.9f;
}};
water = new Floor("shallow-water"){{
@@ -152,7 +152,7 @@ public class Blocks implements ContentList{
liquidDrop = Liquids.water;
isLiquid = true;
cacheLayer = CacheLayer.water;
albedo = 0.5f;
albedo = 0.9f;
}};
taintedWater = new Floor("tainted-water"){{
@@ -163,7 +163,7 @@ public class Blocks implements ContentList{
liquidDrop = Liquids.water;
isLiquid = true;
cacheLayer = CacheLayer.water;
albedo = 0.5f;
albedo = 0.9f;
attributes.set(Attribute.spores, 0.15f);
}};
@@ -176,27 +176,27 @@ public class Blocks implements ContentList{
liquidDrop = Liquids.water;
isLiquid = true;
cacheLayer = CacheLayer.water;
albedo = 0.5f;
albedo = 0.9f;
attributes.set(Attribute.spores, 0.15f);
}};
darksandTaintedWater = new ShallowLiquid("darksand-tainted-water"){{
speedMultiplier = 0.75f;
statusDuration = 60f;
albedo = 0.5f;
albedo = 0.9f;
attributes.set(Attribute.spores, 0.1f);
}};
sandWater = new ShallowLiquid("sand-water"){{
speedMultiplier = 0.8f;
statusDuration = 50f;
albedo = 0.5f;
albedo = 0.9f;
}};
darksandWater = new ShallowLiquid("darksand-water"){{
speedMultiplier = 0.8f;
statusDuration = 50f;
albedo = 0.5f;
albedo = 0.9f;
}};
tar = new Floor("tar"){{
@@ -289,7 +289,6 @@ public class Blocks implements ContentList{
statusDuration = 30f;
attributes.set(Attribute.water, 1f);
cacheLayer = CacheLayer.mud;
albedo = 0.35f;
walkSound = Sounds.mud;
walkSoundVolume = 0.08f;
walkSoundPitchMin = 0.4f;
@@ -361,18 +360,21 @@ public class Blocks implements ContentList{
snow = new Floor("snow"){{
attributes.set(Attribute.water, 0.2f);
albedo = 0.7f;
}};
ice = new Floor("ice"){{
dragMultiplier = 0.35f;
speedMultiplier = 0.9f;
attributes.set(Attribute.water, 0.4f);
albedo = 0.65f;
}};
iceSnow = new Floor("ice-snow"){{
dragMultiplier = 0.6f;
variants = 3;
attributes.set(Attribute.water, 0.3f);
albedo = 0.6f;
}};
shale = new Floor("shale"){{
+1 -1
View File
@@ -1910,7 +1910,7 @@ public class Fx{
color(e.color);
stroke(3f * e.fout());
Lines.poly(e.x, e.y, 6, e.rotation + e.fin());
}),
}).followParent(true),
coreLandDust = new Effect(100f, e -> {
color(e.color, e.fout(0.1f));
+4
View File
@@ -76,6 +76,10 @@ public class Effect{
create(this, pos.getX(), pos.getY(), 0, Color.white, null);
}
public void at(Position pos, boolean parentize){
create(this, pos.getX(), pos.getY(), 0, Color.white, parentize ? pos : null);
}
public void at(Position pos, float rotation){
create(this, pos.getX(), pos.getY(), rotation, Color.white, null);
}
@@ -38,7 +38,7 @@ public class ForceFieldAbility extends Ability{
if(paramUnit.shield <= trait.damage()){
paramUnit.shield -= paramField.cooldown * paramField.regen;
Fx.shieldBreak.at(paramUnit.x, paramUnit.y, paramField.radius, paramUnit.team.color);
Fx.shieldBreak.at(paramUnit.x, paramUnit.y, paramField.radius, paramUnit.team.color, paramUnit);
}
paramUnit.shield -= trait.damage();
@@ -34,6 +34,7 @@ public class MoveLightningAbility extends Ability{
public float bulletAngle = 0f, bulletSpread = 0f;
public Effect shootEffect = Fx.sparkShoot;
public boolean parentizeEffects;
public Sound shootSound = Sounds.spark;
protected float side = 1f;
@@ -67,7 +68,7 @@ public class MoveLightningAbility extends Ability{
if(Mathf.chance(Time.delta * chance * scl)){
float x = unit.x + Angles.trnsx(unit.rotation, offset, width * side), y = unit.y + Angles.trnsy(unit.rotation, offset, width * side);
shootEffect.at(x, y, unit.rotation, color);
shootEffect.at(x, y, unit.rotation, color, parentizeEffects ? unit : null);
shootSound.at(unit);
if(length > 0){
@@ -9,6 +9,7 @@ public class RepairFieldAbility extends Ability{
public float amount = 1, reload = 100, range = 60;
public Effect healEffect = Fx.heal;
public Effect activeEffect = Fx.healWaveDynamic;
public boolean parentizeEffects = false;
protected float timer;
protected boolean wasHealed = false;
@@ -30,7 +31,7 @@ public class RepairFieldAbility extends Ability{
Units.nearby(unit.team, unit.x, unit.y, range, other -> {
if(other.damaged()){
healEffect.at(other);
healEffect.at(other, parentizeEffects);
wasHealed = true;
}
other.heal(amount);
@@ -9,6 +9,7 @@ public class ShieldRegenFieldAbility extends Ability{
public float amount = 1, max = 100f, reload = 100, range = 60;
public Effect applyEffect = Fx.shieldApply;
public Effect activeEffect = Fx.shieldWave;
public boolean parentizeEffects;
protected float timer;
protected boolean applied = false;
@@ -33,7 +34,7 @@ public class ShieldRegenFieldAbility extends Ability{
if(other.shield < max){
other.shield = Math.max(other.shield + amount, max);
other.shieldAlpha = 1f; //TODO may not be necessary
applyEffect.at(unit.x, unit.y, unit.team.color);
applyEffect.at(unit.x, unit.y, 0f, unit.team.color, parentizeEffects ? other : null);
applied = true;
}
});
@@ -10,8 +10,9 @@ import mindustry.type.*;
public class StatusFieldAbility extends Ability{
public StatusEffect effect;
public float duration = 60, reload = 100, range = 20;
public Effect applyEffect = Fx.heal;
public Effect applyEffect = Fx.none;
public Effect activeEffect = Fx.overdriveWave;
public boolean parentizeEffects;
protected float timer;
@@ -36,9 +37,10 @@ public class StatusFieldAbility extends Ability{
if(timer >= reload){
Units.nearby(unit.team, unit.x, unit.y, range, other -> {
other.apply(effect, duration);
applyEffect.at(other, parentizeEffects);
});
activeEffect.at(unit);
activeEffect.at(unit, parentizeEffects);
timer = 0f;
}
@@ -18,6 +18,7 @@ public class UnitSpawnAbility extends Ability{
public UnitType unit;
public float spawnTime = 60f, spawnX, spawnY;
public Effect spawnEffect = Fx.spawn;
public boolean parentizeEffects;
protected float timer;
@@ -37,7 +38,7 @@ public class UnitSpawnAbility extends Ability{
if(timer >= spawnTime && Units.canCreate(unit.team, this.unit)){
float x = unit.x + Angles.trnsx(unit.rotation, spawnY, spawnX), y = unit.y + Angles.trnsy(unit.rotation, spawnY, spawnX);
spawnEffect.at(x, y);
spawnEffect.at(x, y, 0f, parentizeEffects ? unit : null);
Unit u = this.unit.create(unit.team);
u.set(x, y);
u.rotation = unit.rotation;
+1 -1
View File
@@ -11,4 +11,4 @@ android.useAndroidX=true
#used for slow jitpack builds; TODO see if this actually works
http.socketTimeout=80000
http.connectionTimeout=80000
archash=43f8f93e80779f91fad622acfae70cdc300edecf
archash=e2eead82168c1a143e345bc5f78e2d72078f4657