Refactor BanishInfo - make it a record

This commit is contained in:
P0nk
2024-07-17 18:11:50 +02:00
parent 402163c33d
commit 2324ae7f9e
9 changed files with 29 additions and 39 deletions

View File

@@ -116,6 +116,7 @@ import server.events.Events;
import server.events.RescueGaga; import server.events.RescueGaga;
import server.events.gm.Fitness; import server.events.gm.Fitness;
import server.events.gm.Ola; import server.events.gm.Ola;
import server.life.BanishInfo;
import server.life.MobSkill; import server.life.MobSkill;
import server.life.MobSkillFactory; import server.life.MobSkillFactory;
import server.life.MobSkillId; import server.life.MobSkillId;
@@ -1353,13 +1354,13 @@ public class Character extends AbstractCharacterObject {
} }
} }
public void changeMapBanish(int mapid, String portal, String msg) { public void changeMapBanish(BanishInfo banishInfo) {
if (msg != null) { if (banishInfo.msg() != null) {
dropMessage(5, msg); dropMessage(5, banishInfo.msg());
} }
MapleMap map_ = getWarpMap(mapid); MapleMap map_ = getWarpMap(mapid);
Portal portal_ = map_.getPortal(portal); Portal portal_ = map_.getPortal(banishInfo.portal());
changeMap(map_, portal_ != null ? portal_ : map_.getRandomPlayerSpawnpoint()); changeMap(map_, portal_ != null ? portal_ : map_.getRandomPlayerSpawnpoint());
} }

View File

@@ -23,7 +23,7 @@ import client.Character;
import client.Client; import client.Client;
import net.AbstractPacketHandler; import net.AbstractPacketHandler;
import net.packet.InPacket; import net.packet.InPacket;
import server.life.LifeFactory.BanishInfo; import server.life.BanishInfo;
import server.life.Monster; import server.life.Monster;
public final class MobBanishPlayerHandler extends AbstractPacketHandler { public final class MobBanishPlayerHandler extends AbstractPacketHandler {
@@ -39,8 +39,9 @@ public final class MobBanishPlayerHandler extends AbstractPacketHandler {
} }
BanishInfo banishInfo = mob.getBanish(); BanishInfo banishInfo = mob.getBanish();
if (banishInfo != null) { if (banishInfo == null) {
chr.changeMapBanish(banishInfo.getMap(), banishInfo.getPortal(), banishInfo.getMsg()); return;
} }
chr.changeMapBanish(banishInfo);
} }
} }

View File

@@ -173,7 +173,7 @@ public final class MoveLifeHandler extends AbstractMovementPacketHandler {
if (banishPlayers != null) { if (banishPlayers != null) {
for (Character chr : banishPlayers) { for (Character chr : banishPlayers) {
chr.changeMapBanish(monster.getBanish().getMap(), monster.getBanish().getPortal(), monster.getBanish().getMsg()); chr.changeMapBanish(monster.getBanish());
} }
} }
} }

View File

@@ -289,7 +289,7 @@ public final class TakeDamageHandler extends AbstractPacketHandler {
} }
for (Character player : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :) for (Character player : banishPlayers) { // chill, if this list ever gets non-empty an attacker does exist, trust me :)
player.changeMapBanish(attacker.getBanish().getMap(), attacker.getBanish().getPortal(), attacker.getBanish().getMsg()); player.changeMapBanish(attacker.getBanish());
} }
} }
} }

View File

@@ -0,0 +1,9 @@
package server.life;
import java.util.Objects;
public record BanishInfo(int map, String portal, String msg) {
public BanishInfo {
Objects.requireNonNull(portal, "BanishInfo portal");
}
}

View File

@@ -231,7 +231,10 @@ public class LifeFactory {
Data banishData = monsterInfoData.getChildByPath("ban"); Data banishData = monsterInfoData.getChildByPath("ban");
if (banishData != null) { if (banishData != null) {
stats.setBanishInfo(new BanishInfo(DataTool.getString("banMsg", banishData), DataTool.getInt("banMap/0/field", banishData, -1), DataTool.getString("banMap/0/portal", banishData, "sp"))); int map = DataTool.getInt("banMap/0/field", banishData, -1);
String portal = DataTool.getString("banMap/0/portal", banishData, "sp");
String msg = DataTool.getString("banMsg", banishData);
stats.setBanishInfo(new BanishInfo(map, portal, msg));
} }
int noFlip = DataTool.getInt("noFlip", monsterInfoData, 0); int noFlip = DataTool.getInt("noFlip", monsterInfoData, 0);
@@ -296,31 +299,6 @@ public class LifeFactory {
return DataTool.getString(nid + "/d0", npcStringData, "(...)"); return DataTool.getString(nid + "/d0", npcStringData, "(...)");
} }
public static class BanishInfo {
private final int map;
private final String portal;
private final String msg;
public BanishInfo(String msg, int map, String portal) {
this.msg = msg;
this.map = map;
this.portal = portal;
}
public int getMap() {
return map;
}
public String getPortal() {
return portal;
}
public String getMsg() {
return msg;
}
}
public static class loseItem { public static class loseItem {
private final int id; private final int id;

View File

@@ -56,7 +56,6 @@ import org.slf4j.LoggerFactory;
import scripting.event.EventInstanceManager; import scripting.event.EventInstanceManager;
import server.StatEffect; import server.StatEffect;
import server.TimerManager; import server.TimerManager;
import server.life.LifeFactory.BanishInfo;
import server.loot.LootManager; import server.loot.LootManager;
import server.maps.AbstractAnimatedMapObject; import server.maps.AbstractAnimatedMapObject;
import server.maps.MapObjectType; import server.maps.MapObjectType;

View File

@@ -21,7 +21,6 @@
*/ */
package server.life; package server.life;
import server.life.LifeFactory.BanishInfo;
import server.life.LifeFactory.loseItem; import server.life.LifeFactory.loseItem;
import server.life.LifeFactory.selfDestruction; import server.life.LifeFactory.selfDestruction;
import tools.Pair; import tools.Pair;

View File

@@ -8,9 +8,9 @@ import provider.DataProviderFactory;
import provider.DataTool; import provider.DataTool;
import provider.wz.DataType; import provider.wz.DataType;
import provider.wz.WZFiles; import provider.wz.WZFiles;
import server.life.BanishInfo;
import server.life.Element; import server.life.Element;
import server.life.ElementalEffectiveness; import server.life.ElementalEffectiveness;
import server.life.LifeFactory.BanishInfo;
import server.life.LifeFactory.loseItem; import server.life.LifeFactory.loseItem;
import server.life.LifeFactory.selfDestruction; import server.life.LifeFactory.selfDestruction;
import server.life.MobSkillId; import server.life.MobSkillId;
@@ -134,7 +134,10 @@ public class MonsterStatFetcher {
} }
Data banishData = monsterInfoData.getChildByPath("ban"); Data banishData = monsterInfoData.getChildByPath("ban");
if (banishData != null) { if (banishData != null) {
stats.setBanishInfo(new BanishInfo(DataTool.getString("banMsg", banishData), DataTool.getInt("banMap/0/field", banishData, -1), DataTool.getString("banMap/0/portal", banishData, "sp"))); int map = DataTool.getInt("banMap/0/field", banishData, -1);
String portal = DataTool.getString("banMap/0/portal", banishData, "sp");
String msg = DataTool.getString("banMsg", banishData);
stats.setBanishInfo(new BanishInfo(map, portal, msg));
} }
monsterStats.put(mid, stats); monsterStats.put(mid, stats);