Files
Mindustry/core/src/mindustry/entities/units/WeaponMount.java
MEEPofFaith 2d6e1cdf65 PointLaserBulletType support for Weapons (#9331)
* PointLaserBulletType support for Weapons

I hate adding more fields to Weapon, but oh well. It's the price to pay when the behavior of what should be spread across multiple classes is compacted into a single class.

* Fix several problems
2023-12-01 20:50:32 -05:00

59 lines
1.9 KiB
Java

package mindustry.entities.units;
import arc.util.*;
import mindustry.audio.*;
import mindustry.gen.*;
import mindustry.type.*;
public class WeaponMount{
/** weapon associated with this mount */
public final Weapon weapon;
/** reload in frames; 0 means ready to fire */
public float reload;
/** rotation relative to the unit this mount is on */
public float rotation;
/** weapon recoil */
public float recoil;
/** weapon barrel recoil */
public @Nullable float[] recoils;
/** destination rotation; do not modify! */
public float targetRotation;
/** current heat, 0 to 1*/
public float heat;
/** lerps to 1 when shooting, 0 when not */
public float warmup;
/** is the weapon actively charging */
public boolean charging;
/** counts up to 1 when charging, 0 when not */
public float charge;
/** lerps to reload time */
public float smoothReload;
/** aiming position in world coordinates */
public float aimX, aimY;
/** whether to shoot right now */
public boolean shoot = false;
/** whether to rotate to face the target right now */
public boolean rotate = false;
/** extra state for alternating weapons */
public boolean side;
/** total bullets fired from this mount */
public int totalShots;
/** counter for which barrel bullets have been fired from; used for alternating patterns */
public int barrelCounter;
/** Last aim length of weapon. Only used for point lasers. */
public float lastLength;
/** current bullet for continuous weapons */
public @Nullable Bullet bullet;
/** sound loop for continuous weapons */
public @Nullable SoundLoop sound;
/** current target; used for autonomous weapons and AI */
public @Nullable Teamc target;
/** retarget counter */
public float retarget = 0f;
public WeaponMount(Weapon weapon){
this.weapon = weapon;
this.rotation = weapon.baseRotation;
}
}