添加各种兜底空值判断

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

View file

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