添加各种兜底空值判断

This commit is contained in:
Light_Quanta 2025-05-24 02:36:15 +08:00
parent aba336eb43
commit 14b22a2efd
No known key found for this signature in database
GPG key ID: 11A39A1B8C890959
2 changed files with 19 additions and 3 deletions

View file

@ -71,7 +71,13 @@ public class GunData {
perk = new Perks(this);
ammo = new IntValue(data, "Ammo");
fireMode = new StringEnumValue<>(data, "FireMode", defaultGunData().defaultFireMode, FireMode::fromValue);
var defaultFireMode = defaultGunData().defaultFireMode;
if (defaultFireMode == null) {
defaultFireMode = FireMode.SEMI;
}
fireMode = new StringEnumValue<>(data, "FireMode", defaultFireMode, FireMode::fromValue);
level = new IntValue(data, "Level");
exp = new DoubleValue(data, "Exp");
upgradePoint = new DoubleValue(data, "UpgradePoint");
@ -203,7 +209,10 @@ public class GunData {
}
public ProjectileInfo projectileInfo() {
return defaultGunData().projectile;
var info = defaultGunData().projectile;
if (info == null) return new ProjectileInfo();
return info;
}
public String projectileType() {
@ -227,6 +236,8 @@ public class GunData {
}
public Set<ReloadType> reloadTypes() {
if (defaultGunData().reloadTypes == null) return Set.of();
return defaultGunData().reloadTypes;
}
@ -356,7 +367,7 @@ public class GunData {
public AmmoTypeInfo ammoTypeInfo() {
var ammoType = defaultGunData().ammoType;
if (ammoType.isEmpty()) {
if (ammoType == null || ammoType.isEmpty()) {
return new AmmoTypeInfo(AmmoConsumeType.INVALID, "");
}
@ -542,6 +553,8 @@ public class GunData {
}
public Set<FireMode> getAvailableFireModes() {
if (defaultGunData().availableFireModes == null) return Set.of();
return defaultGunData().availableFireModes;
}

View file

@ -142,6 +142,9 @@ public class DamageModify {
* @return 计算后的伤害值
*/
public float compute(float damage) {
// 类型出错默认视为免疫
if (type == null) return 0;
return switch (type) {
case IMMUNITY -> 0;
case REDUCE -> Math.max(damage - value, 0);