use of com.lilithsthrone.game.settings.KeyboardAction in project liliths-throne-public by Innoxia.
the class MainController method manageMainListeners.
private void manageMainListeners() {
document = (Document) webEngine.executeScript("document");
EventListenerDataMap.put(document, new ArrayList<>());
String id = "";
if (flashMessageColour != null && flashMessageText != null) {
Main.game.flashMessage(flashMessageColour, flashMessageText);
flashMessageColour = null;
flashMessageText = null;
}
if (((EventTarget) document.getElementById("copy-content-button")) != null) {
addEventListener(document, "copy-content-button", "click", copyDialogueButtonListener, false);
addEventListener(document, "copy-content-button", "mousemove", moveTooltipListener, false);
addEventListener(document, "copy-content-button", "mouseleave", hideTooltipListener, false);
addEventListener(document, "copy-content-button", "mouseenter", copyInfoListener, false);
}
if (((EventTarget) document.getElementById("export-character-button")) != null) {
addEventListener(document, "export-character-button", "click", e -> {
if (Main.game.getCurrentDialogueNode().equals(CharactersPresentDialogue.MENU)) {
Game.exportCharacter(CharactersPresentDialogue.characterViewed);
} else {
Game.exportCharacter(Main.game.getPlayer());
}
Main.game.flashMessage(Colour.GENERIC_EXCELLENT, "Character Exported!");
}, false);
addEventListener(document, "export-character-button", "mousemove", moveTooltipListener, false);
addEventListener(document, "export-character-button", "mouseleave", hideTooltipListener, false);
addEventListener(document, "export-character-button", "mouseenter", new TooltipInformationEventListener().setInformation("Export Character", "Export the currently displayed character to the 'data/characters' folder. Exported characters can be imported at the auction block in Slaver Alley."), false);
}
if (Main.game.getCurrentDialogueNode().equals(DebugDialogue.SPAWN_MENU)) {
id = "";
for (AbstractClothingType clothingType : DebugDialogue.clothingTotal) {
id = clothingType.getId() + "_SPAWN";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addClothing(AbstractClothingType.generateClothing(clothingType));
this.updateUIRightPanel();
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el = new InventoryTooltipEventListener().setGenericClothing(clothingType, clothingType.getAvailablePrimaryColours().get(0));
addEventListener(document, id, "mouseenter", el, false);
}
}
for (AbstractWeaponType weaponType : DebugDialogue.weaponsTotal) {
id = weaponType.getId() + "_SPAWN";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addWeapon(AbstractWeaponType.generateWeapon(weaponType));
this.updateUIRightPanel();
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el = new InventoryTooltipEventListener().setGenericWeapon(weaponType, weaponType.getAvailableDamageTypes().get(0));
addEventListener(document, id, "mouseenter", el, false);
}
}
for (AbstractItemType itemType : DebugDialogue.itemsTotal) {
id = itemType.getId() + "_SPAWN";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getActiveWorld().getCell(Main.game.getPlayer().getLocation()).getInventory().addItem(AbstractItemType.generateItem(itemType));
this.updateUIRightPanel();
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el = new InventoryTooltipEventListener().setGenericItem(itemType);
addEventListener(document, id, "mouseenter", el, false);
}
}
for (InventorySlot slot : InventorySlot.values()) {
id = slot + "_SPAWN_SELECT";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
DebugDialogue.activeSlot = slot;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
id = "ITEM_SPAWN_SELECT";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
DebugDialogue.activeSlot = null;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
if (Main.game.getCurrentDialogueNode() == CharacterCreation.BACKGROUND_SELECTION_MENU) {
for (History history : History.values()) {
id = "HISTORY_" + history;
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setPerk(history.getAssociatedPerk(), Main.game.getPlayer()), false);
((EventTarget) document.getElementById(id)).addEventListener("click", event -> {
Main.game.getPlayer().setHistory(history);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
if (Main.game.isStarted()) {
id = "";
// Equipped inventory:
// For weapons:
InventorySlot[] inventorySlots = { InventorySlot.WEAPON_MAIN, InventorySlot.WEAPON_OFFHAND };
for (InventorySlot invSlot : inventorySlots) {
id = "PLAYER_" + invSlot.toString() + "Slot";
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponEquipped(Main.game.getPlayer(), invSlot);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, Main.game.getPlayer());
addEventListener(document, id, "mouseenter", el2, false);
}
id = "NPC_" + invSlot.toString() + "Slot";
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponEquipped(InventoryDialogue.getInventoryNPC(), invSlot);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "mouseenter", el2, false);
}
id = "NPC_VIEW_" + invSlot.toString() + "Slot";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, CharactersPresentDialogue.characterViewed);
addEventListener(document, id, "mouseenter", el2, false);
}
}
// For all equipped clothing slots:
for (InventorySlot invSlot : InventorySlot.values()) {
id = "PLAYER_" + invSlot.toString() + "Slot";
if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingEquipped(Main.game.getPlayer(), invSlot);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, Main.game.getPlayer());
addEventListener(document, id, "mouseenter", el2, false);
}
}
id = "NPC_" + invSlot.toString() + "Slot";
if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingEquipped(InventoryDialogue.getInventoryNPC(), invSlot);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "mouseenter", el2, false);
}
}
id = "NPC_VIEW_" + invSlot.toString() + "Slot";
if (invSlot != InventorySlot.WEAPON_MAIN && invSlot != InventorySlot.WEAPON_OFFHAND) {
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setInventorySlot(invSlot, CharactersPresentDialogue.characterViewed);
addEventListener(document, id, "mouseenter", el2, false);
}
}
}
// Gifts:
if (Main.game.getCurrentDialogueNode().equals(GiftDialogue.GIFT_DIALOGUE)) {
for (Entry<AbstractWeapon, Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
id = "GIFT_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("Give Gift", ":3", GiftDialogue.getDialogueToProceedTo()) {
@Override
public void effects() {
Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(), true));
Main.game.getPlayer().removeWeapon(entry.getKey());
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setWeapon(entry.getKey(), Main.game.getPlayer());
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractItem, Integer> entry : Main.game.getPlayer().getMapOfDuplicateItems().entrySet()) {
id = "GIFT_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("Give Gift", ":3", GiftDialogue.getDialogueToProceedTo()) {
@Override
public void effects() {
Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(), true));
Main.game.getPlayer().removeItem(entry.getKey());
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setItem(entry.getKey(), Main.game.getPlayer(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractClothing, Integer> entry : Main.game.getPlayer().getMapOfDuplicateClothing().entrySet()) {
id = "GIFT_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("Give Gift", ":3", GiftDialogue.getDialogueToProceedTo()) {
@Override
public void effects() {
Main.game.getTextStartStringBuilder().append(GiftDialogue.getReceiver().getGiftReaction(entry.getKey(), true));
Main.game.getPlayer().removeClothing(entry.getKey());
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setClothing(entry.getKey(), Main.game.getPlayer(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
}
// Player:
for (Entry<AbstractWeapon, Integer> entry : Main.game.getPlayer().getMapOfDuplicateWeapons().entrySet()) {
id = "PLAYER_WEAPON_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(), Main.game.getPlayer());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setWeapon(entry.getKey(), Main.game.getPlayer());
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractItem, Integer> entry : Main.game.getPlayer().getMapOfDuplicateItems().entrySet()) {
id = "PLAYER_ITEM_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setItemInventory(entry.getKey(), Main.game.getPlayer());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setItem(entry.getKey(), Main.game.getPlayer(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractClothing, Integer> entry : Main.game.getPlayer().getMapOfDuplicateClothing().entrySet()) {
id = "PLAYER_CLOTHING_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(), Main.game.getPlayer());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setClothing(entry.getKey(), Main.game.getPlayer(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
// Partner:
if (InventoryDialogue.getInventoryNPC() != null) {
String idModifier = "NPC_" + InventoryDialogue.getInventoryNPC().getId() + "_";
for (Entry<AbstractWeapon, Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateWeapons().entrySet()) {
id = idModifier + "WEAPON_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(), InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setWeapon(entry.getKey(), InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractClothing, Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateClothing().entrySet()) {
id = idModifier + "CLOTHING_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(), InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setClothing(entry.getKey(), InventoryDialogue.getInventoryNPC(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (Entry<AbstractItem, Integer> entry : InventoryDialogue.getInventoryNPC().getMapOfDuplicateItems().entrySet()) {
id = idModifier + "ITEM_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setItemInventory(entry.getKey(), InventoryDialogue.getInventoryNPC());
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setItem(entry.getKey(), InventoryDialogue.getInventoryNPC(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
// Floor:
} else {
// Weapons on floor:
for (Entry<AbstractWeapon, Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateWeapons().entrySet()) {
id = "WEAPON_FLOOR_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponInventory(entry.getKey(), null);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setWeapon(entry.getKey(), null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
// Clothing on floor:
for (Entry<AbstractClothing, Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateClothing().entrySet()) {
id = "CLOTHING_FLOOR_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingInventory(entry.getKey(), null);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setClothing(entry.getKey(), null, null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
// Items on floor:
for (Entry<AbstractItem, Integer> entry : Main.game.getPlayerCell().getInventory().getMapOfDuplicateItems().entrySet()) {
id = "ITEM_FLOOR_" + entry.getKey().hashCode();
if (((EventTarget) document.getElementById(id)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setItemInventory(entry.getKey(), null);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setItem(entry.getKey(), null, null);
addEventListener(document, id, "mouseenter", el2, false);
}
}
}
if (InventoryDialogue.getNPCInventoryInteraction() == InventoryInteraction.TRADING) {
if (InventoryDialogue.getInventoryNPC() != null) {
// Buyback panel:
for (int i = Main.game.getPlayer().getBuybackStack().size() - 1; i >= 0; i--) {
if (((EventTarget) document.getElementById("WEAPON_" + i)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setWeaponInventory((AbstractWeapon) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC(), i);
((EventTarget) document.getElementById("WEAPON_" + i)).addEventListener("click", el, false);
addEventListener(document, "WEAPON_" + i, "mousemove", moveTooltipListener, false);
addEventListener(document, "WEAPON_" + i, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setWeapon((AbstractWeapon) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC());
((EventTarget) document.getElementById("WEAPON_" + i)).addEventListener("mouseenter", el2, false);
}
if (((EventTarget) document.getElementById("CLOTHING_" + i)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setClothingInventory((AbstractClothing) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC(), i);
addEventListener(document, "CLOTHING_" + i, "click", el, false);
addEventListener(document, "CLOTHING_" + i, "mousemove", moveTooltipListener, false);
addEventListener(document, "CLOTHING_" + i, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setClothing((AbstractClothing) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC(), null);
addEventListener(document, "CLOTHING_" + i, "mouseenter", el2, false);
}
if (((EventTarget) document.getElementById("ITEM_" + i)) != null) {
InventorySelectedItemEventListener el = new InventorySelectedItemEventListener().setItemInventory((AbstractItem) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC(), i);
addEventListener(document, "ITEM_" + i, "click", el, false);
addEventListener(document, "ITEM_" + i, "mousemove", moveTooltipListener, false);
addEventListener(document, "ITEM_" + i, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setItem((AbstractItem) Main.game.getPlayer().getBuybackStack().get(i).getAbstractItemSold(), InventoryDialogue.getInventoryNPC(), null);
addEventListener(document, "ITEM_" + i, "mouseenter", el2, false);
}
}
}
}
for (TFEssence essence : TFEssence.values()) {
if (((EventTarget) document.getElementById("ESSENCE_" + essence.hashCode())) != null) {
addEventListener(document, "ESSENCE_" + essence.hashCode(), "mousemove", moveTooltipListener, false);
addEventListener(document, "ESSENCE_" + essence.hashCode(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setEssence(essence);
addEventListener(document, "ESSENCE_" + essence.hashCode(), "mouseenter", el2, false);
}
if (((EventTarget) document.getElementById("ESSENCE_COST_" + essence.hashCode())) != null) {
addEventListener(document, "ESSENCE_COST_" + essence.hashCode(), "mousemove", moveTooltipListener, false);
addEventListener(document, "ESSENCE_COST_" + essence.hashCode(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setEssence(essence);
addEventListener(document, "ESSENCE_COST_" + essence.hashCode(), "mouseenter", el2, false);
}
}
// Tooltips:
if (((EventTarget) document.getElementById("MOD_PRIMARY_ENCHANTING")) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().setPrimaryModifier(TFModifier.NONE);
addEventListener(document, "MOD_PRIMARY_ENCHANTING", "click", el, false);
addEventListener(document, "MOD_PRIMARY_ENCHANTING", "mousemove", moveTooltipListener, false);
addEventListener(document, "MOD_PRIMARY_ENCHANTING", "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.primaryMod);
addEventListener(document, "MOD_PRIMARY_ENCHANTING", "mouseenter", el2, false);
}
if (((EventTarget) document.getElementById("MOD_SECONDARY_ENCHANTING")) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().setSecondaryModifier(TFModifier.NONE);
addEventListener(document, "MOD_SECONDARY_ENCHANTING", "click", el, false);
addEventListener(document, "MOD_SECONDARY_ENCHANTING", "mousemove", moveTooltipListener, false);
addEventListener(document, "MOD_SECONDARY_ENCHANTING", "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setTFModifier(EnchantmentDialogue.secondaryMod);
addEventListener(document, "MOD_SECONDARY_ENCHANTING", "mouseenter", el2, false);
}
for (TFPotency potency : TFPotency.values()) {
id = "POTENCY_" + potency;
if (((EventTarget) document.getElementById(id)) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().setPotency(potency);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setTFPotency(potency);
addEventListener(document, id, "mouseenter", el2, false);
}
}
for (int effectCount = 0; effectCount < EnchantmentDialogue.effects.size(); effectCount++) {
id = "DELETE_EFFECT_" + effectCount;
if (((EventTarget) document.getElementById(id)) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().removeEffect(effectCount);
addEventListener(document, id, "click", el, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Delete Effect", "");
addEventListener(document, id, "mouseenter", el2, false);
}
}
id = "LIMIT_MINIMUM";
if (((EventTarget) document.getElementById(id)) != null) {
if (EnchantmentDialogue.limit > 0) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(0);
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit == 0 ? "Minimum Limit Reached" : "Limit Minimum"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "LIMIT_DECREASE_LARGE";
if (((EventTarget) document.getElementById(id)) != null) {
if (EnchantmentDialogue.limit > 0) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(Math.max(0, EnchantmentDialogue.limit - (EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod) / 10)));
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit == 0 ? "Minimum Limit Reached" : "Large Limit Decrease"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "LIMIT_DECREASE";
if (((EventTarget) document.getElementById(id)) != null) {
if (EnchantmentDialogue.limit > 0) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(EnchantmentDialogue.limit - 1);
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit == 0 ? "Minimum Limit Reached" : "Limit Decrease"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "LIMIT_INCREASE";
if (((EventTarget) document.getElementById(id)) != null) {
if (EnchantmentDialogue.limit < EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod)) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(EnchantmentDialogue.limit + 1);
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit < EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod) ? "Limit Increase" : "Maximum Limit Reached"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "LIMIT_INCREASE_LARGE";
if (((EventTarget) document.getElementById(id)) != null) {
int limit = EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod);
if (EnchantmentDialogue.limit < limit) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(Math.min(limit, EnchantmentDialogue.limit + (limit / 10)));
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit < EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod) ? "Large Limit Increase" : "Maximum Limit Reached"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "LIMIT_MAXIMUM";
if (((EventTarget) document.getElementById(id)) != null) {
if (EnchantmentDialogue.limit < EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod)) {
EnchantmentEventListener el = new EnchantmentEventListener().setLimit(EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod));
addEventListener(document, id, "click", el, false);
}
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation((EnchantmentDialogue.limit < EnchantmentDialogue.ingredient.getEnchantmentEffect().getLimits(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod) ? "Set Limit To Maximum" : "Maximum Limit Reached"), "");
addEventListener(document, id, "mouseenter", el2, false);
}
// Ingredient icon:
if (((EventTarget) document.getElementById("INGREDIENT_ENCHANTING")) != null) {
((EventTarget) document.getElementById("INGREDIENT_ENCHANTING")).addEventListener("click", e -> {
Main.game.setResponseTab(1);
if (EnchantmentDialogue.ingredient instanceof AbstractItem) {
Main.game.setContent(new Response("Back", "Stop enchanting.", InventoryDialogue.ITEM_INVENTORY) {
@Override
public void effects() {
EnchantmentDialogue.resetEnchantmentVariables();
}
});
} else if (EnchantmentDialogue.ingredient instanceof AbstractClothing) {
Main.game.setContent(new Response("Back", "Stop enchanting.", InventoryDialogue.CLOTHING_INVENTORY) {
@Override
public void effects() {
EnchantmentDialogue.resetEnchantmentVariables();
}
});
} else {
Main.game.setContent(new Response("Back", "Stop enchanting.", InventoryDialogue.WEAPON_INVENTORY) {
@Override
public void effects() {
EnchantmentDialogue.resetEnchantmentVariables();
}
});
}
}, false);
addEventListener(document, "INGREDIENT_ENCHANTING", "mousemove", moveTooltipListener, false);
addEventListener(document, "INGREDIENT_ENCHANTING", "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2;
if (EnchantmentDialogue.ingredient instanceof AbstractItem) {
el2 = new InventoryTooltipEventListener().setItem((AbstractItem) EnchantmentDialogue.ingredient, Main.game.getPlayer(), null);
} else if (EnchantmentDialogue.ingredient instanceof AbstractClothing) {
el2 = new InventoryTooltipEventListener().setClothing((AbstractClothing) EnchantmentDialogue.ingredient, Main.game.getPlayer(), null);
} else {
el2 = new InventoryTooltipEventListener().setWeapon((AbstractWeapon) EnchantmentDialogue.ingredient, Main.game.getPlayer());
}
addEventListener(document, "INGREDIENT_ENCHANTING", "mouseenter", el2, false);
}
// Output icon:
if (((EventTarget) document.getElementById("OUTPUT_ENCHANTING")) != null) {
((EventTarget) document.getElementById("OUTPUT_ENCHANTING")).addEventListener("click", e -> {
if (EnchantmentDialogue.effects.isEmpty()) {
} else if (EnchantmentDialogue.canAffordCost(EnchantmentDialogue.ingredient, EnchantmentDialogue.effects)) {
Main.game.setContent(new ResponseEffectsOnly("Craft", "Craft '" + EnchantingUtils.getPotionName(EnchantmentDialogue.ingredient, EnchantmentDialogue.effects) + "'.") {
@Override
public void effects() {
EnchantmentDialogue.craftItem(EnchantmentDialogue.ingredient, EnchantmentDialogue.effects);
if ((EnchantmentDialogue.previousIngredient instanceof AbstractItem ? Main.game.getPlayer().hasItem((AbstractItem) EnchantmentDialogue.previousIngredient) : true) && (EnchantmentDialogue.previousIngredient instanceof AbstractClothing ? Main.game.getPlayer().hasClothing((AbstractClothing) EnchantmentDialogue.previousIngredient) : true) && (EnchantmentDialogue.previousIngredient instanceof AbstractWeapon ? Main.game.getPlayer().hasWeapon((AbstractWeapon) EnchantmentDialogue.previousIngredient) : true)) {
EnchantmentDialogue.ingredient = EnchantmentDialogue.previousIngredient;
Main.game.setContent(new Response("", "", EnchantmentDialogue.ENCHANTMENT_MENU));
} else {
Main.game.setContent(new Response("", "", InventoryDialogue.INVENTORY_MENU));
}
// EnchantmentDialogue.craftItem(EnchantmentDialogue.ingredient, EnchantmentDialogue.effects);
//
// if(EnchantmentDialogue.ingredient instanceof AbstractItem) {
// if(Main.game.getPlayer().hasItem((AbstractItem) EnchantmentDialogue.previousIngredient)) {
// EnchantmentDialogue.ingredient = EnchantmentDialogue.previousIngredient;
// Main.game.setContent(new Response("", "", EnchantmentDialogue.ENCHANTMENT_MENU));
// } else {
// Main.game.setContent(new Response("", "", InventoryDialogue.INVENTORY_MENU));
// }
//
// } else if(EnchantmentDialogue.ingredient instanceof AbstractClothing) {
// if(Main.game.getPlayer().hasClothing((AbstractClothing) EnchantmentDialogue.previousIngredient)) {
// EnchantmentDialogue.ingredient = EnchantmentDialogue.previousIngredient;
// Main.game.setContent(new Response("", "", EnchantmentDialogue.ENCHANTMENT_MENU));
// } else {
// Main.game.setContent(new Response("", "", InventoryDialogue.INVENTORY_MENU));
// }
//
// } else if(EnchantmentDialogue.ingredient instanceof AbstractWeapon) {
// if(Main.game.getPlayer().hasWeapon((AbstractWeapon) EnchantmentDialogue.previousIngredient)) {
// EnchantmentDialogue.ingredient = EnchantmentDialogue.previousIngredient;
// Main.game.setContent(new Response("", "", EnchantmentDialogue.ENCHANTMENT_MENU));
// } else {
// Main.game.setContent(new Response("", "", InventoryDialogue.INVENTORY_MENU));
// }
// }
}
});
}
}, false);
addEventListener(document, "OUTPUT_ENCHANTING", "mousemove", moveTooltipListener, false);
addEventListener(document, "OUTPUT_ENCHANTING", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Craft", "Click to craft this item!");
addEventListener(document, "OUTPUT_ENCHANTING", "mouseenter", el2, false);
}
// Adding an effect:
id = "ENCHANT_ADD_BUTTON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (EnchantmentDialogue.ingredient.getEnchantmentEffect().getEffectsDescription(EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod, EnchantmentDialogue.potency, EnchantmentDialogue.limit, Main.game.getPlayer(), Main.game.getPlayer()) == null) {
} else {
Main.game.setContent(new Response("Add", "Add the effect.", EnchantmentDialogue.ENCHANTMENT_MENU) {
@Override
public void effects() {
EnchantmentDialogue.effects.add(new ItemEffect(EnchantmentDialogue.ingredient.getEnchantmentEffect(), EnchantmentDialogue.primaryMod, EnchantmentDialogue.secondaryMod, EnchantmentDialogue.potency, EnchantmentDialogue.limit));
}
});
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Add Effect", "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "ENCHANT_ADD_BUTTON_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Add Effect", EnchantmentDialogue.effects.size() >= EnchantmentDialogue.ingredient.getEnchantmentLimit() ? "You have already added the maximum number of effects for this item!" : "");
addEventListener(document, id, "mouseenter", el2, false);
}
// Choosing a primary modifier:
if (EnchantmentDialogue.ingredient != null) {
for (TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getPrimaryModifiers()) {
if (((EventTarget) document.getElementById("MOD_PRIMARY_" + tfMod.hashCode())) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().setPrimaryModifier(tfMod);
addEventListener(document, "MOD_PRIMARY_" + tfMod.hashCode(), "click", el, false);
addEventListener(document, "MOD_PRIMARY_" + tfMod.hashCode(), "mousemove", moveTooltipListener, false);
addEventListener(document, "MOD_PRIMARY_" + tfMod.hashCode(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setTFModifier(tfMod);
addEventListener(document, "MOD_PRIMARY_" + tfMod.hashCode(), "mouseenter", el2, false);
}
}
}
// Choosing a secondary modifier:
if (EnchantmentDialogue.ingredient != null) {
for (TFModifier tfMod : EnchantmentDialogue.ingredient.getEnchantmentEffect().getSecondaryModifiers(EnchantmentDialogue.primaryMod)) {
if (((EventTarget) document.getElementById("MOD_SECONDARY_" + tfMod.hashCode())) != null) {
EnchantmentEventListener el = new EnchantmentEventListener().setSecondaryModifier(tfMod);
addEventListener(document, "MOD_SECONDARY_" + tfMod.hashCode(), "click", el, false);
addEventListener(document, "MOD_SECONDARY_" + tfMod.hashCode(), "mousemove", moveTooltipListener, false);
addEventListener(document, "MOD_SECONDARY_" + tfMod.hashCode(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setTFModifier(tfMod);
addEventListener(document, "MOD_SECONDARY_" + tfMod.hashCode(), "mouseenter", el2, false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_MANAGEMENT) {
for (Cell c : SlaveryManagementDialogue.importantCells) {
id = c.getId();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
SlaveryManagementDialogue.cellToInspect = c;
}
@Override
public DialogueNodeOld getNextDialogue() {
return SlaveryManagementDialogue.ROOM_UPGRADES;
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Room", "Open this room's management screen.");
addEventListener(document, id, "mouseenter", el, false);
}
id = c.getId() + "_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Room", "You are not able to manage this room!");
addEventListener(document, id, "mouseenter", el, false);
}
id = c.getId() + "_PRESENT";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
SlaveryManagementDialogue.cellToInspect = c;
}
@Override
public DialogueNodeOld getNextDialogue() {
return SlaveryManagementDialogue.ROOM_UPGRADES;
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Room", "Open this room's management screen.");
addEventListener(document, id, "mouseenter", el, false);
}
id = c.getId() + "_PRESENT_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Room", "You are not able to manage this room!");
addEventListener(document, id, "mouseenter", el, false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES) {
for (PlaceUpgrade placeUpgrade : PlaceUpgrade.values()) {
id = placeUpgrade + "_BUY";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (placeUpgrade != PlaceUpgrade.LILAYA_ARTHUR_ROOM) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
SlaveryManagementDialogue.cellToInspect.getPlace().addPlaceUpgrade(placeUpgrade);
Main.game.getPlayer().incrementMoney(-placeUpgrade.getInstallCost());
}
});
} else {
Main.game.setContent(new Response("", "", LilayaHomeGeneric.ROOM_ARTHUR_INSTALLATION) {
@Override
public void effects() {
Main.game.getArthur().setLocation(Main.game.getPlayer().getWorldLocation(), Main.game.getPlayer().getLocation(), true);
SlaveryManagementDialogue.cellToInspect.getPlace().addPlaceUpgrade(placeUpgrade);
Main.game.getDialogueFlags().setFlag(DialogueFlagValue.arthursRoomInstalled, true);
}
});
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Purchase Modification", "This will cost: " + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "</br>" + SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(), placeUpgrade));
addEventListener(document, id, "mouseenter", el, false);
}
id = placeUpgrade + "_BUY_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Purchase Modification", "This will cost: " + UtilText.formatAsMoney(placeUpgrade.getInstallCost()) + "</br>" + SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(), placeUpgrade));
addEventListener(document, id, "mouseenter", el, false);
}
id = placeUpgrade + "_SELL";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
SlaveryManagementDialogue.cellToInspect.getPlace().removePlaceUpgrade(placeUpgrade);
Main.game.getPlayer().incrementMoney(-placeUpgrade.getRemovalCost());
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Remove Modification", "This will cost: " + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "</br>" + SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(), placeUpgrade));
addEventListener(document, id, "mouseenter", el, false);
}
id = placeUpgrade + "_SELL_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Remove Modification", (placeUpgrade.isCoreRoomUpgrade() ? "You cannot directly remove core upgrades. Instead, you'll have to purchase a different core modification in order to remove the current one." : "This will cost: " + UtilText.formatAsMoney(placeUpgrade.getRemovalCost()) + "</br>" + SlaveryManagementDialogue.getPurchaseAvailabilityTooltipText(SlaveryManagementDialogue.cellToInspect.getPlace(), placeUpgrade)));
addEventListener(document, id, "mouseenter", el, false);
}
}
id = "rename_room_button";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('nameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('nameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename Room", "Rename this room to whatever you've entered in the text box.", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
SlaveryManagementDialogue.cellToInspect.getPlace().setName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
});
}
}
}, false);
}
}
if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVERY_OVERVIEW) {
id = "PREVIOUS_DAY";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
SlaveryManagementDialogue.incrementDayNumber(-1);
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "NEXT_DAY";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
SlaveryManagementDialogue.incrementDayNumber(1);
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
if (Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected() != null) {
id = Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "_RENAME";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('slaveNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('slaveNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
if (Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32)
unsuitableName = true;
else {
unsuitableName = false;
}
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setName(new NameTriplet(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent()));
}
});
}
}
}, false);
}
id = Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().getId() + "_CALLS_PLAYER";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('slaveToPlayerNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('slaveToPlayerNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
});
}
}
}, false);
}
id = "GLOBAL_CALLS_PLAYER";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('slaveToPlayerNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('slaveToPlayerNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
for (String id : Main.game.getPlayer().getSlavesOwned()) {
Main.game.getNPCById(id).setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
}
});
}
}
}, false);
}
// Job hours:
for (int i = 0; i < 24; i++) {
allocateWorkTime(i);
}
for (SlaveJobHours preset : SlaveJobHours.values()) {
id = preset + "_TIME";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().resetWorkHours();
for (int hour = preset.getStartHour(); hour < preset.getStartHour() + preset.getLength(); hour++) {
if (hour >= 24) {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour - 24, true);
} else {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setWorkHour(hour, true);
}
}
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Set Preset Work Hours", preset.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = preset + "_TIME_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Set Preset Work Hours", "You can't assign hours to a slave who is idle. Assign them a job first.");
addEventListener(document, id, "mouseenter", el, false);
}
}
// Jobs:
for (SlaveJob job : SlaveJob.values()) {
id = job + "_ASSIGN";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setSlaveJob(job);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Assign Job", job.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = job + "_ASSIGN_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Assign Job", UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(), job.getAvailabilityText(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
addEventListener(document, id, "mouseenter", el, false);
}
for (SlaveJobSetting setting : job.getMutualSettings()) {
id = setting + "_ADD";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Apply Setting", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = setting + "_REMOVE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(setting);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Remove Setting", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = setting + "_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Apply Setting", UtilText.parse(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected(), "You'll need to assign this job to [npc.name] before you can apply any settings."));
addEventListener(document, id, "mouseenter", el, false);
}
}
for (Entry<String, List<SlaveJobSetting>> entry : job.getMutuallyExclusiveSettings().entrySet()) {
for (SlaveJobSetting setting : entry.getValue()) {
id = setting + "_TOGGLE_ADD";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
for (SlaveJobSetting settingRem : entry.getValue()) {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlaveJobSettings(settingRem);
}
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlaveJobSettings(setting);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Apply Setting", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = setting + "_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Setting Applied", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
}
}
}
// Permissions:
for (SlavePermission permission : SlavePermission.values()) {
for (SlavePermissionSetting setting : permission.getSettings()) {
id = setting + "_ADD";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().addSlavePermissionSetting(permission, setting);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Apply Setting", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = setting + "_REMOVE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().removeSlavePermissionSetting(permission, setting);
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected())));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Remove Setting", setting.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = setting + "_REMOVE_ME";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Remove Setting", "You cannot remove mutually exclusive settings! Choose a different option instead.");
addEventListener(document, id, "mouseenter", el, false);
}
}
}
}
for (String slaveId : Main.game.getPlayer().getSlavesOwned()) {
id = slaveId;
NPC slave = (NPC) Main.game.getNPCById(slaveId);
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Inspect Slave", UtilText.parse(slave, "Inspect [npc.name]."));
addEventListener(document, id, "mouseenter", el, false);
}
// TODO
id = slaveId + "_JOB";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlaveJobsDialogue(slave)));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Job", UtilText.parse(slave, "Set [npc.name]'s job and work hours."));
addEventListener(document, id, "mouseenter", el, false);
}
// TODO
id = slaveId + "_PERMISSIONS";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementSlavePermissionsDialogue(slave)));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Permissions", UtilText.parse(slave, "Manage [npc.name]'s permissions."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_INVENTORY";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.mainController.openInventory(slave, InventoryInteraction.FULL_MANAGEMENT);
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Inventory", UtilText.parse(slave, "Manage [npc.name]'s inventory."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRANSFER";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
slave.setHomeLocation(Main.game.getPlayer().getWorldLocation(), Main.game.getPlayer().getLocation());
slave.returnToHome();
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Move Slave Here", UtilText.parse(slave, "Move [npc.name] to your current location."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRANSFER_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Move Slave Here", UtilText.parse(slave, "You cannot move [npc.name] to this location, as there's no room for [npc.herHim] here."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_SELL";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getPlayer().incrementMoney((int) (slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()));
Main.game.getDialogueFlags().getSlaveTrader().addSlave(slave);
slave.setLocation(Main.game.getDialogueFlags().getSlaveTrader().getWorldLocation(), Main.game.getDialogueFlags().getSlaveTrader().getLocation(), true);
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Sell Slave", UtilText.parse(slave, "[npc.Name] has a value of " + UtilText.formatAsMoney(slave.getValueAsSlave(), "b", Colour.GENERIC_GOOD) + "</br>" + "However, " + Main.game.getDialogueFlags().getSlaveTrader().getName() + " will buy [npc.herHim] for " + UtilText.formatAsMoney((int) (slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getBuyModifier()), "b", Colour.GENERIC_ARCANE) + "."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_SELL_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Sell Slave", UtilText.parse(slave, "You cannot sell [npc.name], as there's nobody here to sell [npc.herHim] to."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_COSMETICS";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.SLAVE_MANAGEMENT_COSMETICS_HAIR) {
@Override
public void effects() {
Main.game.getDialogueFlags().setSlaveryManagerSlaveSelected(slave);
BodyChanging.setTarget(slave);
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Send Slave to Kate", UtilText.parse(slave, "Send [npc.name] to Kate's beauty salon, 'Succubi's Secrets', to get [npc.her] appearance changed."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_COSMETICS_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Send Slave to Kate", UtilText.parse(slave, "You haven't met Kate yet!"));
addEventListener(document, id, "mouseenter", el, false);
}
}
if (Main.game.getDialogueFlags().getSlaveTrader() != null) {
for (String slaveId : Main.game.getDialogueFlags().getSlaveTrader().getSlavesOwned()) {
id = slaveId + "_TRADER";
NPC slave = (NPC) Main.game.getNPCById(slaveId);
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", SlaveryManagementDialogue.getSlaveryManagementInspectSlaveDialogue(slave)));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Inspect Slave", UtilText.parse(slave, "Take a detailed look at [npc.name]."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRADER_JOB";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Job", UtilText.parse(slave, "You cannot manage [npc.name]'s job, as you don't own [npc.herHim]!"));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRADER_PERMISSIONS";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Permissions", UtilText.parse(slave, "You cannot manage [npc.name]'s permissions, as you don't own [npc.herHim]!"));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRADER_INVENTORY";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Manage Slave's Inventory", UtilText.parse(slave, "You cannot manage [npc.name]'s inventory, as you don't own [npc.herHim]!"));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRADER_TRANSFER";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Move Slave To Here", UtilText.parse(slave, "You cannot move [npc.name] to this location, as you don't own [npc.herHim], as well as due to the fact that [npc.she]'s already here!"));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_BUY";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getPlayer().incrementMoney(-(int) (slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()));
Main.game.getPlayer().addSlave(slave);
slave.setLocation(WorldType.SLAVER_ALLEY, PlaceType.SLAVER_ALLEY_SLAVERY_ADMINISTRATION, true);
}
});
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Buy Slave", UtilText.parse(slave, "[npc.Name] has a value of " + UtilText.formatAsMoney(slave.getValueAsSlave(), "b", Colour.GENERIC_GOOD) + "</br>" + "However, " + Main.game.getDialogueFlags().getSlaveTrader().getName() + " will sell [npc.herHim] for " + UtilText.formatAsMoney((int) (slave.getValueAsSlave() * Main.game.getDialogueFlags().getSlaveTrader().getSellModifier()), "b", Colour.GENERIC_ARCANE) + "."));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_BUY_DISABLED";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Buy Slave", UtilText.parse(slave, "You cannot buy [npc.name], as you don't have enough money!"));
addEventListener(document, id, "mouseenter", el, false);
}
id = slaveId + "_TRADER_COSMETICS";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Send Slave to Kate", UtilText.parse(slave, "You can't send a slave you don't own to Kate!"));
addEventListener(document, id, "mouseenter", el, false);
}
}
}
if (Main.game.getActiveNPC() != null) {
id = Main.game.getActiveNPC().getId() + "_PET_NAME";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('offspringPetNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('offspringPetNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
if (Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 2 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32)
unsuitableName = true;
else {
unsuitableName = false;
}
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getActiveNPC().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
});
}
}
}, false);
}
}
if (!Main.game.isInNewWorld()) {
for (Month month : Month.values()) {
id = "STARTING_MONTH_" + month;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setStartingDateMonth(month);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Sex experiences:
for (int i : CharacterModificationUtils.soSilly) {
// Given:
id = "HANDJOBS_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.FINGER, OrificeType.URETHRA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FINGERINGS_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.FINGER, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "BLOWJOBS_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.PENIS, OrificeType.MOUTH), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CUNNILINGUS_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.TONGUE, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "VAGINAL_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.PENIS, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "ANAL_GIVEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.PENIS, OrificeType.ANUS), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Received:
id = "HANDJOBS_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.FINGER, OrificeType.URETHRA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FINGERINGS_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.FINGER, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "BLOWJOBS_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.PITCHER, PenetrationType.PENIS, OrificeType.MOUTH), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CUNNILINGUS_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.TONGUE, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "VAGINAL_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.PENIS, OrificeType.VAGINA), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "ANAL_TAKEN_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterModificationUtils.setSexExperience(new SexType(SexParticipantType.CATCHER, PenetrationType.PENIS, OrificeType.ANUS), i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
if (!Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_CORE) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_FACE) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_ASS) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_BREASTS) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_VAGINA) || Main.game.getCurrentDialogueNode().equals(BodyChanging.BODY_CHANGING_PENIS)) {
// Gender:
id = "CHOOSE_GENDER_MALE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterCreation.setGenderMale();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHOOSE_GENDER_FEMALE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
CharacterCreation.setGenderFemale();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Femininity
id = "CHOOSE_FEM_MASCULINE_STRONG";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFemininity(Femininity.MASCULINE_STRONG.getMedianFemininity());
if (!Main.game.isInNewWorld()) {
CharacterCreation.getDressed();
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHOOSE_FEM_MASCULINE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFemininity(Femininity.MASCULINE.getMedianFemininity());
if (!Main.game.isInNewWorld()) {
CharacterCreation.getDressed();
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHOOSE_FEM_ANDROGYNOUS";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFemininity(Femininity.ANDROGYNOUS.getMedianFemininity());
if (!Main.game.isInNewWorld()) {
CharacterCreation.getDressed();
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHOOSE_FEM_FEMININE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFemininity(Femininity.FEMININE.getMedianFemininity());
if (!Main.game.isInNewWorld()) {
CharacterCreation.getDressed();
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHOOSE_FEM_FEMININE_STRONG";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFemininity(Femininity.FEMININE_STRONG.getMedianFemininity());
if (!Main.game.isInNewWorld()) {
CharacterCreation.getDressed();
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Personality:
for (Personality personality : Personality.values()) {
id = "PERSONALITY_" + personality;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPersonality(personality);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Orientation:
for (SexualOrientation orientation : SexualOrientation.values()) {
id = "SEXUAL_ORIENTATION_" + orientation;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setSexualOrientation(orientation);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Height:
id = "HEIGHT_INCREASE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().incrementHeight(1);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HEIGHT_INCREASE_LARGE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().incrementHeight(5);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HEIGHT_DECREASE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().incrementHeight(-1);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HEIGHT_DECREASE_LARGE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().incrementHeight(-5);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Body size:
for (BodySize bs : BodySize.values()) {
id = "BODY_SIZE_" + bs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBodySize(bs.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Muscles:
for (Muscle muscle : Muscle.values()) {
id = "MUSCLE_" + muscle;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setMuscle(muscle.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Lip Size:
for (LipSize ls : LipSize.values()) {
id = "LIP_SIZE_" + ls;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setLipSize(ls.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Lip puffiness:
id = "LIP_PUFFY_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().addFaceOrificeModifier(OrificeModifier.PUFFY);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "LIP_PUFFY_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().removeFaceOrificeModifier(OrificeModifier.PUFFY);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Breast size:
for (CupSize cs : CupSize.values()) {
id = "BREAST_SIZE_" + cs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBreastSize(cs.getMeasurement());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Breast Shape:
for (BreastShape bs : BreastShape.values()) {
id = "BREAST_SHAPE_" + bs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBreastShape(bs);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Nipple size:
for (NippleSize ns : NippleSize.values()) {
id = "NIPPLE_SIZE_" + ns;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setNippleSize(ns.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Areolae size:
for (AreolaeSize as : AreolaeSize.values()) {
id = "AREOLAE_SIZE_" + as;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAreolaeSize(as.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Nipple puffiness:
id = "NIPPLE_PUFFY_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().addNippleOrificeModifier(OrificeModifier.PUFFY);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "NIPPLE_PUFFY_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().removeNippleOrificeModifier(OrificeModifier.PUFFY);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Lactation:
for (int i : CharacterModificationUtils.getLactationQuantitiesAvailable()) {
id = "LACTATION_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBreastMilkStorage(i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Ass size:
for (AssSize as : CharacterModificationUtils.getAssSizesAvailable()) {
id = "ASS_SIZE_" + as;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssSize(as.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Hip size:
for (HipSize hs : CharacterModificationUtils.getHipSizesAvailable()) {
id = "HIP_SIZE_" + hs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setHipSize(hs.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Bleached anus:
id = "ANUS_BLEACHED_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssBleached(true);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "ANUS_BLEACHED_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssBleached(false);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Penis size:
for (int ps : CharacterModificationUtils.getPenisSizesAvailable()) {
id = "PENIS_SIZE_" + ps;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisSize(ps);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Penis girth:
for (PenisGirth girth : PenisGirth.values()) {
id = "PENIS_GIRTH_" + girth;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisGirth(girth.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Testicle size:
for (TesticleSize ts : CharacterModificationUtils.getTesticleSizesAvailable()) {
id = "TESTICLE_SIZE_" + ts;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setTesticleSize(ts.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Cum production:
for (CumProduction cp : CharacterModificationUtils.getCumProductionAvailable()) {
id = "CUM_PRODUCTION_" + cp;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setCumProduction(cp.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Vagina capacity:
for (Capacity capacity : Capacity.values()) {
id = "VAGINA_CAPACITY_" + capacity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaCapacity(capacity.getMedianValue(), true);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Vagina wetness:
for (Wetness wetness : Wetness.values()) {
id = "VAGINA_WETNESS_" + wetness;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaWetness(wetness.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Vagina elastcity:
for (OrificeElasticity elasticity : OrificeElasticity.values()) {
id = "VAGINA_ELASTICITY_" + elasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaElasticity(elasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Vagina plasticity:
for (OrificePlasticity plasticity : OrificePlasticity.values()) {
id = "VAGINA_PLASTICITY_" + plasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaPlasticity(plasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Clit size:
for (ClitorisSize cs : ClitorisSize.values()) {
id = "CLITORIS_SIZE_" + cs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaClitorisSize(cs.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Labia size:
for (LabiaSize ls : LabiaSize.values()) {
id = "LABIA_SIZE_" + ls;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaLabiaSize(ls.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (ArmType armType : ArmType.values()) {
id = "CHANGE_ARM_" + armType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setArmType(armType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (EyeType eyeType : EyeType.values()) {
id = "CHANGE_EYE_" + eyeType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setEyeType(eyeType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (EarType earType : EarType.values()) {
id = "CHANGE_EAR_" + earType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setEarType(earType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (HornType hornType : HornType.values()) {
id = "CHANGE_HORN_" + hornType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setHornType(hornType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (AntennaType antennaType : AntennaType.values()) {
id = "CHANGE_ANTENNA_" + antennaType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAntennaType(antennaType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (HairType hairType : HairType.values()) {
id = "CHANGE_HAIR_" + hairType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setHairType(hairType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (LegType legType : LegType.values()) {
id = "CHANGE_LEG_" + legType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setLegType(legType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (FaceType faceType : FaceType.values()) {
id = "CHANGE_FACE_" + faceType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setFaceType(faceType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (SkinType skinType : SkinType.values()) {
id = "CHANGE_SKIN_" + skinType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setSkinType(skinType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (TailType tailType : TailType.values()) {
id = "CHANGE_TAIL_" + tailType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setTailType(tailType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (WingType wingType : WingType.values()) {
id = "CHANGE_WING_" + wingType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setWingType(wingType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (AssType assType : AssType.values()) {
id = "CHANGE_ASS_" + assType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssType(assType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (BreastType breastType : BreastType.values()) {
id = "CHANGE_BREAST_" + breastType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBreastType(breastType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (EyeShape eyeShape : EyeShape.values()) {
id = "CHANGE_IRIS_SHAPE_" + eyeShape;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setIrisShape(eyeShape);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CHANGE_PUPIL_SHAPE_" + eyeShape;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPupilShape(eyeShape);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (LipSize lipSize : LipSize.values()) {
id = "CHANGE_LIP_SIZE_" + lipSize;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setLipSize(lipSize.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeModifier orificeMod : OrificeModifier.values()) {
id = "CHANGE_MOUTH_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasFaceOrificeModifier(orificeMod)) {
BodyChanging.getTarget().removeFaceOrificeModifier(orificeMod);
} else {
BodyChanging.getTarget().addFaceOrificeModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (TongueModifier tongueMod : TongueModifier.values()) {
id = "CHANGE_TONGUE_MOD_" + tongueMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasTongueModifier(tongueMod)) {
BodyChanging.getTarget().removeTongueModifier(tongueMod);
} else {
BodyChanging.getTarget().addTongueModifier(tongueMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeModifier orificeMod : OrificeModifier.values()) {
id = "CHANGE_ANUS_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasAssOrificeModifier(orificeMod)) {
BodyChanging.getTarget().removeAssOrificeModifier(orificeMod);
} else {
BodyChanging.getTarget().addAssOrificeModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Ass size:
for (AssSize as : AssSize.values()) {
id = "CHANGE_ASS_SIZE_" + as;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssSize(as.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (HipSize hs : HipSize.values()) {
id = "CHANGE_HIP_SIZE_" + hs;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setHipSize(hs.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (Capacity capacity : Capacity.values()) {
id = "ANUS_CAPACITY_" + capacity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssCapacity(capacity.getMedianValue(), true);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (Wetness wetness : Wetness.values()) {
id = "ANUS_WETNESS_" + wetness;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssWetness(wetness.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeElasticity elasticity : OrificeElasticity.values()) {
id = "ANUS_ELASTICITY_" + elasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssElasticity(elasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificePlasticity plasticity : OrificePlasticity.values()) {
id = "ANUS_PLASTICITY_" + plasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setAssPlasticity(plasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (int i = 1; i <= Breast.MAXIMUM_BREAST_ROWS; i++) {
setBreastCountListener(i);
}
for (int i = 1; i <= Breast.MAXIMUM_NIPPLES_PER_BREAST; i++) {
setNippleCountListener(i);
}
// Nipple capacity:
for (Capacity capacity : Capacity.values()) {
id = "NIPPLE_CAPACITY_" + capacity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setNippleCapacity(capacity.getMedianValue(), true);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Nipple elastcity:
for (OrificeElasticity elasticity : OrificeElasticity.values()) {
id = "NIPPLE_ELASTICITY_" + elasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setNippleElasticity(elasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Nipple plasticity:
for (OrificePlasticity plasticity : OrificePlasticity.values()) {
id = "NIPPLE_PLASTICITY_" + plasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setNipplePlasticity(plasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (int i : CharacterModificationUtils.demonLactationValues) {
id = "LACTATION_" + i;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setBreastMilkStorage(i);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeModifier orificeMod : OrificeModifier.values()) {
id = "CHANGE_NIPPLE_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasNippleOrificeModifier(orificeMod)) {
BodyChanging.getTarget().removeNippleOrificeModifier(orificeMod);
} else {
BodyChanging.getTarget().addNippleOrificeModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (VaginaType vaginaType : VaginaType.values()) {
id = "CHANGE_VAGINA_" + vaginaType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setVaginaType(vaginaType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeModifier orificeMod : OrificeModifier.values()) {
id = "CHANGE_VAGINA_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasVaginaOrificeModifier(orificeMod)) {
BodyChanging.getTarget().removeVaginaOrificeModifier(orificeMod);
} else {
BodyChanging.getTarget().addVaginaOrificeModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (PenisType penisType : PenisType.values()) {
id = "CHANGE_PENIS_" + penisType;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisType(penisType);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (PenisSize ps : PenisSize.values()) {
id = "PENIS_SIZE_" + ps.getMinimumValue();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisSize(ps.getMinimumValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PENIS_SIZE_" + ps.getMedianValue();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisSize(ps.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (TesticleSize size : TesticleSize.values()) {
id = "TESTICLE_SIZE_" + size;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setTesticleSize(size.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (int i = Testicle.MIN_TESTICLE_COUNT; i <= Testicle.MAX_TESTICLE_COUNT; i += 2) {
setTesticleCountListener(i);
}
for (Capacity capacity : Capacity.values()) {
id = "URETHRA_CAPACITY_" + capacity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setPenisCapacity(capacity.getMedianValue(), true);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (CumProduction cumProduction : CumProduction.values()) {
id = "CUM_PRODUCTION_" + cumProduction.getMinimumValue();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setCumProduction(cumProduction.getMinimumValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "CUM_PRODUCTION_" + cumProduction.getMedianValue();
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setCumProduction(cumProduction.getMedianValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeElasticity elasticity : OrificeElasticity.values()) {
id = "URETHRA_ELASTICITY_" + elasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setUrethraElasticity(elasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificePlasticity plasticity : OrificePlasticity.values()) {
id = "URETHRA_PLASTICITY_" + plasticity;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
BodyChanging.getTarget().setUrethraPlasticity(plasticity.getValue());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (PenisModifier orificeMod : PenisModifier.values()) {
id = "CHANGE_PENIS_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasPenisModifier(orificeMod)) {
BodyChanging.getTarget().removePenisModifier(orificeMod);
} else {
BodyChanging.getTarget().addPenisModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
for (OrificeModifier orificeMod : OrificeModifier.values()) {
id = "CHANGE_URETHRA_MOD_" + orificeMod;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (BodyChanging.getTarget().hasUrethraOrificeModifier(orificeMod)) {
BodyChanging.getTarget().removeUrethraOrificeModifier(orificeMod);
} else {
BodyChanging.getTarget().addUrethraOrificeModifier(orificeMod);
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
// -------------------- Cosmetics -------------------- //
boolean noCost = !Main.game.isInNewWorld() || Main.game.getCurrentDialogueNode().getMapDisplay() == MapDisplay.PHONE;
for (BodyCoveringType bct : BodyCoveringType.values()) {
id = "APPLY_COVERING_" + bct;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getBodyCoveringTypeCost(bct) || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (CharacterModificationUtils.getCoveringsToBeApplied().containsKey(bct)) {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getBodyCoveringTypeCost(bct));
}
BodyChanging.getTarget().setSkinCovering(new Covering(CharacterModificationUtils.getCoveringsToBeApplied().get(bct)), false);
if (noCost) {
if (bct == BodyCoveringType.HUMAN) {
BodyChanging.getTarget().getBody().updateCoverings(false, false, false, true);
}
}
}
}
});
}
}, false);
}
id = bct + "_PRIMARY_GLOW_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(false);
}
});
}, false);
}
id = bct + "_PRIMARY_GLOW_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing(true);
}
});
}, false);
}
id = bct + "_SECONDARY_GLOW_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(false);
}
});
}, false);
}
id = bct + "_SECONDARY_GLOW_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(true);
}
});
}, false);
}
for (CoveringPattern pattern : CoveringPattern.values()) {
id = bct + "_PATTERN_" + pattern;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPattern(pattern);
}
});
}, false);
}
}
for (CoveringModifier modifier : CoveringModifier.values()) {
id = bct + "_MODIFIER_" + modifier;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setModifier(modifier);
}
});
}, false);
}
}
for (Colour colour : bct.getAllPrimaryColours()) {
id = bct + "_PRIMARY_" + colour;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryColour(colour);
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setPrimaryGlowing((colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isPrimaryGlowing()));
}
});
}, false);
}
}
for (Colour colour : bct.getAllSecondaryColours()) {
id = bct + "_SECONDARY_" + colour;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
CharacterModificationUtils.getCoveringsToBeApplied().putIfAbsent(bct, new Covering(BodyChanging.getTarget().getCovering(bct)));
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryColour(colour);
CharacterModificationUtils.getCoveringsToBeApplied().get(bct).setSecondaryGlowing(colour != Colour.COVERING_NONE && BodyChanging.getTarget().getCovering(bct).isSecondaryGlowing());
}
});
}, false);
}
}
}
for (HairLength hairLength : HairLength.values()) {
id = "HAIR_LENGTH_" + hairLength;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_LENGTH_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_LENGTH_COST);
}
BodyChanging.getTarget().setHairLength(hairLength.getMedianValue());
}
});
}
}, false);
}
}
for (HairStyle hairStyle : HairStyle.values()) {
id = "HAIR_STYLE_" + hairStyle;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_HAIR_STYLE_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_HAIR_STYLE_COST);
}
BodyChanging.getTarget().setHairStyle(hairStyle);
}
});
}
}, false);
}
}
for (PiercingType piercingType : PiercingType.values()) {
id = piercingType + "_PIERCE_REMOVE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
}
switch(piercingType) {
case EAR:
BodyChanging.getTarget().setPiercedEar(false);
break;
case LIP:
BodyChanging.getTarget().setPiercedLip(false);
break;
case NAVEL:
BodyChanging.getTarget().setPiercedNavel(false);
break;
case NIPPLE:
BodyChanging.getTarget().setPiercedNipples(false);
break;
case NOSE:
BodyChanging.getTarget().setPiercedNose(false);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(false);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(false);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(false);
break;
}
}
});
}
}, false);
}
id = piercingType + "_PIERCE";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.getPiercingCost(piercingType) || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.getPiercingCost(piercingType));
}
switch(piercingType) {
case EAR:
BodyChanging.getTarget().setPiercedEar(true);
break;
case LIP:
BodyChanging.getTarget().setPiercedLip(true);
break;
case NAVEL:
BodyChanging.getTarget().setPiercedNavel(true);
break;
case NIPPLE:
BodyChanging.getTarget().setPiercedNipples(true);
break;
case NOSE:
BodyChanging.getTarget().setPiercedNose(true);
break;
case PENIS:
BodyChanging.getTarget().setPiercedPenis(true);
break;
case TONGUE:
BodyChanging.getTarget().setPiercedTongue(true);
break;
case VAGINA:
BodyChanging.getTarget().setPiercedVagina(true);
break;
}
}
});
}
}, false);
}
}
if (((EventTarget) document.getElementById("BLEACHING_OFF")) != null) {
((EventTarget) document.getElementById("BLEACHING_OFF")).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(false);
}
});
}
}, false);
}
if (((EventTarget) document.getElementById("BLEACHING_ON")) != null) {
((EventTarget) document.getElementById("BLEACHING_ON")).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_ANAL_BLEACHING_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_ANAL_BLEACHING_COST);
}
BodyChanging.getTarget().setAssBleached(true);
}
});
}
}, false);
}
for (BodyHair bodyHair : BodyHair.values()) {
id = "ASS_HAIR_" + bodyHair;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setAssHair(bodyHair);
}
});
}
}, false);
}
id = "UNDERARM_HAIR_" + bodyHair;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setUnderarmHair(bodyHair);
}
});
}
}, false);
}
id = "PUBIC_HAIR_" + bodyHair;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setPubicHair(bodyHair);
}
});
}
}, false);
}
id = "FACIAL_HAIR_" + bodyHair;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getMoney() >= SuccubisSecrets.BASE_BODY_HAIR_COST || noCost) {
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
if (!noCost) {
Main.game.getPlayer().incrementMoney(-SuccubisSecrets.BASE_BODY_HAIR_COST);
}
BodyChanging.getTarget().setFacialHair(bodyHair);
}
});
}
}, false);
}
}
// Phone item viewer:
for (AbstractClothingType clothing : ClothingType.getAllClothing()) {
for (Colour c : clothing.getAllAvailablePrimaryColours()) {
id = "PRIMARY_" + clothing.hashCode() + "_" + c.toString();
if ((EventTarget) document.getElementById(id) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
InventoryDialogue.dyePreviewPrimary = c;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setDyeClothingPrimary(InventoryDialogue.getClothing(), c);
addEventListener(document, id, "mouseenter", el2, false);
}
}
if (!clothing.getAllAvailableSecondaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableSecondaryColours()) {
id = "SECONDARY_" + clothing.hashCode() + "_" + c.toString();
if ((EventTarget) document.getElementById(id) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
InventoryDialogue.dyePreviewSecondary = c;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setDyeClothingSecondary(InventoryDialogue.getClothing(), c);
addEventListener(document, id, "mouseenter", el2, false);
}
}
}
if (!clothing.getAllAvailableTertiaryColours().isEmpty()) {
for (Colour c : clothing.getAllAvailableTertiaryColours()) {
id = "TERTIARY_" + clothing.hashCode() + "_" + c.toString();
if ((EventTarget) document.getElementById(id) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
InventoryDialogue.dyePreviewTertiary = c;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setDyeClothingTertiary(InventoryDialogue.getClothing(), c);
addEventListener(document, id, "mouseenter", el2, false);
}
}
}
}
for (AbstractClothingType clothing : ClothingType.getAllClothing()) {
for (Colour colour : clothing.getAllAvailablePrimaryColours()) {
if ((EventTarget) document.getElementById(clothing.hashCode() + "_" + colour.toString()) != null) {
addEventListener(document, clothing.hashCode() + "_" + colour.toString(), "mousemove", moveTooltipListener, false);
addEventListener(document, clothing.hashCode() + "_" + colour.toString(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setGenericClothing(clothing, colour);
addEventListener(document, clothing.hashCode() + "_" + colour.toString(), "mouseenter", el2, false);
}
}
}
for (AbstractWeaponType weapon : WeaponType.allweapons) {
for (DamageType dt : weapon.getAvailableDamageTypes()) {
if ((EventTarget) document.getElementById(weapon.hashCode() + "_" + dt.toString()) != null) {
addEventListener(document, weapon.hashCode() + "_" + dt.toString(), "mousemove", moveTooltipListener, false);
addEventListener(document, weapon.hashCode() + "_" + dt.toString(), "mouseleave", hideTooltipListener, false);
InventoryTooltipEventListener el2 = new InventoryTooltipEventListener().setGenericWeapon(weapon, dt);
addEventListener(document, weapon.hashCode() + "_" + dt.toString(), "mouseenter", el2, false);
}
}
}
for (Perk perk : Perk.values()) {
// TODO
if (perk.getPerkCategory() == PerkCategory.JOB) {
id = "HISTORY_" + perk;
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setLevelUpPerk(0, perk, Main.game.getPlayer()), false);
}
} else {
id = "TRAIT_" + perk;
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setLevelUpPerk(PerkManager.MANAGER.getPerkRow(perk), perk, Main.game.getPlayer()), false);
((EventTarget) document.getElementById(id)).addEventListener("click", event -> {
Main.game.getPlayer().removeTrait(perk);
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
// Level up dialogue:
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_LEVEL_UP) {
for (int i = 0; i < PerkManager.ROWS; i++) {
for (Entry<PerkCategory, List<PerkEntry>> entry : PerkManager.MANAGER.getPerkTree().get(i).entrySet()) {
for (PerkEntry e : entry.getValue()) {
id = i + "_" + e.getPerk();
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setLevelUpPerk(i, e.getPerk(), Main.game.getPlayer()), false);
((EventTarget) document.getElementById(id)).addEventListener("click", event -> {
if (e.getPerk().isMajor() && PerkManager.MANAGER.isPerkOwned(e)) {
if (!Main.game.getPlayer().hasTraitActivated(e.getPerk())) {
Main.game.getPlayer().addTrait(e.getPerk());
} else {
Main.game.getPlayer().removeTrait(e.getPerk());
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
} else if (Main.game.getPlayer().getPerkPoints() >= 1 && PerkManager.MANAGER.isPerkAvailable(e)) {
if (Main.game.getPlayer().addPerk(e.getRow(), e.getPerk())) {
Main.game.getPlayer().incrementPerkPoints(-1);
if (e.getPerk().isMajor() && Main.game.getPlayer().getTraits().size() < GameCharacter.MAX_TRAITS) {
Main.game.getPlayer().addTrait(e.getPerk());
}
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}
}
}, false);
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == PhoneDialogue.CHARACTER_FETISHES) {
for (Fetish f : Fetish.values()) {
id = "fetishUnlock" + f;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= f.getCost()) {
if (Main.game.getPlayer().addFetish(f)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE, -f.getCost());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setFetish(f, Main.game.getPlayer()), false);
}
id = f + "_EXPERIENCE";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setFetishExperience(f, Main.game.getPlayer()), false);
}
for (FetishDesire desire : FetishDesire.values()) {
id = f + "_" + desire;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (Main.game.getPlayer().getEssenceCount(TFEssence.ARCANE) >= FetishDesire.getCostToChange()) {
if (Main.game.getPlayer().setFetishDesire(f, desire)) {
Main.game.getPlayer().incrementEssenceCount(TFEssence.ARCANE, -FetishDesire.getCostToChange());
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
addEventListener(document, id, "mouseenter", new TooltipInformationEventListener().setFetishDesire(f, desire, Main.game.getPlayer()), false);
}
}
}
}
}
// Hotkey bindings:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
for (KeyboardAction ka : KeyboardAction.values()) {
if (((EventTarget) document.getElementById("primary_" + ka)) != null)
((EventTarget) document.getElementById("primary_" + ka)).addEventListener("click", e -> {
actionToBind = ka;
primaryBinding = true;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
if (((EventTarget) document.getElementById("primaryClear_" + ka)) != null)
((EventTarget) document.getElementById("primaryClear_" + ka)).addEventListener("click", e -> {
Main.getProperties().hotkeyMapPrimary.put(ka, null);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
if (((EventTarget) document.getElementById("secondary_" + ka)) != null)
((EventTarget) document.getElementById("secondary_" + ka)).addEventListener("click", e -> {
actionToBind = ka;
primaryBinding = false;
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
if (((EventTarget) document.getElementById("secondaryClear_" + ka)) != null)
((EventTarget) document.getElementById("secondaryClear_" + ka)).addEventListener("click", e -> {
Main.getProperties().hotkeyMapSecondary.put(ka, null);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
// Gender preferences:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.GENDER_PREFERENCE) {
for (Gender g : Gender.values()) {
for (GenderPreference preference : GenderPreference.values()) {
if (((EventTarget) document.getElementById(preference + "_" + g)) != null) {
((EventTarget) document.getElementById(preference + "_" + g)).addEventListener("click", e -> {
Main.getProperties().genderPreferencesMap.put(g, preference.getValue());
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
}
}
}
// Furry preferences:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.FURRY_PREFERENCE) {
// Human encounter rates:
if (((EventTarget) document.getElementById("furry_preference_human_encounter_zero")) != null) {
((EventTarget) document.getElementById("furry_preference_human_encounter_zero")).addEventListener("click", e -> {
Main.getProperties().humanEncountersLevel = 0;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_human_encounter_zero", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_human_encounter_zero", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Disabled", "Randomly generated NPCs will never be fully human, unless all of the other furry preference options are set to disabled.");
addEventListener(document, "furry_preference_human_encounter_zero", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_human_encounter_one")) != null) {
((EventTarget) document.getElementById("furry_preference_human_encounter_one")).addEventListener("click", e -> {
Main.getProperties().humanEncountersLevel = 1;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_human_encounter_one", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_human_encounter_one", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("5%", "There will be a 5% chance for any randomly generated NPC to be fully human. (It will be 100% if all of the other furry preference options are set to disabled)");
addEventListener(document, "furry_preference_human_encounter_one", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_human_encounter_two")) != null) {
((EventTarget) document.getElementById("furry_preference_human_encounter_two")).addEventListener("click", e -> {
Main.getProperties().humanEncountersLevel = 2;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_human_encounter_two", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_human_encounter_two", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("25%", "There will be a 25% chance for any randomly generated NPC to be fully human. (It will be 100% if all of the other furry preference options are set to disabled)");
addEventListener(document, "furry_preference_human_encounter_two", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_human_encounter_three")) != null) {
((EventTarget) document.getElementById("furry_preference_human_encounter_three")).addEventListener("click", e -> {
Main.getProperties().humanEncountersLevel = 3;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_human_encounter_three", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_human_encounter_three", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("50%", "There will be a 50% chance for any randomly generated NPC to be fully human. (It will be 100% if all of the other furry preference options are set to disabled)");
addEventListener(document, "furry_preference_human_encounter_three", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_human_encounter_four")) != null) {
((EventTarget) document.getElementById("furry_preference_human_encounter_four")).addEventListener("click", e -> {
Main.getProperties().humanEncountersLevel = 4;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_human_encounter_four", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_human_encounter_four", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("75%", "There will be a 75% chance for any randomly generated NPC to be fully human. (It will be 100% if all of the other furry preference options are set to disabled)");
addEventListener(document, "furry_preference_human_encounter_four", "mouseenter", el, false);
}
// Forced TF racial limits:
id = "forced_tf_limit_human";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPreference = FurryPreference.HUMAN;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Human Only", "Forced transformations from NPCs will only ever affect your body's non-racial stats, and if a new part is required (such as a vagina or penis) it will always grow to be a human one.");
addEventListener(document, id, "mouseenter", el, false);
}
id = "forced_tf_limit_minimum";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPreference = FurryPreference.MINIMUM;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Minimum Furry", "Forced transformations from NPCs will have the chance to give you non-human hair, ears, eyes, tails, horns, antenna, and wings. All other parts will always remain human.");
addEventListener(document, id, "mouseenter", el, false);
}
id = "forced_tf_limit_reduced";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPreference = FurryPreference.REDUCED;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Lesser Furry", "Forced transformations from NPCs will have the chance to give you non-human hair, ears, eyes, tails, horns, antenna, wings, breasts, ass, genitalia, arms, and legs. Your skin and face will always remain human.");
addEventListener(document, id, "mouseenter", el, false);
}
id = "forced_tf_limit_normal";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPreference = FurryPreference.NORMAL;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Greater Furry", "Forced transformations from NPCs will have the chance to give you non-human hair, ears, eyes, tails, horns, antenna, wings, breasts, ass, genitalia, arms, legs, skin, and face. (So everything can be affected.)");
addEventListener(document, id, "mouseenter", el, false);
}
id = "forced_tf_limit_maximum";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPreference = FurryPreference.MAXIMUM;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Always Greater Furry", "Forced transformations from NPCs will always give you non-human hair, ears, eyes, tails, horns, antenna, wings, breasts, genitalia, ass, arms, legs, skin, and face. (So everything will be affected.)");
addEventListener(document, id, "mouseenter", el, false);
}
// Multi-breast options:
if (((EventTarget) document.getElementById("furry_preference_multi_breast_zero")) != null) {
((EventTarget) document.getElementById("furry_preference_multi_breast_zero")).addEventListener("click", e -> {
Main.getProperties().multiBreasts = 0;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_multi_breast_zero", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_multi_breast_zero", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Off", "Randomly-generated NPCs will never spawn in with multiple rows of breasts.");
addEventListener(document, "furry_preference_multi_breast_zero", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_multi_breast_one")) != null) {
((EventTarget) document.getElementById("furry_preference_multi_breast_one")).addEventListener("click", e -> {
Main.getProperties().multiBreasts = 1;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_multi_breast_one", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_multi_breast_one", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("Furry-only", "Randomly-generated NPCs will only spawn in with multiple rows of breasts if they have furry skin.");
addEventListener(document, "furry_preference_multi_breast_one", "mouseenter", el, false);
}
if (((EventTarget) document.getElementById("furry_preference_multi_breast_two")) != null) {
((EventTarget) document.getElementById("furry_preference_multi_breast_two")).addEventListener("click", e -> {
Main.getProperties().multiBreasts = 2;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, "furry_preference_multi_breast_two", "mousemove", moveTooltipListener, false);
addEventListener(document, "furry_preference_multi_breast_two", "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation("On", "Randomly-generated NPCs will spawn in with multiple rows of breasts if their breast type is furry (starts at 'Minor morph' level).");
addEventListener(document, "furry_preference_multi_breast_two", "mouseenter", el, false);
}
// Race preferences:
if (((EventTarget) document.getElementById("furry_preference_female_human_all")) != null) {
((EventTarget) document.getElementById("furry_preference_female_human_all")).addEventListener("click", e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(r, FurryPreference.HUMAN);
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(r, FurryPreference.HUMAN);
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
if (((EventTarget) document.getElementById("furry_preference_female_minimum_all")) != null) {
((EventTarget) document.getElementById("furry_preference_female_minimum_all")).addEventListener("click", e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(r, FurryPreference.MINIMUM);
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(r, FurryPreference.MINIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
if (((EventTarget) document.getElementById("furry_preference_female_reduced_all")) != null) {
((EventTarget) document.getElementById("furry_preference_female_reduced_all")).addEventListener("click", e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(r, FurryPreference.REDUCED);
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(r, FurryPreference.REDUCED);
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
if (((EventTarget) document.getElementById("furry_preference_female_normal_all")) != null) {
((EventTarget) document.getElementById("furry_preference_female_normal_all")).addEventListener("click", e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(r, FurryPreference.NORMAL);
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(r, FurryPreference.NORMAL);
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
if (((EventTarget) document.getElementById("furry_preference_female_maximum_all")) != null) {
((EventTarget) document.getElementById("furry_preference_female_maximum_all")).addEventListener("click", e -> {
for (Subspecies r : Subspecies.values()) {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(r, FurryPreference.MAXIMUM);
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(r, FurryPreference.MAXIMUM);
}
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
for (Subspecies s : Subspecies.values()) {
for (FurryPreference preference : FurryPreference.values()) {
id = "FEMININE_" + preference + "_" + s;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().subspeciesFeminineFurryPreferencesMap.put(s, preference);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(preference.getName(), preference.getDescriptionFeminine(s));
addEventListener(document, id, "mouseenter", el, false);
}
id = "MASCULINE_" + preference + "_" + s;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().subspeciesMasculineFurryPreferencesMap.put(s, preference);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(preference.getName(), preference.getDescriptionMasculine(s));
addEventListener(document, id, "mouseenter", el, false);
}
}
}
// for (Subspecies s : Subspecies.values()) {
// for(SubspeciesPreference preference : SubspeciesPreference.values()) {
// id = "FEMININE_" + preference+"_"+s;
// if (((EventTarget) document.getElementById(id)) != null) {
// ((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
// Main.getProperties().subspeciesFemininePreferencesMap.put(s, preference);
// Main.saveProperties();
// Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
// }, false);
//
// addEventListener(document, id, "mousemove", moveTooltipListener, false);
// addEventListener(document, id, "mouseleave", hideTooltipListener, false);
// TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(preference.getName(), "");
// addEventListener(document, id, "mouseenter", el, false);
// }
// id = "MASCULINE_" + preference+"_"+s;
// if (((EventTarget) document.getElementById(id)) != null) {
// ((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
// Main.getProperties().subspeciesFemininePreferencesMap.put(s, preference);
// Main.saveProperties();
// Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
// }, false);
//
// addEventListener(document, id, "mousemove", moveTooltipListener, false);
// addEventListener(document, id, "mouseleave", hideTooltipListener, false);
// TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(preference.getName(), "");
// addEventListener(document, id, "mouseenter", el, false);
// }
// }
// }
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.CONTENT_PREFERENCE || Main.game.getCurrentDialogueNode() == CharacterCreation.CONTENT_PREFERENCES) {
id = "NON_CON_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().nonConContent = true;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "NON_CON_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().nonConContent = false;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "INCEST_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().incestContent = true;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "INCEST_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().incestContent = false;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_FACIAL_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().facialHairContent = !Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_FACIAL_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().facialHairContent = !Main.getProperties().facialHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_PUBIC_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pubicHairContent = !Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_PUBIC_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pubicHairContent = !Main.getProperties().pubicHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_BODY_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().bodyHairContent = !Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "HAIR_BODY_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().bodyHairContent = !Main.getProperties().bodyHairContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FEMININE_BEARD_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().feminineBeardsContent = !Main.getProperties().feminineBeardsContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FEMININE_BEARD_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().feminineBeardsContent = !Main.getProperties().feminineBeardsContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FURRY_TAIL_PENETRATION_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().furryTailPenetrationContent = !Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FURRY_TAIL_PENETRATION_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().furryTailPenetrationContent = !Main.getProperties().furryTailPenetrationContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "INFLATION_CONTENT_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().inflationContent = !Main.getProperties().inflationContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "INFLATION_CONTENT_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().inflationContent = !Main.getProperties().inflationContent;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FORCED_TF_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPercentage = Math.min(100, Main.getProperties().forcedTFPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FORCED_TF_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFPercentage = Math.max(0, Main.getProperties().forcedTFPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_BREAST_GROWTH_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyBreastGrowth = Math.min(10, Main.getProperties().pregnancyBreastGrowth + 1);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_BREAST_GROWTH_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyBreastGrowth = Math.max(0, Main.getProperties().pregnancyBreastGrowth - 1);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_BREAST_GROWTH_LIMIT_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyBreastGrowthLimit = Math.min(100, Main.getProperties().pregnancyBreastGrowthLimit + 1);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_BREAST_GROWTH_LIMIT_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyBreastGrowthLimit = Math.max(0, Main.getProperties().pregnancyBreastGrowthLimit - 1);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_LACTATION_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyLactationIncrease = Math.min(1000, Main.getProperties().pregnancyLactationIncrease + 50);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_LACTATION_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyLactationIncrease = Math.max(0, Main.getProperties().pregnancyLactationIncrease - 50);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_LACTATION_LIMIT_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyLactationLimit = Math.min(Lactation.SEVEN_MONSTROUS_AMOUNT_POURING.getMaximumValue(), Main.getProperties().pregnancyLactationLimit + 250);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "PREGNANCY_LACTATION_LIMIT_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().pregnancyLactationLimit = Math.max(0, Main.getProperties().pregnancyLactationLimit - 250);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FORCED_FETISH_ON";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishPercentage = Math.min(100, Main.getProperties().forcedFetishPercentage + 10);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
id = "FORCED_FETISH_OFF";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishPercentage = Math.max(0, Main.getProperties().forcedFetishPercentage - 10);
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
}
// Forced TF Tendency setting events
id = "FORCED_TF_TENDENCY_" + ForcedTFTendency.NEUTRAL;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFTendency = ForcedTFTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedTFTendency.NEUTRAL.getName(), ForcedTFTendency.NEUTRAL.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_TF_TENDENCY_" + ForcedTFTendency.FEMININE;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFTendency = ForcedTFTendency.FEMININE;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE.getName(), ForcedTFTendency.FEMININE.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_TF_TENDENCY_" + ForcedTFTendency.FEMININE_HEAVY;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFTendency = ForcedTFTendency.FEMININE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedTFTendency.FEMININE_HEAVY.getName(), ForcedTFTendency.FEMININE_HEAVY.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_TF_TENDENCY_" + ForcedTFTendency.MASCULINE;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFTendency = ForcedTFTendency.MASCULINE;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE.getName(), ForcedTFTendency.MASCULINE.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_TF_TENDENCY_" + ForcedTFTendency.MASCULINE_HEAVY;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedTFTendency = ForcedTFTendency.MASCULINE_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedTFTendency.MASCULINE_HEAVY.getName(), ForcedTFTendency.MASCULINE_HEAVY.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
// Forced Fetish Tendency setting events
id = "FORCED_FETISH_TENDENCY_" + ForcedFetishTendency.NEUTRAL;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishTendency = ForcedFetishTendency.NEUTRAL;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedFetishTendency.NEUTRAL.getName(), ForcedFetishTendency.NEUTRAL.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_FETISH_TENDENCY_" + ForcedFetishTendency.BOTTOM;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishTendency = ForcedFetishTendency.BOTTOM;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM.getName(), ForcedFetishTendency.BOTTOM.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_FETISH_TENDENCY_" + ForcedFetishTendency.BOTTOM_HEAVY;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishTendency = ForcedFetishTendency.BOTTOM_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedFetishTendency.BOTTOM_HEAVY.getName(), ForcedFetishTendency.BOTTOM_HEAVY.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_FETISH_TENDENCY_" + ForcedFetishTendency.TOP;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishTendency = ForcedFetishTendency.TOP;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP.getName(), ForcedFetishTendency.TOP.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
id = "FORCED_FETISH_TENDENCY_" + ForcedFetishTendency.TOP_HEAVY;
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.getProperties().forcedFetishTendency = ForcedFetishTendency.TOP_HEAVY;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(ForcedFetishTendency.TOP_HEAVY.getName(), ForcedFetishTendency.TOP_HEAVY.getDescription());
addEventListener(document, id, "mouseenter", el, false);
}
}
// Save/load:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD) {
for (File f : Main.getSavedGames()) {
id = "overwrite_saved_" + f.getName().substring(0, f.getName().lastIndexOf('.'));
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.overwriteConfirmationName.equals(f.getName())) {
OptionsDialogue.overwriteConfirmationName = "";
Main.saveGame(f.getName().substring(0, f.getName().lastIndexOf('.')), true);
} else {
OptionsDialogue.overwriteConfirmationName = f.getName();
OptionsDialogue.loadConfirmationName = "";
OptionsDialogue.deleteConfirmationName = "";
Main.game.setContent(new Response("Save/Load", "Open the save/load game window.", OptionsDialogue.SAVE_LOAD));
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Overwrite", "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "load_saved_" + f.getName().substring(0, f.getName().lastIndexOf('.'));
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.loadConfirmationName.equals(f.getName())) {
OptionsDialogue.loadConfirmationName = "";
Main.loadGame(f.getName().substring(0, f.getName().lastIndexOf('.')));
} else {
OptionsDialogue.overwriteConfirmationName = "";
OptionsDialogue.loadConfirmationName = f.getName();
OptionsDialogue.deleteConfirmationName = "";
Main.game.setContent(new Response("Save/Load", "Open the save/load game window.", OptionsDialogue.SAVE_LOAD));
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Load", "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "delete_saved_" + f.getName().substring(0, f.getName().lastIndexOf('.'));
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName = "";
Main.deleteGame(f.getName().substring(0, f.getName().lastIndexOf('.')));
} else {
OptionsDialogue.overwriteConfirmationName = "";
OptionsDialogue.loadConfirmationName = "";
OptionsDialogue.deleteConfirmationName = f.getName();
Main.game.setContent(new Response("Save/Load", "Open the save/load game window.", OptionsDialogue.SAVE_LOAD));
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Delete", "");
addEventListener(document, id, "mouseenter", el2, false);
}
}
id = "new_saved";
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenPField').innerHTML=document.getElementById('new_save_name').value;");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("hiddenPField").getTextContent(), false);
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Save", "");
addEventListener(document, id, "mouseenter", el2, false);
}
id = "new_saved_disabled";
if (((EventTarget) document.getElementById(id)) != null) {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Save (Disabled)", (!Main.game.isStarted() ? "You need to have started a game before you can save!" : "You cannot save the game unless you are in a tile's default scene!"));
addEventListener(document, id, "mouseenter", el2, false);
}
}
// Import:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.IMPORT_EXPORT) {
for (File f : Main.getCharactersForImport()) {
id = "delete_saved_character_" + f.getName().substring(0, f.getName().lastIndexOf('.'));
if (((EventTarget) document.getElementById(id)) != null) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
if (!Main.getProperties().overwriteWarning || OptionsDialogue.deleteConfirmationName.equals(f.getName())) {
OptionsDialogue.deleteConfirmationName = "";
Main.deleteExportedCharacter(f.getName().substring(0, f.getName().lastIndexOf('.')));
} else {
OptionsDialogue.overwriteConfirmationName = "";
OptionsDialogue.loadConfirmationName = "";
OptionsDialogue.deleteConfirmationName = f.getName();
Main.game.setContent(new Response("Save/Load", "Open the save/load game window.", OptionsDialogue.SAVE_LOAD));
}
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el2 = new TooltipInformationEventListener().setInformation("Delete", "");
addEventListener(document, id, "mouseenter", el2, false);
}
}
if (((EventTarget) document.getElementById("new_saved")) != null) {
((EventTarget) document.getElementById("new_saved")).addEventListener("click", e -> {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenPField').innerHTML=document.getElementById('new_save_name').value;");
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("hiddenPField").getTextContent(), false);
}, false);
}
}
if (Main.game.getCurrentDialogueNode() == CharacterCreation.IMPORT_CHOOSE) {
for (File f : Main.getCharactersForImport()) {
if (((EventTarget) document.getElementById("character_import_" + f.getName().substring(0, f.getName().lastIndexOf('.')))) != null) {
((EventTarget) document.getElementById("character_import_" + f.getName().substring(0, f.getName().lastIndexOf('.')))).addEventListener("click", e -> {
Main.importCharacter(f);
}, false);
}
}
}
// Slave import:
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_IMPORT) {
for (File f : Main.getSlavesForImport()) {
if (((EventTarget) document.getElementById("import_slave_" + f.getName().substring(0, f.getName().lastIndexOf('.')))) != null) {
((EventTarget) document.getElementById("import_slave_" + f.getName().substring(0, f.getName().lastIndexOf('.')))).addEventListener("click", e -> {
try {
Game.importCharacterAsSlave(f.getName().substring(0, f.getName().lastIndexOf('.')));
this.updateUI();
Main.game.flashMessage(Colour.GENERIC_GOOD, "Imported Character!");
} catch (Exception ex) {
Main.game.flashMessage(Colour.GENERIC_BAD, "Import Failed!");
}
}, false);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaverAlleyDialogue.AUCTION_BLOCK_LIST) {
for (NPC npc : Main.game.getCharactersPresent()) {
id = npc.getId() + "_BID";
if (((EventTarget) document.getElementById(id)) != null) {
if (Main.game.getPlayer().isHasSlaverLicense()) {
((EventTarget) document.getElementById(id)).addEventListener("click", e -> {
SlaverAlleyDialogue.setupBidding(npc);
Main.game.setContent(new Response("", "", SlaverAlleyDialogue.AUCTION_BIDDING));
}, false);
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(UtilText.parse(npc, "Bid on [npc.name]"), UtilText.parse(npc, "Start bidding on [npc.name]. There's a chance that the bidding might exceed [npc.her] value, so make sure you have enough money first!"));
addEventListener(document, id, "mouseenter", el, false);
} else {
addEventListener(document, id, "mousemove", moveTooltipListener, false);
addEventListener(document, id, "mouseleave", hideTooltipListener, false);
TooltipInformationEventListener el = new TooltipInformationEventListener().setInformation(UtilText.parse(npc, "Bid on [npc.name]"), UtilText.parse(npc, "You don't have a slaver license, so you're unable to big on any slaves!"));
addEventListener(document, id, "mouseenter", el, false);
}
}
}
}
setResponseEventListeners();
}
use of com.lilithsthrone.game.settings.KeyboardAction in project liliths-throne-public by Innoxia.
the class MainController method setUpButtons.
private void setUpButtons() {
// HOTKEYS:
actionKeyPressed = new EventHandler<KeyEvent>() {
private Map.Entry<KeyboardAction, KeyCodeWithModifiers> findExistingBinding(Map<KeyboardAction, KeyCodeWithModifiers> bindings, KeyEvent lookingFor) {
return bindings.entrySet().stream().filter(entry -> entry.getValue() != null).filter(entry -> entry.getValue().matches(lookingFor)).findFirst().orElse(null);
}
private void printAlreadyExistingBinding(String primarySecondary, String actionName, String eventCodeName) {
Main.game.getTextStartStringBuilder().append("<p style='text-align:center;'>" + "<b style='color:" + Colour.GENERIC_BAD.toWebHexString() + ";'>The key '" + eventCodeName + "' is already the " + primarySecondary + " bind for the action '" + actionName + "'!</b>" + "</p>");
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
}
private boolean handleExistingBindings(Map<KeyboardAction, KeyCodeWithModifiers> bindings, KeyEvent lookingFor, String primarySecondary) {
Map.Entry<KeyboardAction, KeyCodeWithModifiers> existingBinding = findExistingBinding(bindings, lookingFor);
boolean hasExistingBinding = existingBinding != null;
if (hasExistingBinding) {
actionToBind = null;
printAlreadyExistingBinding(primarySecondary, existingBinding.getKey().getName(), existingBinding.getValue().getFullName());
}
return hasExistingBinding;
}
public void handle(KeyEvent event) {
if (allowInput) {
// Hotkey bindings:
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.KEYBINDS) {
if (actionToBind != null) {
KeyCode eventCode = event.getCode();
if (eventCode == KeyCode.SHIFT || eventCode == KeyCode.CONTROL) {
// these are explicitly blocked to allow SHIFT + key and CTRL + key
return;
}
if (handleExistingBindings(Main.getProperties().hotkeyMapPrimary, event, "primary") || handleExistingBindings(Main.getProperties().hotkeyMapSecondary, event, "secondary")) {
// such a binding already exists
return;
}
KeyCodeWithModifiers newBinding = new KeyCodeWithModifiers(eventCode, event.isControlDown(), event.isShiftDown());
if (primaryBinding)
Main.getProperties().hotkeyMapPrimary.put(actionToBind, newBinding);
else
Main.getProperties().hotkeyMapSecondary.put(actionToBind, newBinding);
actionToBind = null;
Main.saveProperties();
Main.game.setContent(new Response("", "", Main.game.getCurrentDialogueNode()));
return;
}
} else {
actionToBind = null;
}
if (!buttonsPressed.contains(event.getCode())) {
buttonsPressed.add(event.getCode());
System.arraycopy(lastKeys, 0, lastKeys, 1, 4);
lastKeys[0] = event.getCode();
checkLastKeys();
if (event.getCode() == KeyCode.END) {
Main.game.getPlayer().setMana(1);
// Cell[][] grid = new Cell[5][5];
// for(int i=0; i<grid.length;i++) {
// for(int j=0; j<grid[0].length;j++) {
// grid[i][j] = new Cell(WorldType.SEWERS, new Vector2i(i, j));
// grid[i][j].setPlace(new GenericPlace(PlaceType.SUBMISSION_IMP_PALACE));
// }
// }
//
// Generation.printMaze(WorldType.SEWERS, Generation.generateTestMap(WorldType.SEWERS, 0, 0, grid, 2));
// Main.game.getPlayer().incrementCummedInArea(OrificeType.VAGINA, 10000);
// Main.game.getPlayer().addPsychoactiveFluidIngested(FluidType.CUM_HUMAN);
// Main.game.getPlayer().addPsychoactiveFluidIngested(FluidType.MILK_HUMAN);
// Main.game.getPlayer().addPsychoactiveFluidIngested(FluidType.GIRL_CUM_HUMAN);
// Main.game.getPlayer().addStatusEffect(StatusEffect.PSYCHOACTIVE, 60*6);
// Main.game.getPlayer().addAddiction(new Addiction(FluidType.MILK_HUMAN, Main.game.getMinutesPassed()));
// Main.game.getPlayer().incrementAlcoholLevel(0.2f);
// for(Fetish f : Fetish.values()) {
// Main.game.getPlayer().incrementFetishExperience(f, (int) (Math.random()*20));
// }
// Main.game.getPlayer().incrementCummedInArea(OrificeType.MOUTH, 2500);
// for(NPC npc : Main.game.getNPCMap().values()) {
// System.out.println(npc.getId());
// }
// for(int i=0; i<=1000; i++) {
// System.out.println(Util.intToString(i));
// }
// Main.game.getPlayer().addDirtySlot(InventorySlot.GROIN);
// Main.game.getPlayer().addDirtySlot(InventorySlot.MOUTH);
// Main.game.getPlayer().addDirtySlot(InventorySlot.LEG);
// System.out.println(Main.isVersionOlderThan("0.1.84", Main.VERSION_NUMBER));
// for(int i=0;i<10;i++) {
// System.out.println(Name.getRandomTriplet(Race.DEMON));
// }
// Game.exportGame();
// System.out.println(Main.game.getNumberOfWitches());
// SlaveryUtil.calculateEvent(Main.game.getMinutesPassed(), Main.game.getPlayer().getSlavesOwned().get(0));
// for(String npc : Main.game.getNPCMap().keySet()) {
// System.out.println(npc);
// }
//
// System.out.println(ItemType.BOOK_CAT_MORPH.getId());
// System.out.println(Main.game.getPlayer().getNextClothingToRemoveForCoverableAreaAccess(CoverableArea.VAGINA).getKey().getName());
// webViewMain = new WebView();
// webViewAttributes = new WebView();
// webViewInventory = new WebView();
// webViewMap = new WebView();
// webViewMapTitle = new WebView();
// webViewButtons = new WebView();
// webViewResponse = new WebView();
//
// setUpWebViews();
// File dir = new File("data/clothing");
// dir.mkdir();
// for (ClothingType ct : ClothingType.values()) {
//
// dir = new File("data/clothing/"+ct);
// dir.mkdir();
//
// for(Colour c : ct.getAvailableColours()) {
// try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("data/clothing/"+ct+"/"+ct.getName().replaceAll(" ", "_")+"_"+c+".svg"), "utf-8"))) {
// writer.write(ct.getSVGImage(c));
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
// dir = new File("data/items");
// dir.mkdir();
// for (ItemType ct : ItemType.values()) {
//
//
// try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("data/items/"+ct.getName(false).replaceAll(" ", "_")+".svg"), "utf-8"))) {
// writer.write(ct.getSVGString());
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// dir = new File("data/weapons");
// dir.mkdir();
// for (WeaponType ct : WeaponType.values()) {
//
// for(DamageType dt : ct.getAvailableDamageTypes())
// try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("data/weapons/"+ct.getName().replaceAll(" ", "_")+"("+dt+").svg"), "utf-8"))) {
// writer.write(ct.getSVGStringMap().get(dt));
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// dir = new File("data/statusEffects");
// dir.mkdir();
// for (StatusEffect se : StatusEffect.values()) {
// if(!se.isSexEffect()) {
// try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("data/statusEffects/"+se+"("+se.getName(Main.game.getPlayer()).replaceAll(" ", "_")+").svg"), "utf-8"))) {
// writer.write(se.getSVGString(Main.game.getPlayer()));
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// }
// dir = new File("data/fetishes");
// dir.mkdir();
// for (Fetish se : Fetish.values()) {
//
// try (Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("data/fetishes/"+se+"("+se.getName(Main.game.getPlayer()).replaceAll(" ", "_")+").svg"), "utf-8"))) {
// writer.write(se.getSVGString());
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
// Main.getProperties().savePropertiesAsXML();
// System.out.println("Free memory (bytes) -gc: " + Runtime.getRuntime().freeMemory());
// System.gc();
// System.out.println("Free memory (bytes) +gc: " + Runtime.getRuntime().freeMemory());
// System.out.println("Body sizes:");
// for(BodySize bs : BodySize.values()) {
// System.out.println(bs.getName(false));
// }
// System.out.println("");
// System.out.println("Muscle:");
// for(Muscle m : Muscle.values()) {
// System.out.println(m.getName(false));
// }
// System.out.println("");
// System.out.println("");
// System.out.println("Body shapes:");
// for(BodyShape bs : BodyShape.values()) {
// System.out.println(bs.getRelatedBodySize().getName(false)+" + "+bs.getRelatedMuscle().getName(false)+" = "+bs.getName());
// }
}
// Escape Menu:
if (keyEventMatchesBindings(KeyboardAction.MENU, event))
openOptions();
// Movement:
if (keyEventMatchesBindings(KeyboardAction.MOVE_NORTH, event)) {
if (!Main.game.getCurrentDialogueNode().isTravelDisabled()) {
moveNorth();
} else {
Main.game.responseNavigationUp();
}
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_WEST, event)) {
if (!Main.game.getCurrentDialogueNode().isTravelDisabled()) {
moveWest();
} else {
Main.game.responseNavigationLeft();
}
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_SOUTH, event)) {
if (!Main.game.getCurrentDialogueNode().isTravelDisabled()) {
moveSouth();
} else {
Main.game.responseNavigationDown();
}
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_EAST, event)) {
if (!Main.game.getCurrentDialogueNode().isTravelDisabled()) {
moveEast();
} else {
Main.game.responseNavigationRight();
}
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_RESPONSE_CURSOR_NORTH, event)) {
Main.game.responseNavigationUp();
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_RESPONSE_CURSOR_WEST, event)) {
Main.game.responseNavigationLeft();
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_RESPONSE_CURSOR_SOUTH, event)) {
Main.game.responseNavigationDown();
}
if (keyEventMatchesBindings(KeyboardAction.MOVE_RESPONSE_CURSOR_EAST, event)) {
Main.game.responseNavigationRight();
}
// Game stuff:
if (keyEventMatchesBindings(KeyboardAction.QUICKSAVE, event)) {
Main.quickSaveGame();
}
if (keyEventMatchesBindings(KeyboardAction.QUICKLOAD, event)) {
Main.quickLoadGame();
}
boolean allowInput = true;
boolean enterConsumed = false;
// Name selections:
if (Main.game.getCurrentDialogueNode() == CharacterCreation.CHOOSE_NAME || Main.game.getCurrentDialogueNode() == CityHall.CITY_HALL_NAME_CHANGE_FORM) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('nameInput') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.game.setContent(1);
}
}
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('surnameInput') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.game.setContent(1);
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.ROOM_UPGRADES) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('nameInput') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('nameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('nameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename Room", "Rename this room to whatever you've entered in the text box.", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getPlayerCell().getPlace().setName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
});
} else {
Main.game.setContent(new Response("Rename Room", "", Main.game.getCurrentDialogueNode()));
}
}
}
}
}
if (Main.game.getCurrentDialogueNode() == CityHall.CITY_HALL_NAME_CHANGE_FORM) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('nameInput') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.game.setContent(1);
}
}
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.SAVE_LOAD) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('new_save_name') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenPField').innerHTML=document.getElementById('new_save_name').value;");
if (Main.isSaveGameAvailable()) {
Main.saveGame(Main.mainController.getWebEngine().getDocument().getElementById("hiddenPField").getTextContent(), false);
}
Main.game.setContent(new Response("Save", "", Main.game.getCurrentDialogueNode()));
}
}
}
if (Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_INSPECT || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_JOBS || Main.game.getCurrentDialogueNode() == SlaveryManagementDialogue.SLAVE_MANAGEMENT_PERMISSIONS) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('slaveToPlayerNameInput') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('slaveToPlayerNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('slaveToPlayerNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setPlayerPetName(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent());
}
});
} else {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()));
}
}
}
}
if (((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('slaveNameInput') === document.activeElement"))) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
boolean unsuitableName = false;
if (Main.mainController.getWebEngine().executeScript("document.getElementById('slaveNameInput')") != null) {
Main.mainController.getWebEngine().executeScript("document.getElementById('hiddenFieldName').innerHTML=document.getElementById('slaveNameInput').value;");
if (Main.mainController.getWebEngine().getDocument() != null) {
unsuitableName = Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() < 1 || Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent().length() > 32;
}
if (!unsuitableName) {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()) {
@Override
public void effects() {
Main.game.getDialogueFlags().getSlaveryManagerSlaveSelected().setName(new NameTriplet(Main.mainController.getWebEngine().getDocument().getElementById("hiddenFieldName").getTextContent()));
}
});
} else {
Main.game.setContent(new Response("Rename", "", Main.game.getCurrentDialogueNode()));
}
}
}
}
}
if (((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('offspringPetNameInput') === document.activeElement"))) {
allowInput = false;
}
if (Main.game.getCurrentDialogueNode() == OptionsDialogue.OPTIONS_PRONOUNS) {
for (GenderPronoun gp : GenderPronoun.values()) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('feminine_" + gp + "') === document.activeElement") || (boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('masculine_" + gp + "') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.game.setContent(1);
}
}
}
for (GenderNames genderName : GenderNames.values()) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('GENDER_NAME_MASCULINE_" + genderName + "') === document.activeElement") || (boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('GENDER_NAME_ANDROGYNOUS_" + genderName + "') === document.activeElement") || (boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('GENDER_NAME_FEMININE_" + genderName + "') === document.activeElement")) {
allowInput = false;
if (event.getCode() == KeyCode.ENTER) {
enterConsumed = true;
Main.game.setContent(1);
}
}
}
}
if (Main.game.getCurrentDialogueNode() == DebugDialogue.PARSER) {
if ((boolean) Main.mainController.getWebEngine().executeScript("document.getElementById('parseInput') === document.activeElement"))
allowInput = false;
}
if (allowInput) {
if (keyEventMatchesBindings(KeyboardAction.INVENTORY, event))
openInventory();
if (keyEventMatchesBindings(KeyboardAction.JOURNAL, event))
openPhone();
if (keyEventMatchesBindings(KeyboardAction.CHARACTERS, event))
openCharactersPresent(null);
if (keyEventMatchesBindings(KeyboardAction.ZOOM, event))
zoomMap();
if (keyEventMatchesBindings(KeyboardAction.SCROLL_UP, event))
Main.mainController.getWebEngine().executeScript("document.getElementById('main-content').scrollTop -= 50");
if (keyEventMatchesBindings(KeyboardAction.SCROLL_DOWN, event))
Main.mainController.getWebEngine().executeScript("document.getElementById('main-content').scrollTop += 50");
// Responses:
KeyboardAction[] keyboardActionsForResponses = { KeyboardAction.RESPOND_0, KeyboardAction.RESPOND_1, KeyboardAction.RESPOND_2, KeyboardAction.RESPOND_3, KeyboardAction.RESPOND_4, KeyboardAction.RESPOND_5, KeyboardAction.RESPOND_6, KeyboardAction.RESPOND_7, KeyboardAction.RESPOND_8, KeyboardAction.RESPOND_9, KeyboardAction.RESPOND_10, KeyboardAction.RESPOND_11, KeyboardAction.RESPOND_12, KeyboardAction.RESPOND_13, KeyboardAction.RESPOND_14 };
for (int i = 0; i < keyboardActionsForResponses.length; i++) {
if (keyEventMatchesBindings(keyboardActionsForResponses[i], event)) {
processResponse(i);
}
}
if (keyEventMatchesBindings(KeyboardAction.MENU_SELECT, event)) {
if (event.getCode() == KeyCode.ENTER) {
if (!enterConsumed) {
Main.game.setContent(Main.game.getResponsePointer());
}
} else {
Main.game.setContent(Main.game.getResponsePointer());
}
}
}
// Next/Previous response tab:
if (keyEventMatchesBindings(KeyboardAction.RESPOND_NEXT_TAB, event)) {
if (Main.game.incrementResponseTab()) {
Main.game.updateResponses();
}
}
if (keyEventMatchesBindings(KeyboardAction.RESPOND_PREVIOUS_TAB, event)) {
if (Main.game.decrementResponseTab()) {
Main.game.updateResponses();
}
}
// Next/Previous response page:
if (keyEventMatchesBindings(KeyboardAction.RESPOND_NEXT_PAGE, event)) {
if (Main.game.isHasNextResponsePage()) {
Main.game.setResponsePage(Main.game.getResponsePage() + 1);
Main.game.updateResponses();
}
}
if (keyEventMatchesBindings(KeyboardAction.RESPOND_PREVIOUS_PAGE, event)) {
if (Main.game.getResponsePage() != 0) {
Main.game.setResponsePage(Main.game.getResponsePage() - 1);
Main.game.updateResponses();
}
}
}
}
}
};
actionKeyReleased = new EventHandler<KeyEvent>() {
public void handle(KeyEvent event) {
if (buttonsPressed.contains(event.getCode())) {
buttonsPressed.remove(event.getCode());
}
}
};
Main.primaryStage.addEventFilter(KeyEvent.KEY_PRESSED, actionKeyPressed);
Main.primaryStage.addEventFilter(KeyEvent.KEY_RELEASED, actionKeyReleased);
}
use of com.lilithsthrone.game.settings.KeyboardAction in project liliths-throne-public by Innoxia.
the class Game method getResponseHotkey.
private String getResponseHotkey(int i) {
if (!(0 <= i && i <= 14)) {
return "";
}
KeyboardAction[] keyboardActions = { KeyboardAction.RESPOND_0, KeyboardAction.RESPOND_1, KeyboardAction.RESPOND_2, KeyboardAction.RESPOND_3, KeyboardAction.RESPOND_4, KeyboardAction.RESPOND_5, KeyboardAction.RESPOND_6, KeyboardAction.RESPOND_7, KeyboardAction.RESPOND_8, KeyboardAction.RESPOND_9, KeyboardAction.RESPOND_10, KeyboardAction.RESPOND_11, KeyboardAction.RESPOND_12, KeyboardAction.RESPOND_13, KeyboardAction.RESPOND_14 };
KeyboardAction currentAction = keyboardActions[i];
KeyCodeWithModifiers hotkeyForCurrentAction = Main.getProperties().hotkeyMapPrimary.get(currentAction);
if (hotkeyForCurrentAction == null) {
return "";
} else {
return hotkeyForCurrentAction.asHotkey();
}
}
use of com.lilithsthrone.game.settings.KeyboardAction in project liliths-throne-public by Innoxia.
the class Properties method savePropertiesAsXML.
public void savePropertiesAsXML() {
try {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element properties = doc.createElement("properties");
doc.appendChild(properties);
// Previous save information:
Element previousSave = doc.createElement("previousSave");
properties.appendChild(previousSave);
createXMLElementWithValue(doc, previousSave, "location", lastSaveLocation);
createXMLElementWithValue(doc, previousSave, "nameColour", nameColour);
createXMLElementWithValue(doc, previousSave, "name", name);
createXMLElementWithValue(doc, previousSave, "race", race);
createXMLElementWithValue(doc, previousSave, "quest", quest);
createXMLElementWithValue(doc, previousSave, "level", String.valueOf(level));
createXMLElementWithValue(doc, previousSave, "money", String.valueOf(money));
createXMLElementWithValue(doc, previousSave, "arcaneEssences", String.valueOf(arcaneEssences));
createXMLElementWithValue(doc, previousSave, "versionNumber", Main.VERSION_NUMBER);
createXMLElementWithValue(doc, previousSave, "lastQuickSaveName", lastQuickSaveName);
// Game settings:
Element settings = doc.createElement("settings");
properties.appendChild(settings);
createXMLElementWithValue(doc, settings, "fontSize", String.valueOf(fontSize));
createXMLElementWithValue(doc, settings, "lightTheme", String.valueOf(lightTheme));
createXMLElementWithValue(doc, settings, "furryTailPenetrationContent", String.valueOf(furryTailPenetrationContent));
createXMLElementWithValue(doc, settings, "nonConContent", String.valueOf(nonConContent));
createXMLElementWithValue(doc, settings, "incestContent", String.valueOf(incestContent));
createXMLElementWithValue(doc, settings, "inflationContent", String.valueOf(inflationContent));
createXMLElementWithValue(doc, settings, "facialHairContent", String.valueOf(facialHairContent));
createXMLElementWithValue(doc, settings, "pubicHairContent", String.valueOf(pubicHairContent));
createXMLElementWithValue(doc, settings, "bodyHairContent", String.valueOf(bodyHairContent));
createXMLElementWithValue(doc, settings, "feminineBeardsContent", String.valueOf(feminineBeardsContent));
createXMLElementWithValue(doc, settings, "overwriteWarning", String.valueOf(overwriteWarning));
createXMLElementWithValue(doc, settings, "fadeInText", String.valueOf(fadeInText));
createXMLElementWithValue(doc, settings, "calendarDisplay", String.valueOf(calendarDisplay));
createXMLElementWithValue(doc, settings, "twentyFourHourTime", String.valueOf(twentyFourHourTime));
createXMLElementWithValue(doc, settings, "androgynousIdentification", String.valueOf(androgynousIdentification));
createXMLElementWithValue(doc, settings, "humanEncountersLevel", String.valueOf(humanEncountersLevel));
createXMLElementWithValue(doc, settings, "multiBreasts", String.valueOf(multiBreasts));
createXMLElementWithValue(doc, settings, "forcedTFPercentage", String.valueOf(forcedTFPercentage));
createXMLElementWithValue(doc, settings, "pregnancyBreastGrowthVariance", String.valueOf(pregnancyBreastGrowthVariance));
createXMLElementWithValue(doc, settings, "pregnancyBreastGrowth", String.valueOf(pregnancyBreastGrowth));
createXMLElementWithValue(doc, settings, "pregnancyBreastGrowthLimit", String.valueOf(pregnancyBreastGrowthLimit));
createXMLElementWithValue(doc, settings, "pregnancyLactationIncreaseVariance", String.valueOf(pregnancyLactationIncreaseVariance));
createXMLElementWithValue(doc, settings, "pregnancyLactationIncrease", String.valueOf(pregnancyLactationIncrease));
createXMLElementWithValue(doc, settings, "pregnancyLactationLimit", String.valueOf(pregnancyLactationLimit));
createXMLElementWithValue(doc, settings, "forcedFetishPercentage", String.valueOf(forcedFetishPercentage));
createXMLElementWithValue(doc, settings, "newWeaponDiscovered", String.valueOf(newWeaponDiscovered));
createXMLElementWithValue(doc, settings, "newClothingDiscovered", String.valueOf(newClothingDiscovered));
createXMLElementWithValue(doc, settings, "newItemDiscovered", String.valueOf(newItemDiscovered));
createXMLElementWithValue(doc, settings, "newRaceDiscovered", String.valueOf(newRaceDiscovered));
createXMLElementWithValue(doc, settings, "difficultyLevel", difficultyLevel.toString());
// Game key binds:
Element keyBinds = doc.createElement("keyBinds");
properties.appendChild(keyBinds);
for (KeyboardAction ka : KeyboardAction.values()) {
Element element = doc.createElement("binding");
keyBinds.appendChild(element);
Attr bindName = doc.createAttribute("bindName");
bindName.setValue(ka.toString());
element.setAttributeNode(bindName);
Attr primaryBind = doc.createAttribute("primaryBind");
if (hotkeyMapPrimary.get(ka) != null)
primaryBind.setValue(hotkeyMapPrimary.get(ka).toString());
else
primaryBind.setValue("");
element.setAttributeNode(primaryBind);
Attr secondaryBind = doc.createAttribute("secondaryBind");
if (hotkeyMapSecondary.get(ka) != null)
secondaryBind.setValue(hotkeyMapSecondary.get(ka).toString());
else
secondaryBind.setValue("");
element.setAttributeNode(secondaryBind);
}
// Gender names:
Element genderNames = doc.createElement("genderNames");
properties.appendChild(genderNames);
for (GenderNames gp : GenderNames.values()) {
Element element = doc.createElement("genderName");
genderNames.appendChild(element);
Attr pronounName = doc.createAttribute("name");
pronounName.setValue(gp.toString());
element.setAttributeNode(pronounName);
Attr feminineValue = doc.createAttribute("feminineValue");
if (genderNameFemale.get(gp) != null) {
feminineValue.setValue(genderNameFemale.get(gp));
} else {
feminineValue.setValue(gp.getFeminine());
}
element.setAttributeNode(feminineValue);
Attr masculineValue = doc.createAttribute("masculineValue");
if (genderNameMale.get(gp) != null) {
masculineValue.setValue(genderNameMale.get(gp));
} else {
masculineValue.setValue(gp.getMasculine());
}
element.setAttributeNode(masculineValue);
Attr neutralValue = doc.createAttribute("neutralValue");
if (genderNameNeutral.get(gp) != null) {
neutralValue.setValue(genderNameNeutral.get(gp));
} else {
neutralValue.setValue(gp.getNeutral());
}
element.setAttributeNode(neutralValue);
}
// Gender pronouns:
Element pronouns = doc.createElement("genderPronouns");
properties.appendChild(pronouns);
for (GenderPronoun gp : GenderPronoun.values()) {
Element element = doc.createElement("pronoun");
pronouns.appendChild(element);
Attr pronounName = doc.createAttribute("pronounName");
pronounName.setValue(gp.toString());
element.setAttributeNode(pronounName);
Attr feminineValue = doc.createAttribute("feminineValue");
if (genderPronounFemale.get(gp) != null)
feminineValue.setValue(genderPronounFemale.get(gp));
else
feminineValue.setValue(gp.getFeminine());
element.setAttributeNode(feminineValue);
Attr masculineValue = doc.createAttribute("masculineValue");
if (genderPronounMale.get(gp) != null)
masculineValue.setValue(genderPronounMale.get(gp));
else
masculineValue.setValue(gp.getMasculine());
element.setAttributeNode(masculineValue);
}
// Gender preferences:
Element genderPreferences = doc.createElement("genderPreferences");
properties.appendChild(genderPreferences);
for (Gender g : Gender.values()) {
Element element = doc.createElement("preference");
genderPreferences.appendChild(element);
Attr gender = doc.createAttribute("gender");
gender.setValue(g.toString());
element.setAttributeNode(gender);
Attr value = doc.createAttribute("value");
value.setValue(String.valueOf(genderPreferencesMap.get(g).intValue()));
element.setAttributeNode(value);
}
// Forced TF settings:
createXMLElementWithValue(doc, settings, "forcedTFPreference", String.valueOf(forcedTFPreference));
createXMLElementWithValue(doc, settings, "forcedTFTendency", String.valueOf(forcedTFTendency));
createXMLElementWithValue(doc, settings, "forcedFetishTendency", String.valueOf(forcedFetishTendency));
// Race preferences:
Element racePreferences = doc.createElement("subspeciesPreferences");
properties.appendChild(racePreferences);
for (Subspecies s : Subspecies.values()) {
Element element = doc.createElement("preferenceFeminine");
racePreferences.appendChild(element);
Attr race = doc.createAttribute("subspecies");
race.setValue(s.toString());
element.setAttributeNode(race);
Attr preference = doc.createAttribute("preference");
preference.setValue(subspeciesFemininePreferencesMap.get(s).toString());
element.setAttributeNode(preference);
preference = doc.createAttribute("furryPreference");
preference.setValue(subspeciesFeminineFurryPreferencesMap.get(s).toString());
element.setAttributeNode(preference);
element = doc.createElement("preferenceMasculine");
racePreferences.appendChild(element);
race = doc.createAttribute("subspecies");
race.setValue(s.toString());
element.setAttributeNode(race);
preference = doc.createAttribute("preference");
preference.setValue(subspeciesMasculinePreferencesMap.get(s).toString());
element.setAttributeNode(preference);
preference = doc.createAttribute("furryPreference");
preference.setValue(subspeciesMasculineFurryPreferencesMap.get(s).toString());
element.setAttributeNode(preference);
}
// Discoveries:
Element itemsDiscovered = doc.createElement("itemsDiscovered");
properties.appendChild(itemsDiscovered);
for (AbstractItemType itemType : this.itemsDiscovered) {
Element element = doc.createElement("itemType");
itemsDiscovered.appendChild(element);
Attr hash = doc.createAttribute("id");
hash.setValue(itemType.getId());
element.setAttributeNode(hash);
}
Element weaponsDiscovered = doc.createElement("weaponsDiscovered");
properties.appendChild(weaponsDiscovered);
for (AbstractWeaponType weaponType : this.weaponsDiscovered) {
Element element = doc.createElement("weaponType");
weaponsDiscovered.appendChild(element);
Attr hash = doc.createAttribute("id");
hash.setValue(weaponType.getId());
element.setAttributeNode(hash);
}
Element clothingDiscovered = doc.createElement("clothingDiscovered");
properties.appendChild(clothingDiscovered);
for (AbstractClothingType clothingType : this.clothingDiscovered) {
Element element = doc.createElement("clothingType");
clothingDiscovered.appendChild(element);
Attr hash = doc.createAttribute("id");
if (clothingType != null)
hash.setValue(clothingType.getId());
element.setAttributeNode(hash);
}
Element racesDiscovered = doc.createElement("racesDiscovered");
properties.appendChild(racesDiscovered);
for (Race race : Race.values()) {
Element element = doc.createElement("raceDiscovery");
racesDiscovered.appendChild(element);
Attr discovered = doc.createAttribute("race");
discovered.setValue(race.toString());
element.setAttributeNode(discovered);
discovered = doc.createAttribute("discovered");
discovered.setValue(String.valueOf(this.racesDiscovered.contains(race)));
element.setAttributeNode(discovered);
discovered = doc.createAttribute("advancedKnowledge");
discovered.setValue(String.valueOf(this.racesAdvancedKnowledge.contains(race)));
element.setAttributeNode(discovered);
}
// Write out to properties.xml:
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("data/properties.xml"));
transformer.transform(source, result);
} catch (ParserConfigurationException | TransformerException e) {
e.printStackTrace();
}
}
Aggregations