Mining beam weapon
This commit is contained in:
66
core/src/mindustry/type/weapons/MineWeapon.java
Normal file
66
core/src/mindustry/type/weapons/MineWeapon.java
Normal file
@@ -0,0 +1,66 @@
|
||||
package mindustry.type.weapons;
|
||||
|
||||
import arc.graphics.g2d.*;
|
||||
import arc.math.*;
|
||||
import arc.util.*;
|
||||
import mindustry.entities.bullet.*;
|
||||
import mindustry.entities.units.*;
|
||||
import mindustry.gen.*;
|
||||
import mindustry.type.*;
|
||||
|
||||
public class MineWeapon extends Weapon{
|
||||
public MineWeapon(){
|
||||
super();
|
||||
}
|
||||
|
||||
public MineWeapon(String name){
|
||||
super(name);
|
||||
}
|
||||
|
||||
{
|
||||
rotate = true;
|
||||
noAttack = true;
|
||||
predictTarget = false;
|
||||
display = false;
|
||||
bullet = new BulletType();
|
||||
useAttackRange = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(Unit unit, WeaponMount mount){
|
||||
mount.shoot = false;
|
||||
mount.rotate = true;
|
||||
|
||||
//always aim at build plan
|
||||
if(unit.mining()){
|
||||
mount.aimX = unit.mineTile().drawx();
|
||||
mount.aimY = unit.mineTile().drawy();
|
||||
}else{
|
||||
//aim for front
|
||||
float weaponRotation = unit.rotation - 90 + baseRotation;
|
||||
mount.aimX = unit.x + Angles.trnsx(unit.rotation - 90, x, y) + Angles.trnsx(weaponRotation, this.shootX, this.shootY);
|
||||
mount.aimY = unit.y + Angles.trnsy(unit.rotation - 90, x, y) + Angles.trnsy(weaponRotation, this.shootX, this.shootY);
|
||||
}
|
||||
|
||||
super.update(unit, mount);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Unit unit, WeaponMount mount){
|
||||
super.draw(unit, mount);
|
||||
|
||||
if(unit.mining()){
|
||||
float
|
||||
z = Draw.z(),
|
||||
rotation = unit.rotation - 90,
|
||||
weaponRotation = rotation + (rotate ? mount.rotation : 0),
|
||||
wx = unit.x + Angles.trnsx(rotation, x, y) + Angles.trnsx(weaponRotation, 0, -mount.recoil),
|
||||
wy = unit.y + Angles.trnsy(rotation, x, y) + Angles.trnsy(weaponRotation, 0, -mount.recoil),
|
||||
px = wx + Angles.trnsx(weaponRotation, shootX, shootY),
|
||||
py = wy + Angles.trnsy(weaponRotation, shootX, shootY);
|
||||
|
||||
unit.drawMiningBeam(px, py);
|
||||
Draw.z(z);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user