Skip to content

Commit

Permalink
Refactored some, continuing to add functionality
Browse files Browse the repository at this point in the history
  • Loading branch information
CaptainSly committed Aug 19, 2024
1 parent d8796bb commit 22c6997
Show file tree
Hide file tree
Showing 30 changed files with 203 additions and 40 deletions.
9 changes: 9 additions & 0 deletions src/main/java/io/azraein/inkfx/InkFX.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import io.azraein.paperfx.system.exceptions.PluginCorruptionException;
import io.azraein.paperfx.system.inventory.items.Item;
import io.azraein.paperfx.system.inventory.items.Lootlist;
import io.azraein.paperfx.system.inventory.items.equipment.Equipment;
import io.azraein.paperfx.system.io.Database;
import io.azraein.paperfx.system.io.SaveSystem;
import io.azraein.paperfx.system.io.plugins.PaperPlugin;
Expand Down Expand Up @@ -63,6 +64,7 @@ public class InkFX extends Application {
// Everything gets loaded here, but nothing gets saved.
private final ObservableMap<String, Object> observableGlobalRegistry = FXCollections.observableHashMap();
private final ObservableMap<String, Item> observableItemRegistry = FXCollections.observableHashMap();
private final ObservableMap<String, Equipment> observableEquipmentRegistry = FXCollections.observableHashMap();
private final ObservableMap<String, Lootlist> observableLootlistRegistry = FXCollections.observableHashMap();
private final ObservableMap<String, ActorRace> observableActorRaceRegistry = FXCollections.observableHashMap();
private final ObservableMap<String, ActorClass> observableActorClassRegistry = FXCollections.observableHashMap();
Expand Down Expand Up @@ -285,6 +287,7 @@ public void mergeDatabase(Database database) {
this.getObservableQuestRegistry().putAll(database.getQuestRegistry());
this.getObservableLootlistRegistry().putAll(database.getLootlistRegistry());
this.getObservableActionRegistry().putAll(database.getActionRegistry());
this.getObservableEquipmentRegistry().putAll(database.getEquipmentRegistry());
}

public void clearDatabase() {
Expand All @@ -298,6 +301,7 @@ public void clearDatabase() {
this.getObservableQuestRegistry().clear();
this.getObservableLootlistRegistry().clear();
this.getObservableActionRegistry().clear();
this.getObservableEquipmentRegistry().clear();
}

public void swapScreens(String screenId) {
Expand All @@ -312,10 +316,15 @@ public Stage getPrimaryStage() {
return primaryStage;
}


public ObjectProperty<PaperPlugin> currentPluginProperty() {
return currentPluginProperty;
}

public ObservableMap<String, Equipment> getObservableEquipmentRegistry() {
return observableEquipmentRegistry;
}

public ObservableMap<String, Action> getObservableActionRegistry() {
return observableActionRegistry;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package io.azraein.inkfx.controls.tab.groups;

import io.azraein.inkfx.InkFX;
import io.azraein.inkfx.controls.tab.systemTabs.ActionTab;
import io.azraein.inkfx.controls.tab.systemTabs.LuaTab;

public class SystemGroupTab extends PaperGroupTab {

public SystemGroupTab(InkFX inkFX) {
super(inkFX);
setText("System Editors");
addTab(new ActionTab(inkFX));
addTab(new LuaTab(inkFX));

}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package io.azraein.inkfx.controls.tab.systemTabs;

import io.azraein.inkfx.InkFX;
import io.azraein.inkfx.controls.tab.PaperEditorTab;

public class ActionTab extends PaperEditorTab {

public ActionTab(InkFX inkFX) {
super(inkFX);
setText("Action Editor");
}

}
21 changes: 21 additions & 0 deletions src/main/java/io/azraein/inkfx/controls/tab/systemTabs/LuaTab.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package io.azraein.inkfx.controls.tab.systemTabs;

import io.azraein.inkfx.InkFX;
import io.azraein.inkfx.controls.tab.PaperEditorTab;

// TODO: Get basic Lua Syntax Highlighting Started and we can call this finished
/*
* Ultimately it'd be nice to have a few more features than just being
* a glorified text editor, but it'd honestly add a lot of bloat and the
* text editor part itself is already going to be a hassle.
*/


public class LuaTab extends PaperEditorTab {

public LuaTab(InkFX inkFX) {
super(inkFX);
setText("Lua Editor");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.azraein.inkfx.controls.tab.groups.LocationGroupTab;
import io.azraein.inkfx.controls.tab.groups.NpcGroupTab;
import io.azraein.inkfx.controls.tab.groups.QuestGroupTab;
import io.azraein.inkfx.controls.tab.groups.SystemGroupTab;
import javafx.scene.control.TabPane;
import javafx.scene.control.TabPane.TabDragPolicy;

Expand All @@ -18,6 +19,7 @@ public PluginContentEditorScreen(InkFX inkFX) {
contentEditorTabPane.getTabs().add(new LocationGroupTab(inkFX));
contentEditorTabPane.getTabs().add(new ItemGroupTab(inkFX));
contentEditorTabPane.getTabs().add(new QuestGroupTab(inkFX));
contentEditorTabPane.getTabs().add(new SystemGroupTab(inkFX));

setCenter(contentEditorTabPane);
}
Expand Down
10 changes: 5 additions & 5 deletions src/main/java/io/azraein/paperfx/PaperFX.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,6 @@
import org.tinylog.Logger;

import io.azraein.inkfx.dialog.PluginSelectionResult;
import io.azraein.paperfx.controls.dialog.CharacterCreationDialog;
import io.azraein.paperfx.controls.dialog.PaperPluginSelectionDialog;
import io.azraein.paperfx.screens.GameScreen;
import io.azraein.paperfx.screens.MainMenuScreen;
import io.azraein.paperfx.screens.PaperScreen;
import io.azraein.paperfx.system.Paper;
import io.azraein.paperfx.system.Utils;
import io.azraein.paperfx.system.io.Database;
Expand All @@ -24,6 +19,11 @@
import io.azraein.paperfx.system.io.plugins.PaperPluginLoader;
import io.azraein.paperfx.system.io.plugins.PaperPluginMetadata;
import io.azraein.paperfx.system.io.scripting.ScriptEngine;
import io.azraein.paperfx.ui.controls.dialog.CharacterCreationDialog;
import io.azraein.paperfx.ui.controls.dialog.PaperPluginSelectionDialog;
import io.azraein.paperfx.ui.screens.GameScreen;
import io.azraein.paperfx.ui.screens.MainMenuScreen;
import io.azraein.paperfx.ui.screens.PaperScreen;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/io/azraein/paperfx/system/actors/ActorState.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import io.azraein.paperfx.system.actors.stats.Skill;
import io.azraein.paperfx.system.actors.stats.Stat;
import io.azraein.paperfx.system.inventory.Inventory;
import io.azraein.paperfx.system.inventory.items.equipment.Equipment;
import io.azraein.paperfx.system.inventory.items.equipment.EquipmentSlot;

// TODO: Stat Implementation still needs work
public class ActorState implements Serializable {
Expand Down Expand Up @@ -40,6 +42,8 @@ public class ActorState implements Serializable {
private Stat<Attribute>[] actorAttributes;
private Stat<Skill>[] actorSkills;

private String[] equipmentSlots;

// Actor Inventory
private Inventory actorInventory;
private double actorCarryWeight;
Expand All @@ -65,6 +69,8 @@ public ActorState(String actorName, String actorDescription, ActorClass actorCla
initializeAttributes();
initializeSkills();

equipmentSlots = new String[EquipmentSlot.values().length];

actorCarryWeight = actorAttributes[Attribute.STRENGTH.ordinal()].getLevel() * 5;
actorCurrentHp = actorMaxHp = (actorAttributes[Attribute.CONSTITUTION.ordinal()].getLevel() * 2);
actorCurrentMp = actorMaxMp = (actorAttributes[Attribute.INTELLIGENCE.ordinal()].getLevel() * 2);
Expand Down Expand Up @@ -171,6 +177,14 @@ public int getActorCurrentMp() {
return actorCurrentMp;
}

public Equipment getEquipment(EquipmentSlot slot) {
return Paper.DATABASE.getEquipment(equipmentSlots[slot.ordinal()]);
}

public String[] getEquipmentSlots() {
return equipmentSlots;
}

public Stat<Attribute>[] getActorAttributes() {
return actorAttributes;
}
Expand Down Expand Up @@ -203,6 +217,10 @@ public Inventory getActorInventory() {
return actorInventory;
}

public void setActorEquipment(Equipment equipment, EquipmentSlot slot) {
equipmentSlots[slot.ordinal()] = equipment.getEquipmentId();
}

public void setActorName(String actorName) {
this.actorName = actorName;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ public Item(String itemId, String itemType, String itemName, String itemDescript

public void onUse() {
if (!itemScript.isEmpty())
Paper.SE.runFunction(itemScript, "onUse", CoerceJavaToLua.coerce(Paper.PAPER_PLAYER_PROPERTY.get()));
Paper.SE.runFunction(itemScript, "onUse",
CoerceJavaToLua.coerce(Paper.PAPER_PLAYER_PROPERTY.get().getActorState()));
}

public String getItemId() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
package io.azraein.paperfx.system.inventory.items.equipment;

import java.io.Serializable;

import org.luaj.vm2.lib.jse.CoerceJavaToLua;

import io.azraein.paperfx.system.Paper;
import io.azraein.paperfx.system.actors.Actor;

public class Equipment implements Serializable {

private static final long serialVersionUID = 6870777223465173466L;

private String equipmentId;
private String equipmentName;
private String equipmentDescription;

private String equipmentScript;

private EquipmentSlot equipmentSlotType;

public Equipment(String equipmentId, String equipmentName, String equipmentDescription,
EquipmentSlot equipmentSlotType) {
this.equipmentId = equipmentId;
this.equipmentName = equipmentName;
this.equipmentDescription = equipmentDescription;
this.equipmentSlotType = equipmentSlotType;

equipmentScript = "";
}

public void onEquip(Actor actor) {
if (!equipmentScript.isEmpty()) {
Paper.SE.runFunction(equipmentScript, "onEquip", CoerceJavaToLua.coerce(actor.getActorState()));
}

actor.getActorState().setActorEquipment(this, equipmentSlotType);
}

public void onUnequip(Actor actor) {
if (!equipmentScript.isEmpty()) {
Paper.SE.runFunction(equipmentScript, "onUnequip", CoerceJavaToLua.coerce(actor.getActorState()));
}

actor.getActorState().setActorEquipment(null, equipmentSlotType);
}

public String getEquipmentId() {
return equipmentId;
}

public String getEquipmentName() {
return equipmentName;
}

public String getEquipmentDescription() {
return equipmentDescription;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package io.azraein.paperfx.system.inventory.items.equipment;

public enum EquipmentSlot {

HEAD, NECK, HANDS, CHEST, FEET

}
15 changes: 15 additions & 0 deletions src/main/java/io/azraein/paperfx/system/io/Database.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import io.azraein.paperfx.system.actors.classes.ActorRace;
import io.azraein.paperfx.system.inventory.items.Item;
import io.azraein.paperfx.system.inventory.items.Lootlist;
import io.azraein.paperfx.system.inventory.items.equipment.Equipment;
import io.azraein.paperfx.system.locations.Location;
import io.azraein.paperfx.system.locations.buildings.Building;
import io.azraein.paperfx.system.quest.Quest;
Expand All @@ -21,6 +22,7 @@ public class Database implements Serializable {

private Map<String, Object> globalRegistry = new HashMap<>();
private Map<String, Item> itemRegistry = new HashMap<>();
private Map<String, Equipment> equipmentRegistry = new HashMap<>();
private Map<String, Lootlist> lootlistRegistry = new HashMap<>();
private Map<String, ActorRace> actorRaceRegistry = new HashMap<>();
private Map<String, ActorClass> actorClassRegistry = new HashMap<>();
Expand All @@ -30,6 +32,14 @@ public class Database implements Serializable {
private Map<String, Quest> questRegistry = new HashMap<>();
private Map<String, Action> actionRegistry = new HashMap<>();

public void addEquipment(Equipment equipment) {
equipmentRegistry.put(equipment.getEquipmentId(), equipment);
}

public Equipment getEquipment(String equipmentId) {
return equipmentRegistry.get(equipmentId);
}

public void addAction(Action action) {
actionRegistry.put(action.getActionId(), action);
}
Expand Down Expand Up @@ -127,13 +137,18 @@ public void mergeDatabase(Database database) {
this.getQuestRegistry().putAll(database.getQuestRegistry());
this.getLootlistRegistry().putAll(database.getLootlistRegistry());
this.getActionRegistry().putAll(database.getActionRegistry());
this.getEquipmentRegistry().putAll(database.getEquipmentRegistry());
}

public void mergeDatabase(Database... databases) {
for (Database database : databases)
mergeDatabase(database);
}

public Map<String, Equipment> getEquipmentRegistry() {
return equipmentRegistry;
}

public Map<String, Action> getActionRegistry() {
return actionRegistry;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls;
package io.azraein.paperfx.ui.controls;

import org.tinylog.Logger;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package io.azraein.paperfx.controls;
package io.azraein.paperfx.ui.controls;

import io.azraein.paperfx.PaperFX;
import io.azraein.paperfx.controls.cells.ActionListCell;
import io.azraein.paperfx.controls.cells.BuildingListCell;
import io.azraein.paperfx.controls.cells.NpcListCell;
import io.azraein.paperfx.system.Action;
import io.azraein.paperfx.system.Paper;
import io.azraein.paperfx.system.actors.Npc;
import io.azraein.paperfx.system.locations.Location;
import io.azraein.paperfx.system.locations.buildings.Building;
import io.azraein.paperfx.ui.controls.cells.ActionListCell;
import io.azraein.paperfx.ui.controls.cells.BuildingListCell;
import io.azraein.paperfx.ui.controls.cells.NpcListCell;
import javafx.geometry.Insets;
import javafx.scene.control.Label;
import javafx.scene.control.ListView;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls;
package io.azraein.paperfx.ui.controls;

import io.azraein.paperfx.system.world.Calendar;
import javafx.scene.control.Menu;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.azraein.paperfx.controls;
package io.azraein.paperfx.ui.controls;

import io.azraein.paperfx.screens.GameScreen;
import io.azraein.paperfx.system.Utils;
import io.azraein.paperfx.ui.screens.GameScreen;
import javafx.geometry.Insets;
import javafx.scene.control.Button;
import javafx.scene.control.Tooltip;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls.cells;
package io.azraein.paperfx.ui.controls.cells;

import io.azraein.paperfx.system.Action;
import javafx.scene.control.Button;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls.cells;
package io.azraein.paperfx.ui.controls.cells;

import io.azraein.paperfx.system.locations.buildings.Building;
import javafx.scene.control.ListCell;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls.cells;
package io.azraein.paperfx.ui.controls.cells;

import io.azraein.paperfx.system.actors.ActorState;
import io.azraein.paperfx.system.actors.Npc;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package io.azraein.paperfx.controls.cells;
package io.azraein.paperfx.ui.controls.cells;

import io.azraein.paperfx.controls.dialog.PaperPluginSelectionDialog;
import io.azraein.paperfx.system.io.plugins.PaperPluginMetadata;
import io.azraein.paperfx.ui.controls.dialog.PaperPluginSelectionDialog;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.scene.control.CheckBox;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.azraein.paperfx.controls.dialog;
package io.azraein.paperfx.ui.controls.dialog;

import java.util.Optional;

Expand Down
Loading

0 comments on commit 22c6997

Please sign in to comment.