From 19f800246dde22c94586a677768e3e81c69b6a61 Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <jeffrey.freeman@syncleus.com> Date: Mon, 11 Sep 2017 14:42:21 -0400 Subject: [PATCH] refactor: renamed the getStatws method and simplified it. --- .../command/commands/WhoCommand.java | 4 +- .../aethermud/command/commands/XpCommand.java | 4 +- .../core/NewUserRegistrationManager.java | 2 +- .../syncleus/aethermud/npc/NpcBuilder.java | 3 -- .../com/syncleus/aethermud/player/Player.java | 46 ++++++++--------- .../aethermud/player/PlayerManagement.java | 12 ++--- .../aethermud/player/PlayerManager.java | 8 ++- .../storage/graphdb/model/EffectData.java | 36 +++++++------- .../storage/graphdb/model/ItemData.java | 27 +++++----- .../storage/graphdb/model/NpcData.java | 22 ++++----- .../storage/graphdb/model/PlayerData.java | 49 +++++-------------- .../model/{StatsData.java => StatData.java} | 6 +-- .../aethermud/AetherMudUtilsTest.java | 9 ++-- .../combatsimuation/NpcTestHarness.java | 2 +- 14 files changed, 99 insertions(+), 131 deletions(-) rename src/main/java/com/syncleus/aethermud/storage/graphdb/model/{StatsData.java => StatData.java} (96%) diff --git a/src/main/java/com/syncleus/aethermud/command/commands/WhoCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/WhoCommand.java index 984d8c5b..9972df48 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/WhoCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/WhoCommand.java @@ -62,8 +62,8 @@ public class WhoCommand extends Command { continue; } PlayerData playerData = playerMetadataOptional.get(); - t.addCell(Long.toString(Levels.getLevel(playerData.getStats().getExperience()))); - t.addCell(NumberFormat.getNumberInstance(Locale.US).format((playerData.getStats().getExperience()))); + t.addCell(Long.toString(Levels.getLevel(playerData.getStatData().getExperience()))); + t.addCell(NumberFormat.getNumberInstance(Locale.US).format((playerData.getStatData().getExperience()))); t.addCell(roomManager.getPlayerCurrentRoom(allPlayer).get().getRoomTitle()); } } diff --git a/src/main/java/com/syncleus/aethermud/command/commands/XpCommand.java b/src/main/java/com/syncleus/aethermud/command/commands/XpCommand.java index c99554ad..87030cbb 100644 --- a/src/main/java/com/syncleus/aethermud/command/commands/XpCommand.java +++ b/src/main/java/com/syncleus/aethermud/command/commands/XpCommand.java @@ -50,8 +50,8 @@ public class XpCommand extends Command { public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception { execCommand(ctx, e, () -> { PlayerUtil.consume(gameManager, playerId, playerData -> { - int nextLevel = Levels.getLevel(playerData.getStats().getExperience()) + 1; - int expToNextLevel = Levels.getXp(nextLevel) - playerData.getStats().getExperience(); + int nextLevel = Levels.getLevel(playerData.getStatData().getExperience()) + 1; + int expToNextLevel = Levels.getXp(nextLevel) - playerData.getStatData().getExperience(); Meter meter = Main.metrics.meter("experience-" + player.getPlayerName()); Table table = new Table(2, BorderStyle.CLASSIC_COMPATIBLE, ShownBorders.NONE); diff --git a/src/main/java/com/syncleus/aethermud/core/NewUserRegistrationManager.java b/src/main/java/com/syncleus/aethermud/core/NewUserRegistrationManager.java index ab63162c..bd7c04f6 100644 --- a/src/main/java/com/syncleus/aethermud/core/NewUserRegistrationManager.java +++ b/src/main/java/com/syncleus/aethermud/core/NewUserRegistrationManager.java @@ -123,7 +123,7 @@ public class NewUserRegistrationManager { playerData.setPlayerRoles(Sets.newHashSet(PlayerRole.MORTAL, PlayerRole.ADMIN, PlayerRole.GOD, PlayerRole.TELEPORTER)); playerData.setPlayerSettings(new HashMap<>()); try { - PropertyUtils.copyProperties(playerData.createStats(), DefaultStats.DEFAULT_PLAYER.createStats()); + PropertyUtils.copyProperties(playerData.createStatData(), DefaultStats.DEFAULT_PLAYER.createStats()); } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) { throw new IllegalStateException("Could not copy properties for stats", e); } diff --git a/src/main/java/com/syncleus/aethermud/npc/NpcBuilder.java b/src/main/java/com/syncleus/aethermud/npc/NpcBuilder.java index e9c1513e..972d3f1c 100644 --- a/src/main/java/com/syncleus/aethermud/npc/NpcBuilder.java +++ b/src/main/java/com/syncleus/aethermud/npc/NpcBuilder.java @@ -21,15 +21,12 @@ import com.syncleus.aethermud.core.GameManager; import com.syncleus.aethermud.items.Loot; import com.syncleus.aethermud.spawner.SpawnRule; import com.syncleus.aethermud.stats.Stats; -import com.syncleus.aethermud.storage.graphdb.model.StatsData; -import com.syncleus.aethermud.storage.graphdb.model.NpcData; import com.syncleus.aethermud.world.model.Area; import org.apache.commons.beanutils.PropertyUtils; import java.lang.reflect.InvocationTargetException; import java.util.HashSet; import java.util.Set; -import java.util.stream.Collectors; import static com.google.common.base.Preconditions.checkNotNull; diff --git a/src/main/java/com/syncleus/aethermud/player/Player.java b/src/main/java/com/syncleus/aethermud/player/Player.java index 94102165..83c741db 100644 --- a/src/main/java/com/syncleus/aethermud/player/Player.java +++ b/src/main/java/com/syncleus/aethermud/player/Player.java @@ -30,7 +30,7 @@ import com.syncleus.aethermud.server.communication.Color; import com.syncleus.aethermud.stats.*; import com.syncleus.aethermud.storage.graphdb.model.CoolDownData; import com.syncleus.aethermud.storage.graphdb.model.EffectData; -import com.syncleus.aethermud.storage.graphdb.model.StatsData; +import com.syncleus.aethermud.storage.graphdb.model.StatData; import com.syncleus.aethermud.storage.graphdb.model.PlayerData; import com.syncleus.aethermud.world.model.Room; import com.google.common.collect.*; @@ -149,10 +149,10 @@ public class Player extends AetherMudEntity { } int maxHealth = stats.getMaxHealth(); this.consumeRead((p) -> { - if (p.getStats().getCurrentHealth() < maxHealth) { + if (p.getStatData().getCurrentHealth() < maxHealth) { updatePlayerHealth((int) (maxHealth * .05), null); } - if (p.getStats().getCurrentMana() < maxHealth) { + if (p.getStatData().getCurrentMana() < maxHealth) { addMana((int) (maxHealth * .03)); } }); @@ -204,7 +204,8 @@ public class Player extends AetherMudEntity { public boolean updatePlayerHealth(int amount, NpcSpawn npcSpawn) { synchronized (interner.intern(playerId)) { if (amount > 0) { - int currentHealth = this.transactRead(playerData -> playerData.getStats().getCurrentHealth()); + // TODO : make this one large transaction + int currentHealth = this.transactRead(playerData -> playerData.getStatData().getCurrentHealth()); Stats statsModifier = getPlayerStatsWithEquipmentAndLevel(); int maxHealth = statsModifier.getMaxHealth(); int proposedNewAmt = currentHealth + amount; @@ -218,15 +219,15 @@ public class Player extends AetherMudEntity { } else finalNewAmount = proposedNewAmt; - this.consume(playerData -> playerData.getStats().setCurrentHealth(finalNewAmount)); + this.consume(playerData -> playerData.getStatData().setCurrentHealth(finalNewAmount)); return false; } else { - if ((this.transactRead(playerData -> playerData.getStats().getCurrentHealth()) + amount) < 0) { - this.consume(playerData -> playerData.getStats().setCurrentHealth(0)); + if ((this.transactRead(playerData -> playerData.getStatData().getCurrentHealth()) + amount) < 0) { + this.consume(playerData -> playerData.getStatData().setCurrentHealth(0)); } else { - this.consume(playerData -> playerData.getStats().setCurrentHealth(playerData.getStats().getCurrentHealth() + amount)); + this.consume(playerData -> playerData.getStatData().setCurrentHealth(playerData.getStatData().getCurrentHealth() + amount)); } - if (this.transactRead(playerData -> playerData.getStats().getCurrentHealth()) == 0) { + if (this.transactRead(playerData -> playerData.getStatData().getCurrentHealth()) == 0) { killPlayer(npcSpawn); return true; } @@ -257,7 +258,8 @@ public class Player extends AetherMudEntity { public void addMana(int addAmt) { synchronized (interner.intern(playerId)) { - int currentMana = this.transactRead(playerData -> playerData.getStats().getCurrentMana()); + //TODO : Make this one large transaction + int currentMana = this.transactRead(playerData -> playerData.getStatData().getCurrentMana()); Stats statsModifier = getPlayerStatsWithEquipmentAndLevel(); int maxMana = statsModifier.getMaxMana(); int proposedNewAmt = currentMana + addAmt; @@ -271,7 +273,7 @@ public class Player extends AetherMudEntity { } else finalNewAmount = proposedNewAmt; - this.consume(playerData -> playerData.getStats().setCurrentMana(finalNewAmount)); + this.consume(playerData -> playerData.getStatData().setCurrentMana(finalNewAmount)); } } @@ -279,11 +281,11 @@ public class Player extends AetherMudEntity { synchronized (interner.intern(playerId)) { final Meter requests = Main.metrics.meter("experience-" + playerName); this.consume(playerData -> { - int currentExperience = playerData.getStats().getExperience(); + int currentExperience = playerData.getStatData().getExperience(); int currentLevel = Levels.getLevel(currentExperience); - playerData.getStats().setExperience(currentExperience + exp); + playerData.getStatData().setExperience(currentExperience + exp); requests.mark(exp); - int newLevel = Levels.getLevel(playerData.getStats().getExperience()); + int newLevel = Levels.getLevel(playerData.getStatData().getExperience()); if (newLevel > currentLevel) { gameManager.announceLevelUp(playerName, currentLevel, newLevel); } @@ -292,18 +294,18 @@ public class Player extends AetherMudEntity { } public int getLevel() { - return this.transactRead(playerData -> Levels.getLevel(playerData.getStats().getExperience())); + return this.transactRead(playerData -> Levels.getLevel(playerData.getStatData().getExperience())); } public int getCurrentHealth() { synchronized (interner.intern(playerId)) { - return this.transactRead(playerData -> playerData.getStats().getCurrentHealth()); + return this.transactRead(playerData -> playerData.getStatData().getCurrentHealth()); } } public void setCurrentHealth(int health) { synchronized (interner.intern(playerId)) { - this.consume(playerData -> playerData.getStats().setCurrentHealth(health)); + this.consume(playerData -> playerData.getStatData().setCurrentHealth(health)); } } @@ -328,7 +330,7 @@ public class Player extends AetherMudEntity { public boolean addEffect(Effect effect) { synchronized (interner.intern(playerId)) { return this.transact(playerData -> { - if (playerData.getEffects() != null && (playerData.getEffects().size() >= playerData.getStats().getMaxEffects())) { + if (playerData.getEffects() != null && (playerData.getEffects().size() >= playerData.getStatData().getMaxEffects())) { return false; } @@ -462,13 +464,13 @@ public class Player extends AetherMudEntity { public void updatePlayerMana(int amount) { synchronized (interner.intern(playerId)) { - this.consume(playerData -> playerData.getStats().setCurrentMana(playerData.getStats().getCurrentMana() + amount)); + this.consume(playerData -> playerData.getStatData().setCurrentMana(playerData.getStatData().getCurrentMana() + amount)); } } public void updatePlayerForageExperience(int amount) { synchronized (interner.intern(playerId)) { - this.consume(playerData -> playerData.getStats().setForaging(playerData.getStats().getForaging() + amount)); + this.consume(playerData -> playerData.getStatData().setForaging(playerData.getStatData().getForaging() + amount)); } } @@ -975,7 +977,7 @@ public class Player extends AetherMudEntity { } if (playerData.getEffects() != null) { for (EffectData effect : playerData.getEffects()) { - StatsHelper.combineStats(newStats, StatsData.copyStats(effect.getDurationStats())); + StatsHelper.combineStats(newStats, StatData.copyStats(effect.getDurationStats())); } } return newStats; @@ -1260,7 +1262,7 @@ public class Player extends AetherMudEntity { } public Stats getStats() { - return this.transactRead(playerData -> StatsData.copyStats(playerData.getStats())); + return this.transactRead(playerData -> StatData.copyStats(playerData.getStatData())); } private <T> T transact(Function<PlayerData, T> func) { diff --git a/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java b/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java index 0d58d3e3..beec826e 100644 --- a/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java +++ b/src/main/java/com/syncleus/aethermud/player/PlayerManagement.java @@ -83,7 +83,7 @@ public class PlayerManagement implements PlayerManagementMBean { @Override public void setHealth(int amt) { synchronized (findInterner().intern(playerId)) { - this.consume(playerData -> playerData.getStats().setCurrentHealth(amt)); + this.consume(playerData -> playerData.getStatData().setCurrentHealth(amt)); } } @@ -109,13 +109,13 @@ public class PlayerManagement implements PlayerManagementMBean { @Override public void setMana(int amt) { synchronized (findInterner().intern(playerId)) { - this.consume(playerData -> playerData.getStats().setCurrentMana(amt)); + this.consume(playerData -> playerData.getStatData().setCurrentMana(amt)); } } @Override public int getHealth() { - return this.transactRead(playerData -> playerData.getStats().getCurrentHealth()); + return this.transactRead(playerData -> playerData.getStatData().getCurrentHealth()); } @Override @@ -125,19 +125,19 @@ public class PlayerManagement implements PlayerManagementMBean { @Override public int getMana() { - return this.transactRead(playerData -> playerData.getStats().getCurrentMana()); + return this.transactRead(playerData -> playerData.getStatData().getCurrentMana()); } @Override public void setExperience(int amt) { synchronized (findInterner().intern(playerId)) { - this.consume(playerData -> playerData.getStats().setExperience(amt)); + this.consume(playerData -> playerData.getStatData().setExperience(amt)); } } @Override public int getExperience() { - return this.transactRead(playerData -> playerData.getStats().getExperience()); + return this.transactRead(playerData -> playerData.getStatData().getExperience()); } @Override diff --git a/src/main/java/com/syncleus/aethermud/player/PlayerManager.java b/src/main/java/com/syncleus/aethermud/player/PlayerManager.java index 10f623ee..ce463d77 100644 --- a/src/main/java/com/syncleus/aethermud/player/PlayerManager.java +++ b/src/main/java/com/syncleus/aethermud/player/PlayerManager.java @@ -17,12 +17,10 @@ package com.syncleus.aethermud.player; import com.codahale.metrics.Gauge; -import com.google.common.collect.Sets; import com.syncleus.aethermud.Main; import com.syncleus.aethermud.core.SessionManager; import com.syncleus.aethermud.storage.graphdb.GraphStorageFactory; -import com.syncleus.aethermud.storage.graphdb.model.StatsData; -import com.syncleus.aethermud.storage.AetherMudStorage; +import com.syncleus.aethermud.storage.graphdb.model.StatData; import com.syncleus.aethermud.storage.graphdb.model.PlayerData; import com.syncleus.aethermud.world.model.Room; import org.apache.commons.codec.binary.Base64; @@ -122,7 +120,7 @@ public class PlayerManager { Main.metrics.register(name(PlayerManager.class, playerData.getPlayerName(), "current-health"), (Gauge<Integer>) () -> { Optional<PlayerData> playerMetadataOpt = tx.getStorage().getPlayerMetadata(playerId); - return playerMetadataOpt.map(PlayerData::getStats).map(StatsData::getCurrentHealth).orElse(0); + return playerMetadataOpt.map(PlayerData::getStatData).map(StatData::getCurrentHealth).orElse(0); }); } @@ -131,7 +129,7 @@ public class PlayerManager { Main.metrics.register(name(PlayerManager.class, playerData.getPlayerName(), "xp"), (Gauge<Integer>) () -> { Optional<PlayerData> playerMetadataOpt = tx.getStorage().getPlayerMetadata(playerId); - return playerMetadataOpt.map(PlayerData::getStats).map(StatsData::getExperience).orElse(0); + return playerMetadataOpt.map(PlayerData::getStatData).map(StatData::getExperience).orElse(0); }); } } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java index 2fc2dd55..c5ad8669 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/EffectData.java @@ -73,27 +73,27 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { public abstract void setFrozenMovement(boolean frozenMovement); @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getAllApplyStatsOnTick(Class<? extends N> type); + public abstract <N extends StatData> Iterator<? extends N> getAllApplyStatsOnTick(Class<? extends N> type); public Stats getApplyStatsOnTick() { - Iterator<? extends StatsData> allStats = this.getAllApplyStatsOnTick(StatsData.class); + Iterator<? extends StatData> allStats = this.getAllApplyStatsOnTick(StatData.class); if (allStats.hasNext()) - return StatsData.copyStats(allStats.next()); + return StatData.copyStats(allStats.next()); else return null; } @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) - public abstract StatsData addApplyStatsOnTick(StatsData stats); + public abstract StatData addApplyStatsOnTick(StatData stats); @Adjacency(label = "ApplyStatsOnTick", direction = Direction.OUT) - public abstract void removeApplyStatsOnTick(StatsData stats); + public abstract void removeApplyStatsOnTick(StatData stats); public void setApplyStatsOnTick(Stats stats) { - Iterator<? extends StatsData> existingAll = this.getAllApplyStatsOnTick(StatsData.class); + Iterator<? extends StatData> existingAll = this.getAllApplyStatsOnTick(StatData.class); if (existingAll != null) { while (existingAll.hasNext()) { - StatsData existing = existingAll.next(); + StatData existing = existingAll.next(); this.removeApplyStatsOnTick(existing); existing.remove(); } @@ -103,7 +103,7 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { return; } - StatsData createdData = this.createOrphanStats(); + StatData createdData = this.createOrphanStats(); try { PropertyUtils.copyProperties(createdData, stats); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { @@ -113,10 +113,10 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "DurationStats", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getAllDurationStats(Class<? extends N> type); + public abstract <N extends StatData> Iterator<? extends N> getAllDurationStats(Class<? extends N> type); - public StatsData getDurationStats() { - Iterator<? extends StatsData> allStats = this.getAllDurationStats(StatsData.class); + public StatData getDurationStats() { + Iterator<? extends StatData> allStats = this.getAllDurationStats(StatData.class); if (allStats.hasNext()) return allStats.next(); else @@ -124,16 +124,16 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "DurationStats", direction = Direction.OUT) - public abstract StatsData addDurationStats(StatsData stats); + public abstract StatData addDurationStats(StatData stats); @Adjacency(label = "DurationStats", direction = Direction.OUT) - public abstract void removeDurationStats(StatsData stats); + public abstract void removeDurationStats(StatData stats); public void setDurationStats(Stats stats) { - Iterator<? extends StatsData> existingAll = this.getAllDurationStats(StatsData.class); + Iterator<? extends StatData> existingAll = this.getAllDurationStats(StatData.class); if (existingAll != null) { while (existingAll.hasNext()) { - StatsData existing = existingAll.next(); + StatData existing = existingAll.next(); this.removeDurationStats(existing); existing.remove(); } @@ -143,7 +143,7 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { return; } - StatsData createdData = this.createOrphanStats(); + StatData createdData = this.createOrphanStats(); try { PropertyUtils.copyProperties(createdData, stats); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { @@ -152,10 +152,10 @@ public abstract class EffectData extends AbstractInterceptingVertexFrame { this.addDurationStats(createdData); } - private StatsData createOrphanStats() { + private StatData createOrphanStats() { if (this.getDurationStats() != null) throw new IllegalStateException("Already has stats, can't create another"); - final StatsData stats = this.getGraph().addFramedVertex(StatsData.class); + final StatData stats = this.getGraph().addFramedVertex(StatData.class); stats.setAgile(0); stats.setAim(0); stats.setArmorRating(0); diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java index f2df1188..94777f74 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/ItemData.java @@ -16,11 +16,8 @@ package com.syncleus.aethermud.storage.graphdb.model; import com.google.common.collect.Sets; -import com.syncleus.aethermud.common.AetherMudMessage; import com.syncleus.aethermud.core.service.TimeTracker; import com.syncleus.aethermud.items.*; -import com.syncleus.aethermud.spawner.SpawnRule; -import com.syncleus.aethermud.stats.Stats; import com.syncleus.aethermud.storage.graphdb.DataUtils; import com.syncleus.ferma.annotations.Adjacency; import com.syncleus.ferma.annotations.GraphElement; @@ -157,10 +154,10 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getItemApplyStatDatasIterator(Class<? extends N> type); + public abstract <N extends StatData> Iterator<? extends N> getItemApplyStatDatasIterator(Class<? extends N> type); - public StatsData getItemApplyStatData() { - Iterator<? extends StatsData> allStats = this.getItemApplyStatDatasIterator(StatsData.class); + public StatData getItemApplyStatData() { + Iterator<? extends StatData> allStats = this.getItemApplyStatDatasIterator(StatData.class); if( allStats.hasNext() ) return allStats.next(); else @@ -168,19 +165,19 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract StatsData addStatData(StatsData stats); + public abstract StatData addStatData(StatData stats); @Adjacency(label = "ItemApplyStats", direction = Direction.OUT) - public abstract void removeStatData(StatsData stats); + public abstract void removeStatData(StatData stats); - public void setItemApplyStatData(StatsData stats) { - DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getItemApplyStatDatasIterator(StatsData.class), statsData -> this.addStatData(statsData), () -> createItemApplyStatData() ); + public void setItemApplyStatData(StatData stats) { + DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getItemApplyStatDatasIterator(StatData.class), statsData -> this.addStatData(statsData), () -> createItemApplyStatData() ); } - public StatsData createItemApplyStatData() { + public StatData createItemApplyStatData() { if( this.getItemApplyStatData() != null ) throw new IllegalStateException("Already has stats, can't create another"); - final StatsData stats = this.getGraph().addFramedVertex(StatsData.class); + final StatData stats = this.getGraph().addFramedVertex(StatData.class); stats.setAgile(0); stats.setAim(0); stats.setArmorRating(0); @@ -237,7 +234,7 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { public static void copyItem(ItemData dest, Item src) { try { PropertyUtils.copyProperties(dest, src); - StatsData.copyStats(dest.createItemApplyStatData(), src.getItemApplyStats()); + StatData.copyStats(dest.createItemApplyStatData(), src.getItemApplyStats()); LootData.copyLoot(dest.createLoottData(), src.getLoot()); for(Effect effect : src.getEffects()) EffectData.copyEffect(dest.createEffectData(), effect); @@ -255,9 +252,9 @@ public abstract class ItemData extends AbstractInterceptingVertexFrame { if(lootData != null) retVal.setLoot(LootData.copyLoot(lootData)); - StatsData applyStats = src.getItemApplyStatData(); + StatData applyStats = src.getItemApplyStatData(); if( applyStats != null ) - retVal.setItemApplyStats(StatsData.copyStats(applyStats)); + retVal.setItemApplyStats(StatData.copyStats(applyStats)); Set<Effect> effects = new HashSet<>(); for(EffectData effect : src.getEffectDatas()) diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java index 8b41374a..ba0b58c3 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/NpcData.java @@ -134,10 +134,10 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "stats", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getAllStatsData(Class<? extends N> type); + public abstract <N extends StatData> Iterator<? extends N> getAllStatsData(Class<? extends N> type); - public StatsData getStatsData() { - Iterator<? extends StatsData> allStats = this.getAllStatsData(StatsData.class); + public StatData getStatsData() { + Iterator<? extends StatData> allStats = this.getAllStatsData(StatData.class); if( allStats.hasNext() ) return allStats.next(); else @@ -145,19 +145,19 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "stats", direction = Direction.OUT) - public abstract StatsData addStatsData(StatsData stats); + public abstract StatData addStatsData(StatData stats); @Adjacency(label = "stats", direction = Direction.OUT) - public abstract void removeStatsData(StatsData stats); + public abstract void removeStatsData(StatData stats); - public void setStatsData(StatsData stats) { - DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getAllStatsData(StatsData.class), statsData -> this.addStatsData(statsData), () -> this.createStatsData() ); + public void setStatsData(StatData stats) { + DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getAllStatsData(StatData.class), statsData -> this.addStatsData(statsData), () -> this.createStatsData() ); } - public StatsData createStatsData() { + public StatData createStatsData() { if( this.getStatsData() != null ) throw new IllegalStateException("Already has stats, can't create another"); - final StatsData stats = this.getGraph().addFramedVertex(StatsData.class); + final StatData stats = this.getGraph().addFramedVertex(StatData.class); stats.setAgile(0); stats.setAim(0); stats.setArmorRating(0); @@ -283,7 +283,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(dest, src); LootData.copyLoot(dest.createLootData(), src.getLoot()); - StatsData.copyStats(dest.createStatsData(), src.getStats()); + StatData.copyStats(dest.createStatsData(), src.getStats()); for(SpawnRule spawnRule : src.getSpawnRules()) SpawnRuleData.copySpawnRule(dest.createSpawnRuleData(), spawnRule); for(AetherMudMessage message : src.getAttackMessages()) @@ -304,7 +304,7 @@ public abstract class NpcData extends AbstractInterceptingVertexFrame { try { PropertyUtils.copyProperties(retVal, src); retVal.setLoot(LootData.copyLoot(src.getLootData())); - retVal.setStats(StatsData.copyStats(src.getStatsData())); + retVal.setStats(StatData.copyStats(src.getStatsData())); List<SpawnRule> rules = new ArrayList<>(); for(SpawnRuleData spawnRuleData : src.getSpawnRuleDatas()) diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java index 01d21c70..17c6f485 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/PlayerData.java @@ -16,9 +16,9 @@ package com.syncleus.aethermud.storage.graphdb.model; -import com.syncleus.aethermud.items.Effect; import com.syncleus.aethermud.player.*; import com.google.common.collect.Sets; +import com.syncleus.aethermud.storage.graphdb.DataUtils; import com.syncleus.ferma.ClassInitializer; import com.syncleus.ferma.DefaultClassInitializer; import com.syncleus.ferma.annotations.Adjacency; @@ -256,10 +256,10 @@ public abstract class PlayerData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "stats", direction = Direction.OUT) - public abstract <N extends StatsData> Iterator<? extends N> getAllStats(Class<? extends N> type); + public abstract <N extends StatData> Iterator<? extends N> getStatDataIterator(Class<? extends N> type); - public StatsData getStats() { - Iterator<? extends StatsData> allStats = this.getAllStats(StatsData.class); + public StatData getStatData() { + Iterator<? extends StatData> allStats = this.getStatDataIterator(StatData.class); if( allStats.hasNext() ) return allStats.next(); else @@ -267,44 +267,19 @@ public abstract class PlayerData extends AbstractInterceptingVertexFrame { } @Adjacency(label = "stats", direction = Direction.OUT) - public abstract StatsData addStats(StatsData stats); + public abstract StatData addStatData(StatData stats); @Adjacency(label = "stats", direction = Direction.OUT) - public abstract void removeStats(StatsData stats); + public abstract void removeStatData(StatData stats); - public void setStats(StatsData stats) { - Iterator<? extends StatsData> existingAll = this.getAllStats(StatsData.class); - if( existingAll != null ) { - while( existingAll.hasNext() ) { - StatsData existing = existingAll.next(); - this.removeStats(existing); - existing.remove(); - } - - } - - if( stats == null ) { - this.createStats(); - return; - } - - StatsData statsData; - if( stats instanceof StatsData ) { - this.addStats((StatsData) stats); - } - else { - try { - PropertyUtils.copyProperties(this.createStats(), stats); - } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { - throw new IllegalStateException("Could not copy properties"); - } - } + public void setStats(StatData stats) { + DataUtils.setAllElements(Collections.singletonList(stats), () -> this.getStatDataIterator(StatData.class), statsData -> this.addStatData(statsData), () -> createStatData() ); } - public StatsData createStats() { - if( this.getStats() != null ) + public StatData createStatData() { + if( this.getStatData() != null ) throw new IllegalStateException("Already has stats, can't create another"); - final StatsData stats = this.getGraph().addFramedVertex(StatsData.class); + final StatData stats = this.getGraph().addFramedVertex(StatData.class); stats.setAgile(0); stats.setAim(0); stats.setArmorRating(0); @@ -323,7 +298,7 @@ public abstract class PlayerData extends AbstractInterceptingVertexFrame { stats.setWeaponRatingMax(0); stats.setWeaponRatingMin(0); stats.setWillpower(0); - this.addStats(stats); + this.addStatData(stats); return stats; } diff --git a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatData.java similarity index 96% rename from src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java rename to src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatData.java index e1cc61ac..4970f5fb 100644 --- a/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatsData.java +++ b/src/main/java/com/syncleus/aethermud/storage/graphdb/model/StatData.java @@ -26,7 +26,7 @@ import java.lang.reflect.InvocationTargetException; import static java.lang.StrictMath.sqrt; @GraphElement -public abstract class StatsData extends AbstractInterceptingVertexFrame { +public abstract class StatData extends AbstractInterceptingVertexFrame { @Property("intelligence") public abstract Integer getIntelligence(); @@ -135,7 +135,7 @@ public abstract class StatsData extends AbstractInterceptingVertexFrame { @Property("inventorySize") public abstract void setInventorySize(Integer inventorySize); - public static void copyStats(StatsData dest, Stats src) { + public static void copyStats(StatData dest, Stats src) { try { PropertyUtils.copyProperties(dest, src); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { @@ -143,7 +143,7 @@ public abstract class StatsData extends AbstractInterceptingVertexFrame { } } - public static Stats copyStats(StatsData src) { + public static Stats copyStats(StatData src) { Stats retVal = new Stats(); try { PropertyUtils.copyProperties(retVal, src); diff --git a/src/test/java/com/syncleus/aethermud/AetherMudUtilsTest.java b/src/test/java/com/syncleus/aethermud/AetherMudUtilsTest.java index 510c5712..1fe2f64b 100644 --- a/src/test/java/com/syncleus/aethermud/AetherMudUtilsTest.java +++ b/src/test/java/com/syncleus/aethermud/AetherMudUtilsTest.java @@ -26,11 +26,10 @@ import com.syncleus.aethermud.stats.DefaultStats; import com.syncleus.aethermud.stats.modifier.StatsModifierFactory; import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import com.syncleus.aethermud.storage.AetherMudStorage; import com.syncleus.aethermud.storage.graphdb.GraphDbAetherMudStorage; import com.syncleus.aethermud.storage.graphdb.GraphStorageFactory; import com.syncleus.aethermud.storage.graphdb.model.PlayerData; -import com.syncleus.aethermud.storage.graphdb.model.StatsData; +import com.syncleus.aethermud.storage.graphdb.model.StatData; import org.apache.commons.beanutils.PropertyUtils; import org.junit.Assert; import org.junit.Test; @@ -71,13 +70,13 @@ public class AetherMudUtilsTest { playerData.setPlayerId(Main.createPlayerId("usertest")); playerData.setPlayerRoles(Sets.newHashSet(PlayerRole.MORTAL)); playerData.setPlayerSettings(new HashMap<>()); - StatsData statsData = mock(StatsData.class); + StatData statData = mock(StatData.class); try { - PropertyUtils.copyProperties(statsData, DefaultStats.DEFAULT_PLAYER.createStats()); + PropertyUtils.copyProperties(statData, DefaultStats.DEFAULT_PLAYER.createStats()); } catch (IllegalAccessException | InvocationTargetException e) { throw new IllegalStateException("Could not create a stats object", e); } - when(playerData.getStats()).thenReturn(statsData); + when(playerData.getStatData()).thenReturn(statData); GameManager gameManager = mock(GameManager.class); StatsModifierFactory statsModifierFactory = mock(StatsModifierFactory.class); diff --git a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java index fd4c6fb5..df6d0d85 100644 --- a/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java +++ b/src/test/java/com/syncleus/aethermud/player/combatsimuation/NpcTestHarness.java @@ -318,7 +318,7 @@ public class NpcTestHarness { playerData.setPlayerRoles(Sets.newHashSet(PlayerRole.MORTAL)); playerData.setPlayerSettings(new HashMap<>()); try { - PropertyUtils.copyProperties(playerData.createStats(), DefaultStats.DEFAULT_PLAYER.createStats()); + PropertyUtils.copyProperties(playerData.createStatData(), DefaultStats.DEFAULT_PLAYER.createStats()); } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) { throw new IllegalStateException("Could not create a stats object", e); } -- GitLab