From 78c5ff4e9e6d859e5735b533fd0d195b084bd576 Mon Sep 17 00:00:00 2001 From: Ziggy Date: Fri, 8 Jul 2022 12:12:50 +0200 Subject: [PATCH] Rewrote SkillModService in Kotlin --- .../skills/skillmod/SkillModService.java | 85 ------------------- .../skills/skillmod/SkillModService.kt | 52 ++++++++++++ 2 files changed, 52 insertions(+), 85 deletions(-) delete mode 100644 src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.java create mode 100644 src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.kt diff --git a/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.java b/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.java deleted file mode 100644 index 5da38be3a..000000000 --- a/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.java +++ /dev/null @@ -1,85 +0,0 @@ -/*********************************************************************************** - * Copyright (c) 2018 /// Project SWG /// www.projectswg.com * - * * - * ProjectSWG is the first NGE emulator for Star Wars Galaxies founded on * - * July 7th, 2011 after SOE announced the official shutdown of Star Wars Galaxies. * - * Our goal is to create an emulator which will provide a server for players to * - * continue playing a game similar to the one they used to play. We are basing * - * it on the final publish of the game prior to end-game events. * - * * - * This file is part of Holocore. * - * * - * --------------------------------------------------------------------------------* - * * - * Holocore is free software: you can redistribute it and/or modify * - * it under the terms of the GNU Affero General Public License as * - * published by the Free Software Foundation, either version 3 of the * - * License, or (at your option) any later version. * - * * - * Holocore is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Affero General Public License for more details. * - * * - * You should have received a copy of the GNU Affero General Public License * - * along with Holocore. If not, see . * - ***********************************************************************************/ -package com.projectswg.holocore.services.gameplay.player.experience.skills.skillmod; - -import com.projectswg.holocore.intents.gameplay.player.experience.skills.SkillModIntent; -import com.projectswg.holocore.intents.support.objects.swg.ContainerTransferIntent; -import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject; -import com.projectswg.holocore.resources.support.objects.swg.tangible.TangibleObject; -import me.joshlarson.jlcommon.control.IntentHandler; -import me.joshlarson.jlcommon.control.Service; - -import java.util.Map; - -public class SkillModService extends Service { - - public SkillModService() { - - } - - @IntentHandler - private void handleContainerTransferIntent(ContainerTransferIntent cti){ - if (cti.getObject().getOwner() == null) - return; - - CreatureObject creature = cti.getObject().getOwner().getCreatureObject(); - - if (cti.getObj() instanceof TangibleObject tangibleObject) { - Map skillMods = tangibleObject.getSkillMods(); - - for (Map.Entry entry : skillMods.entrySet()) { - String modName = entry.getKey(); - int modValue = entry.getValue(); - - if(cti.getContainer().getObjectId() == creature.getObjectId()){ - adjustSkillmod(creature, modName, 0, modValue); - }else if(cti.getOldContainer() != null){ - if(cti.getOldContainer().getObjectId() == creature.getObjectId()){ - adjustSkillmod(creature, modName, 0, -modValue); - } - } - } - } - } - - @IntentHandler - private void handleSkillModIntent(SkillModIntent smi) { - for (CreatureObject creature : smi.getAffectedCreatures()) { - String skillModName = smi.getSkillModName(); - - int adjustBase = smi.getAdjustBase(); - int adjustModifier = smi.getAdjustModifier(); - - adjustSkillmod(creature, skillModName, adjustBase, adjustModifier); - } - } - - private void adjustSkillmod(CreatureObject creature, String skillModName, int adjustBase, int adjustModifier) { - creature.adjustSkillmod(skillModName, adjustBase, adjustModifier); - } - -} diff --git a/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.kt b/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.kt new file mode 100644 index 000000000..eb6025f6e --- /dev/null +++ b/src/main/java/com/projectswg/holocore/services/gameplay/player/experience/skills/skillmod/SkillModService.kt @@ -0,0 +1,52 @@ +package com.projectswg.holocore.services.gameplay.player.experience.skills.skillmod + +import com.projectswg.holocore.intents.gameplay.player.experience.skills.SkillModIntent +import com.projectswg.holocore.intents.support.objects.swg.ContainerTransferIntent +import com.projectswg.holocore.resources.support.objects.swg.SWGObject +import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject +import com.projectswg.holocore.resources.support.objects.swg.tangible.TangibleObject +import me.joshlarson.jlcommon.control.IntentHandler +import me.joshlarson.jlcommon.control.Service + +class SkillModService : Service() { + + @IntentHandler + private fun handlehandleContainerTransferIntent(cti: ContainerTransferIntent) { + val owner = cti.`object`.owner ?: return + val creature = owner.creatureObject + + val obj = cti.obj + if (obj is TangibleObject) { + val skillMods: Map = obj.skillMods + + for (skillMod in skillMods) { + val modName = skillMod.key + val modValue = skillMod.value + + if (isEquippingItem(cti.container, creature)) { + creature.adjustSkillmod(modName, 0, modValue) + } else if (isUnequippingItem(cti.oldContainer, creature)) { + creature.adjustSkillmod(modName, 0, -modValue) + } + } + } + } + + private fun isEquippingItem(container: SWGObject?, creature: CreatureObject): Boolean { + return container != null && container.objectId == creature.objectId + } + + private fun isUnequippingItem(oldContainer: SWGObject?, creature: CreatureObject): Boolean { + return oldContainer != null && oldContainer.objectId == creature.objectId + } + + @IntentHandler + private fun handleSkillModIntent(smi: SkillModIntent) { + for (creature in smi.affectedCreatures) { + val skillModName = smi.skillModName + val adjustBase = smi.adjustBase + val adjustModifier = smi.adjustModifier + creature.adjustSkillmod(skillModName, adjustBase, adjustModifier) + } + } +} \ No newline at end of file