优化代码
This commit is contained in:
parent
31c51b48de
commit
1336c66699
1 changed files with 24 additions and 16 deletions
|
@ -255,6 +255,15 @@ public class GunEventHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static double perkDamage(ItemStack stack) {
|
||||||
|
var data = GunData.from(stack);
|
||||||
|
var perk = data.perk.get(Perk.Type.AMMO);
|
||||||
|
if (perk instanceof AmmoPerk ammoPerk) {
|
||||||
|
return ammoPerk.damageRate;
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
public static double perkSpeed(GunData data) {
|
public static double perkSpeed(GunData data) {
|
||||||
var perk = data.perk.get(Perk.Type.AMMO);
|
var perk = data.perk.get(Perk.Type.AMMO);
|
||||||
if (perk instanceof AmmoPerk ammoPerk) {
|
if (perk instanceof AmmoPerk ammoPerk) {
|
||||||
|
@ -266,28 +275,27 @@ public class GunEventHandler {
|
||||||
/**
|
/**
|
||||||
* 通用的武器换弹流程
|
* 通用的武器换弹流程
|
||||||
*/
|
*/
|
||||||
private static void handleGunReload(Player player, GunData gun) {
|
private static void handleGunReload(Player player, GunData data) {
|
||||||
var data = GunData.from(gun.stack);
|
var stack = data.stack();
|
||||||
var stack = gun.stack();
|
var gunItem = data.item();
|
||||||
var gunItem = gun.item();
|
var reload = data.reload;
|
||||||
var reload = gun.reload;
|
|
||||||
|
|
||||||
// 启动换弹
|
// 启动换弹
|
||||||
if (reload.reloadStarter.start()) {
|
if (reload.reloadStarter.start()) {
|
||||||
NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack));
|
NeoForge.EVENT_BUS.post(new ReloadEvent.Pre(player, stack));
|
||||||
|
|
||||||
if (gunItem.isOpenBolt(stack)) {
|
if (gunItem.isOpenBolt(stack)) {
|
||||||
if (gun.ammo.get() == 0) {
|
if (data.ammo.get() == 0) {
|
||||||
reload.setTime(gun.defaultEmptyReloadTime() + 1);
|
reload.setTime(data.defaultEmptyReloadTime() + 1);
|
||||||
reload.setState(ReloadState.EMPTY_RELOADING);
|
reload.setState(ReloadState.EMPTY_RELOADING);
|
||||||
playGunEmptyReloadSounds(player);
|
playGunEmptyReloadSounds(player);
|
||||||
} else {
|
} else {
|
||||||
reload.setTime(gun.defaultNormalReloadTime() + 1);
|
reload.setTime(data.defaultNormalReloadTime() + 1);
|
||||||
reload.setState(ReloadState.NORMAL_RELOADING);
|
reload.setState(ReloadState.NORMAL_RELOADING);
|
||||||
playGunNormalReloadSounds(player);
|
playGunNormalReloadSounds(player);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
reload.setTime(gun.defaultEmptyReloadTime() + 2);
|
reload.setTime(data.defaultEmptyReloadTime() + 2);
|
||||||
reload.setState(ReloadState.EMPTY_RELOADING);
|
reload.setState(ReloadState.EMPTY_RELOADING);
|
||||||
playGunEmptyReloadSounds(player);
|
playGunEmptyReloadSounds(player);
|
||||||
}
|
}
|
||||||
|
@ -298,21 +306,21 @@ public class GunEventHandler {
|
||||||
// 换弹时额外行为
|
// 换弹时额外行为
|
||||||
var behavior = gunItem.reloadTimeBehaviors.get(reload.time());
|
var behavior = gunItem.reloadTimeBehaviors.get(reload.time());
|
||||||
if (behavior != null) {
|
if (behavior != null) {
|
||||||
behavior.accept(gun);
|
behavior.accept(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (reload.time() == 1) {
|
if (reload.time() == 1) {
|
||||||
if (gunItem.isOpenBolt(stack)) {
|
if (gunItem.isOpenBolt(stack)) {
|
||||||
if (gun.ammo.get() == 0) {
|
if (data.ammo.get() == 0) {
|
||||||
playGunEmptyReload(player, gun);
|
playGunEmptyReload(player, data);
|
||||||
} else {
|
} else {
|
||||||
playGunNormalReload(player, gun);
|
playGunNormalReload(player, data);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
playGunEmptyReload(player, gun);
|
playGunEmptyReload(player, data);
|
||||||
}
|
}
|
||||||
data.reload.setTime(0);
|
reload.setTime(0);
|
||||||
data.reload.setState(ReloadState.NOT_RELOADING);
|
reload.setState(ReloadState.NOT_RELOADING);
|
||||||
|
|
||||||
reload.reloadStarter.finish();
|
reload.reloadStarter.finish();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue