From 42004d48829423ff8ad3023cd2dadf22d4eb05e0 Mon Sep 17 00:00:00 2001 From: Ziggy Date: Wed, 29 Jun 2022 17:49:40 +0200 Subject: [PATCH] System messages for granted static items instead of the NGE loot box because it unfortunately doesn't exist pre-NGE --- .../TerminalCharacterBuilderRadial.java | 3 +- .../gameplay/combat/loot/RareLootService.java | 2 +- .../objects/items/StaticItemService.kt | 45 ++++++------------- 3 files changed, 15 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/projectswg/holocore/resources/support/objects/radial/terminal/TerminalCharacterBuilderRadial.java b/src/main/java/com/projectswg/holocore/resources/support/objects/radial/terminal/TerminalCharacterBuilderRadial.java index 9477bb107..14ae8cee8 100644 --- a/src/main/java/com/projectswg/holocore/resources/support/objects/radial/terminal/TerminalCharacterBuilderRadial.java +++ b/src/main/java/com/projectswg/holocore/resources/support/objects/radial/terminal/TerminalCharacterBuilderRadial.java @@ -82,7 +82,7 @@ public class TerminalCharacterBuilderRadial implements RadialHandlerInterface { CreatureObject creature = player.getCreatureObject(); SWGObject inventory = creature.getSlottedObject("inventory"); - new CreateStaticItemIntent(creature, inventory, new StaticItemService.LootBoxHandler(creature), items).broadcast(); + new CreateStaticItemIntent(creature, inventory, new StaticItemService.SystemMessageHandler(creature), items).broadcast(); } private static void handleCredits(Player player) { @@ -524,7 +524,6 @@ public class TerminalCharacterBuilderRadial implements RadialHandlerInterface { private static void handleGoggle(Player player) { spawnItems(player, - "item_clothing_goggles_anniversary_01_01", "item_clothing_goggles_goggles_01_01", "item_clothing_goggles_goggles_01_02", "item_clothing_goggles_goggles_01_03", diff --git a/src/main/java/com/projectswg/holocore/services/gameplay/combat/loot/RareLootService.java b/src/main/java/com/projectswg/holocore/services/gameplay/combat/loot/RareLootService.java index bb89c40ad..e54b64b03 100644 --- a/src/main/java/com/projectswg/holocore/services/gameplay/combat/loot/RareLootService.java +++ b/src/main/java/com/projectswg/holocore/services/gameplay/combat/loot/RareLootService.java @@ -158,7 +158,7 @@ public class RareLootService extends Service { } // Show items in loot box window - new StaticItemService.LootBoxHandler(actor).success(createdObjects); + new StaticItemService.SystemMessageHandler(actor).success(createdObjects); } @Override diff --git a/src/main/java/com/projectswg/holocore/services/support/objects/items/StaticItemService.kt b/src/main/java/com/projectswg/holocore/services/support/objects/items/StaticItemService.kt index 7a4941a45..5b2c7ac03 100644 --- a/src/main/java/com/projectswg/holocore/services/support/objects/items/StaticItemService.kt +++ b/src/main/java/com/projectswg/holocore/services/support/objects/items/StaticItemService.kt @@ -26,16 +26,12 @@ */ package com.projectswg.holocore.services.support.objects.items -import com.projectswg.common.network.packets.swg.zone.object_controller.ShowLootBox import com.projectswg.holocore.intents.support.global.chat.SystemMessageIntent import com.projectswg.holocore.intents.support.objects.items.CreateStaticItemIntent import com.projectswg.holocore.intents.support.objects.swg.ObjectCreatedIntent import com.projectswg.holocore.resources.support.objects.StaticItemCreator import com.projectswg.holocore.resources.support.objects.swg.SWGObject import com.projectswg.holocore.resources.support.objects.swg.creature.CreatureObject -import me.joshlarson.jlcommon.concurrency.ScheduledThreadPool -import me.joshlarson.jlcommon.control.Intent -import me.joshlarson.jlcommon.control.IntentChain import me.joshlarson.jlcommon.control.IntentHandler import me.joshlarson.jlcommon.control.Service import me.joshlarson.jlcommon.log.Log @@ -43,18 +39,6 @@ import java.util.* class StaticItemService : Service() { - private val delayedCallbackHandler = ScheduledThreadPool(1, "static-item-service") - - override fun start(): Boolean { - delayedCallbackHandler.start() - return true - } - - override fun stop(): Boolean { - delayedCallbackHandler.stop() - return delayedCallbackHandler.awaitTermination(1000) - } - @IntentHandler private fun handleCreateStaticItemIntent(csii: CreateStaticItemIntent) { val container = csii.container @@ -67,14 +51,13 @@ class StaticItemService : Service() { return } - val intentChain = IntentChain() val objects = ArrayList() for (itemName in itemNames) { val obj = StaticItemCreator.createItem(itemName) if (obj != null) { objects.add(obj) obj.moveToContainer(container) - intentChain.broadcastAfter(ObjectCreatedIntent(obj)) + ObjectCreatedIntent.broadcast(obj) } else { Log.d("%s could not be spawned because the item name is unknown", itemName) val requesterOwner = csii.requester.owner @@ -82,17 +65,10 @@ class StaticItemService : Service() { SystemMessageIntent.broadcastPersonal(requesterOwner, String.format("%s could not be spawned because the item name is unknown", itemName)) } } - - intentChain.broadcastAfter(CompletedStaticItemCreatedCallbacks(objects, objectCreationHandler::success)) + + objectCreationHandler.success(objects); } - - @IntentHandler - private fun handleCompletedStaticItemCreatedCallbacks(csicc: CompletedStaticItemCreatedCallbacks) { - delayedCallbackHandler.execute(60000) { - csicc.objectHandler(csicc.objects) - } - } - + interface ObjectCreationHandler { val isIgnoreVolume: Boolean fun success(createdObjects: List) @@ -102,7 +78,7 @@ class StaticItemService : Service() { } } - class LootBoxHandler(private val receiver: CreatureObject) : ObjectCreationHandler { + class SystemMessageHandler(private val receiver: CreatureObject) : ObjectCreationHandler { override val isIgnoreVolume: Boolean get() = true @@ -113,11 +89,16 @@ class StaticItemService : Service() { for (i in objectIds.indices) { objectIds[i] = createdObjects[i].objectId } - - receiver.sendSelf(ShowLootBox(receiver.objectId, objectIds)) + + for (createdObject in createdObjects) { + val owner = receiver.owner + + if (owner != null) { + SystemMessageIntent.broadcastPersonal(owner, "${createdObject.stringId} has been placed in your inventory.") + } + } } } - private data class CompletedStaticItemCreatedCallbacks(val objects: List, val objectHandler: (createdObjects: List) -> Unit): Intent() }