Port Larder to kotlin

This commit is contained in:
gregf36665 2024-12-22 23:27:50 +00:00 committed by Syndromeramo
parent 90be6cff96
commit 3d587ca7ed
4 changed files with 44 additions and 395 deletions

View file

@ -0,0 +1,42 @@
package content.global.skill.construction.decoration.kitchen
import core.api.openDialogue
import core.game.interaction.IntType
import core.game.interaction.InteractionListener
import org.rs09.consts.Items
import org.rs09.consts.Scenery
class LarderListener : InteractionListener {
companion object {
private val wooden_larder_items = listOf(
"Tea Leaves" to Items.TEA_LEAVES_7738,
"Bucket of Milk" to Items.BUCKET_OF_MILK_1927
)
private val oak_larder_items = wooden_larder_items + listOf(
"Eggs" to Items.EGG_1944,
"Pot of Flour" to Items.POT_OF_FLOUR_1933
)
private val teak_larder_items = oak_larder_items + listOf(
"Potatoes" to Items.POTATO_1942,
"Garlic" to Items.GARLIC_1550,
"Onions" to Items.ONION_1957,
"Cheese" to Items.CHEESE_1985
)
val larders = mapOf(
Scenery.LARDER_13565 to wooden_larder_items,
Scenery.LARDER_13566 to oak_larder_items,
Scenery.LARDER_13567 to teak_larder_items
)
}
override fun defineListeners() {
on(larders.keys.toIntArray(), IntType.SCENERY, "Search") { player, node ->
openDialogue(player, LarderDialogue(node.id))
return@on true
}
}
class LarderDialogue(shelfId: Int) : AbstractContainer(shelfId, larders, "larder")
}

View file

@ -1,149 +0,0 @@
package content.global.skill.construction.decoration.kitchen;
import core.cache.def.impl.SceneryDefinition;
import core.plugin.Initializable;
import core.game.dialogue.DialoguePlugin;
import core.game.interaction.OptionHandler;
import core.game.node.Node;
import core.game.node.entity.player.Player;
import core.game.node.item.Item;
import core.plugin.Plugin;
import core.plugin.ClassScanner;
import org.rs09.consts.Items;
/**
* Handles the interactions for the three Larders.
* @author Splinter
*/
@Initializable
public final class LarderPlugin extends OptionHandler {
@Override
public Plugin<Object> newInstance(Object arg) throws Throwable {
ClassScanner.definePlugin(new LarderDialogue());
SceneryDefinition.forId(13565).getHandlers().put("option:search", this);
SceneryDefinition.forId(13566).getHandlers().put("option:search", this);
SceneryDefinition.forId(13567).getHandlers().put("option:search", this);
return this;
}
@Override
public boolean handle(Player player, Node node, String option) {
player.getDialogueInterpreter().open(42048, node.getId());
return true;
}
/**
* Dialogue options for the Larders.
* @author Splinter
* @version 1.0
*/
public final class LarderDialogue extends DialoguePlugin {
/**
* Constructs a new {@code LarderDialogue} {@code Object}.
*/
public LarderDialogue() {
/**
* empty.
*/
}
/**
* Constructs a new {@code LarderDialogue} {@code Object}.
*
* @param player
* the player.
*/
public LarderDialogue(Player player) {
super(player);
}
@Override
public DialoguePlugin newInstance(Player player) {
return new LarderDialogue(player);
}
@Override
public boolean open(Object... args) {
int id = (int) args[0];
switch (id) {
case 13565:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk");
stage = 1;
break;
case 13566:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk", "Eggs", "Pot of Flour");
stage = 1;
break;
case 13567:
interpreter.sendOptions("Select an Option", "Tea Leaves", "Bucket of Milk", "Eggs", "Pot of Flour", "More Options");
stage = 1;
break;
}
return true;
}
@Override
public boolean handle(int interfaceId, int buttonId) {
if (player.getInventory().freeSlots() < 1) {
player.sendMessage("You need at least one free inventory space to take from the larder.");
end();
return true;
}
switch (stage) {
case 1:
switch (buttonId) {
case 1:
player.getInventory().add(new Item(Items.TEA_LEAVES_7738, 1));
end();
break;
case 2:
player.getInventory().add(new Item(Items.BUCKET_OF_MILK_1927, 1));
end();
break;
case 3:
player.getInventory().add(new Item(Items.EGG_1944, 1));
end();
break;
case 4:
player.getInventory().add(new Item(Items.POT_OF_FLOUR_1933, 1));
end();
break;
case 5:
player.getDialogueInterpreter().sendOptions(
"Select an Option", "Potatoes", "Garlic", "Onions", "Cheese");
stage = 2;
break;
}
break;
case 2:
switch (buttonId) {
case 1:
player.getInventory().add(new Item(Items.POTATO_1942, 1));
end();
break;
case 2:
player.getInventory().add(new Item(Items.GARLIC_1550, 1));
end();
break;
case 3:
player.getInventory().add(new Item(Items.ONION_1957, 1));
end();
break;
case 4:
player.getInventory().add(new Item(Items.CHEESE_1985, 1));
end();
break;
}
}
return true;
}
@Override
public int[] getIds() {
return new int[] { 42048 };
}
}
}

View file

