Omega mech implementation

This commit is contained in:
Anuken
2018-08-21 22:40:39 -04:00
parent 3bf72a1af6
commit e1f7c7b03d
21 changed files with 650 additions and 591 deletions
@@ -50,12 +50,12 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
private static final float liftoffBoost = 0.2f;
//region instance variables, constructor
public float baseRotation;
public float baseRotation;
public float pointerX, pointerY;
public String name = "name";
public String uuid, usid;
public boolean isAdmin, isTransferring, isShooting, isBoosting, isMobile;
public boolean isAdmin, isTransferring, isShooting, isBoosting, isAlt, isMobile;
public float boostHeat;
public boolean achievedFlight;
public Color color = new Color();
@@ -300,7 +300,7 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
Draw.rect(mech.legRegion,
x + Angles.trnsx(baseRotation, ft * i + boostTrnsY, -boostTrnsX * i),
y + Angles.trnsy(baseRotation, ft * i + boostTrnsY, -boostTrnsX * i),
12f * i, 12f - Mathf.clamp(ft * i, 0, 2), baseRotation - 90 + boostAng * i);
mech.legRegion.getRegionWidth() * i, mech.legRegion.getRegionHeight() - Mathf.clamp(ft * i, 0, 2), baseRotation - 90 + boostAng * i);
}
Draw.rect(mech.baseRegion, x, y, baseRotation - 90);
@@ -316,10 +316,10 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
for(int i : Mathf.signs){
float tra = rotation - 90, trY = -mech.weapon.getRecoil(this, i > 0) + mech.weaponOffsetY;
float w = i > 0 ? -12 : 12;
float w = i > 0 ? -mech.weapon.equipRegion.getRegionWidth() : mech.weapon.equipRegion.getRegionWidth();
Draw.rect(mech.weapon.equipRegion,
x + Angles.trnsx(tra, mech.weaponOffsetX * i, trY),
y + Angles.trnsy(tra, mech.weaponOffsetX * i, trY), w, 12, rotation - 90);
y + Angles.trnsy(tra, mech.weaponOffsetX * i, trY), w, mech.weapon.equipRegion.getRegionHeight(), rotation - 90);
}
float backTrns = 4f, itemSize = 5f;
@@ -496,11 +496,17 @@ public class Player extends Unit implements BuilderTrait, CarryTrait, ShooterTra
}
if(boostHeat <= liftoffBoost + 0.05f && achievedFlight){
if(tile != null) Effects.effect(UnitFx.unitLand, tile.floor().minimapColor, x, y, tile.floor().isLiquid ? 1f : 0.5f);
if(tile != null){
if(mech.shake > 1f){
Effects.shake(mech.shake, mech.shake, this);
}
Effects.effect(UnitFx.unitLand, tile.floor().minimapColor, x, y, tile.floor().isLiquid ? 1f : 0.5f);
}
achievedFlight = false;
}
isBoosting = Inputs.keyDown("dash") && !mech.flying;
isAlt = Inputs.keyDown("ability") && !mech.flying;
//if player is in solid block
if(tile != null && tile.solid()){
@@ -3,8 +3,8 @@ package io.anuke.mindustry.entities.bullet;
import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import io.anuke.mindustry.entities.Damage;
import io.anuke.mindustry.entities.Unit;
import io.anuke.mindustry.entities.Units;
import io.anuke.mindustry.entities.traits.TargetTrait;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
@@ -70,7 +70,7 @@ public class BasicBulletType extends BulletType{
super.update(b);
if(homingPower > 0.0001f){
Unit target = Units.getClosestEnemy(b.getTeam(), b.x, b.y, homingRange, unit -> true);
TargetTrait target = Units.getClosestTarget(b.getTeam(), b.x, b.y, homingRange);
if(target != null){
b.getVelocity().setAngle(Angles.moveToward(b.getVelocity().angle(), b.angleTo(target), homingPower * Timers.delta()));
}
@@ -1,10 +1,14 @@
package io.anuke.mindustry.entities.bullet;
import com.badlogic.gdx.graphics.Color;
import io.anuke.mindustry.content.fx.BulletFx;
import io.anuke.mindustry.graphics.Palette;
import io.anuke.ucore.core.Effects;
import io.anuke.ucore.core.Timers;
import io.anuke.ucore.util.Mathf;
public class MissileBulletType extends BasicBulletType{
protected Color trailColor = Palette.missileYellowBack;
public MissileBulletType(float speed, float damage, String bulletSprite){
super(speed, damage, bulletSprite);
@@ -17,8 +21,8 @@ public class MissileBulletType extends BasicBulletType{
public void update(Bullet b){
super.update(b);
if(b.timer.get(0, 4f)){
Effects.effect(BulletFx.missileTrail, b.x, b.y, 2f);
if(Mathf.chance(Timers.delta() * 0.2)){
Effects.effect(BulletFx.missileTrail, trailColor, b.x, b.y, 2f);
}
}
}