@ -82,15 +82,10 @@ class ShelfListener : InteractionListener {
override fun defineListeners() { override fun defineListeners() {
on(shelves.keys.toIntArray(), IntType.SCENERY, "Search") { player, node -> on(shelves.keys.toIntArray(), IntType.SCENERY, "Search") { player, node ->
searchShelf(player, node.id) openDialogue(player, ShelfDialogue(node.id))
return@on true return@on true
} }
} }
private fun searchShelf(player : Player, shelfId: Int){ class ShelfDialogue(shelfId: Int) : AbstractContainer(shelfId, shelves, "shelf")
openDialogue(player, ShelfDialogue(shelfId, shelves))
}
class ShelfDialogue(shelfId: Int, shelves : Map<Int,List<Pair<String,Int>>>) : AbstractContainer(shelfId, shelves, "shelf")
} }

View file

@ -1,239 +0,0 @@
// package content.global.skill.construction.decoration.kitchen;
//
//
// import core.cache.def.impl.SceneryDefinition;
// import core.game.dialogue.DialoguePlugin;
// import core.game.interaction.OptionHandler;
// import core.game.node.Node;
// import core.game.node.entity.player.Player;
// import core.game.node.item.Item;
// import core.plugin.Initializable;
// import core.plugin.Plugin;
// import core.plugin.ClassScanner;
// import org.rs09.consts.Items;
//
// /**
// * Handles the shelves in the kitchen room.
// * @author Splinter
// */
// @Initializable
// public final class ShelfPlugin extends OptionHandler {
//
// @Override
// public Plugin<Object> newInstance(Object arg) throws Throwable {
// ClassScanner.definePlugin(new ShelfDialogue());
// for (int i = 13545; i < 13552; i++) {
// SceneryDefinition.forId(i).getHandlers().put("option:search", this);
// }
// return this;
// }
//
// @Override
// public boolean handle(Player player, Node node, String option) {
// player.getDialogueInterpreter().open(778341, node.getId());
// return true;
// }
//
// /**
// * Dialogue options for the shelves, what a mess!
// * @author Splinter
// * @version 1.0
// */
// public final class ShelfDialogue extends DialoguePlugin {
//
// /**
// * Constructs a new {@code ShelfDialogue} {@code Object}.
// */
// public ShelfDialogue() {
// /**
// * empty.
// */
// }
//
// /**
// * Constructs a new {@code ShelfDialogue} {@code Object}.
// * @param player the player.
// */
// public ShelfDialogue(Player player) {
// super(player);
// }
//
// @Override
// public DialoguePlugin newInstance(Player player) {
// return new ShelfDialogue(player);
// }
//
// @Override
// public boolean open(Object... args) {
// int id = (int) args[0];
// switch (id) {
// case 13545:// wood 1
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup");
// stage = 1;
// break;
// case 13546:// wood 2
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass");
// stage = 1;
// break;
// case 13547:// wood 3
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Cake tin");
// stage = 1;
// break;
// case 13548:// oak 1
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Clay cup", "Empty beer glass", "Bowl");
// stage = 2;
// break;
// case 13549:// oak 2
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
// stage = 3;
// break;
// case 13550:// teak 1
// case 13551:
// interpreter.sendOptions("Select an Option", "Kettle", "Teapot", "Porcelain cup", "Empty beer glass", "More Options");
// stage = 5;
// break;
// }
// return true;
// }
//
// @Override
// public boolean handle(int interfaceId, int buttonId) {
// if (player.getInventory().freeSlots() < 1) {
// player.sendMessage("You need at least one free inventory space to take from the shelves.");
// end();
// return true;
// }
// switch (stage) {
// case 1:// all wood shelves
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
// break;
// case 3:
// end();
// player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
// break;
// case 4:
// end();
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
// break;
// case 5:
// end();
// player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
// break;
// }
// break;
// case 2:// Oak shelf #1
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
// break;
// case 3:
// end();
// player.getInventory().add(new Item(Items.EMPTY_CUP_7728, 1));
// break;
// case 4:
// end();
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
// break;
// case 5:
// end();
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
// break;
// }
// break;
// case 3:// Oak shelves #2 only
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
// break;
// case 3:
// end();
// player.getInventory().add(new Item(Items.PORCELAIN_CUP_4244, 1));
// break;
// case 4:
// end();
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
// break;
// case 5:
// interpreter.sendOptions("Select an Option", "Bowl", "Cake tin");
// stage = 4;
// break;
// }
// break;
// case 4:// Oak shelves #2 only
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.CAKE_TIN_1887, 1));
// break;
// }
// case 5:// teak shelves
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.KETTLE_7688, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.TEAPOT_7702, 1));
// break;
// case 3:
// end();
// player.getInventory().add(new Item(Items.PORCELAIN_CUP_7735, 1));
// break;
// case 4:
// end();
// player.getInventory().add(new Item(Items.BEER_GLASS_1919, 1));
// break;
// case 5:
// interpreter.sendOptions("Select an Option", "Bowl", "Pie dish", "Empty pot");
// stage = 6;
// break;
// }
// break;
// case 6:// teak shelves
// switch (buttonId) {
// case 1:
// end();
// player.getInventory().add(new Item(Items.BOWL_1923, 1));
// break;
// case 2:
// end();
// player.getInventory().add(new Item(Items.PIE_DISH_2313, 1));
// break;
// case 3:
// end();
// player.getInventory().add(new Item(Items.EMPTY_POT_1931, 1));
// break;
// }
// break;
// }
// return true;
// }
//
// @Override
// public int[] getIds() {
// return new int[] { 778341 };
// }
// }
// }