mirror of
https://github.com/pagefaultgames/pokerogue.git
synced 2025-08-26 17:29:30 +02:00
parent
ecdc035ab5
commit
1b3175b85d
259
src/logger.ts
259
src/logger.ts
@ -22,9 +22,20 @@ import PokemonSpecies from "./data/pokemon-species";
|
||||
|
||||
// #region 01 Variables
|
||||
|
||||
// constants
|
||||
/** The number of enemy actions to log. */
|
||||
export const EnemyEventLogCount = 3
|
||||
// Value holders
|
||||
export const rarities = []
|
||||
export const rarityslot = [0, ""]
|
||||
export const Actions = []
|
||||
|
||||
// Booleans
|
||||
export const isPreSwitch: Utils.BooleanHolder = new Utils.BooleanHolder(false);
|
||||
export const isFaintSwitch: Utils.BooleanHolder = new Utils.BooleanHolder(false);
|
||||
export const SheetsMode = new Utils.BooleanHolder(false)
|
||||
|
||||
// (unused) Stores the current DRPD
|
||||
/** @deprecated */
|
||||
export var StoredLog: DRPD = undefined;
|
||||
|
||||
/** The current DRPD version. */
|
||||
export const DRPD_Version = "1.1.0"
|
||||
/** (Unused / reference only) All the log versions that this mod can keep updated.
|
||||
@ -36,25 +47,6 @@ export const acceptedVersions = [
|
||||
"1.1.0",
|
||||
]
|
||||
|
||||
// Value holders
|
||||
/** Holds the encounter rarities for the Pokemon in this wave. */
|
||||
export const rarities = []
|
||||
/** Used to store rarity tier between files when calculating and storing a Pokemon's encounter rarity.
|
||||
*
|
||||
* The second index is (very lazily) used to store a log's name/seed for `setFileInfo`.
|
||||
* @see setFileInfo
|
||||
*/
|
||||
export const rarityslot = [0, ""]
|
||||
/** Stores a list of the user's battle actions in a turn.
|
||||
*
|
||||
* Its contents are printed to the current wave's actions list, separated by pipes `|`, when the turn begins playing out. */
|
||||
export const Actions = []
|
||||
|
||||
// Booleans
|
||||
export const isPreSwitch: Utils.BooleanHolder = new Utils.BooleanHolder(false);
|
||||
export const isFaintSwitch: Utils.BooleanHolder = new Utils.BooleanHolder(false);
|
||||
export const SheetsMode = new Utils.BooleanHolder(false)
|
||||
|
||||
// #endregion
|
||||
|
||||
|
||||
@ -103,12 +95,6 @@ export function downloadLogByIDToSheet(i: integer) {
|
||||
|
||||
|
||||
// #region 03 Log Handler
|
||||
|
||||
|
||||
// These are general utilities for keeping track of the user's logs.
|
||||
// For the functions that log the player's actions, see "13. Logging Events"
|
||||
|
||||
|
||||
/**
|
||||
* Stores logs.
|
||||
* Generate a new list with `getLogs()`.
|
||||
@ -200,9 +186,6 @@ export function getMode(scene: BattleScene) {
|
||||
* @returns The DRPD file, or `null` if there is no file for this run.
|
||||
*/
|
||||
export function getDRPD(scene: BattleScene): DRPD {
|
||||
if (localStorage.getItem(getLogID(scene)) == null) {
|
||||
localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
}
|
||||
var drpd: DRPD = JSON.parse(localStorage.getItem(getLogID(scene))) as DRPD;
|
||||
if (drpd == undefined || drpd == null)
|
||||
return null;
|
||||
@ -565,17 +548,7 @@ export interface Wave {
|
||||
* @see PokeData
|
||||
* @see Wave.type
|
||||
*/
|
||||
pokemon?: PokeData[],
|
||||
/**
|
||||
* Contains the first 3 turns or so of the enemy's actions.
|
||||
* Used to check for refreshes.
|
||||
*/
|
||||
initialActions: string[],
|
||||
/**
|
||||
* Contains the names of the first set of modifier rewards.
|
||||
* Used to check for refreshes.
|
||||
*/
|
||||
modifiers: string[]
|
||||
pokemon?: PokeData[]
|
||||
}
|
||||
/**
|
||||
* Exports the current battle as a `Wave`.
|
||||
@ -591,9 +564,7 @@ export function exportWave(scene: BattleScene): Wave {
|
||||
actions: [],
|
||||
shop: "",
|
||||
clearActionsFlag: false,
|
||||
biome: getBiomeName(scene.arena.biomeType),
|
||||
initialActions: [],
|
||||
modifiers: []
|
||||
biome: getBiomeName(scene.arena.biomeType)
|
||||
}
|
||||
if (ret.double == undefined) ret.double = false;
|
||||
switch (ret.type) {
|
||||
@ -735,8 +706,6 @@ export function getWave(drpd: DRPD, floor: integer, scene: BattleScene): Wave {
|
||||
shop: "",
|
||||
clearActionsFlag: false,
|
||||
biome: getBiomeName(scene.arena.biomeType),
|
||||
initialActions: [],
|
||||
modifiers: [],
|
||||
//pokemon: []
|
||||
}
|
||||
wv = drpd.waves[insertPos]
|
||||
@ -770,8 +739,6 @@ export function getWave(drpd: DRPD, floor: integer, scene: BattleScene): Wave {
|
||||
shop: "",
|
||||
biome: getBiomeName(scene.arena.biomeType),
|
||||
clearActionsFlag: false,
|
||||
initialActions: [],
|
||||
modifiers: [],
|
||||
//pokemon: []
|
||||
})
|
||||
return drpd.waves[drpd.waves.length - 1]
|
||||
@ -808,8 +775,6 @@ export function getWave(drpd: DRPD, floor: integer, scene: BattleScene): Wave {
|
||||
shop: "",
|
||||
biome: getBiomeName(scene.arena.biomeType),
|
||||
clearActionsFlag: false,
|
||||
initialActions: [],
|
||||
modifiers: [],
|
||||
//pokemon: []
|
||||
}
|
||||
wv = drpd.waves[drpd.waves.length - 1]
|
||||
@ -838,8 +803,6 @@ export function getWave(drpd: DRPD, floor: integer, scene: BattleScene): Wave {
|
||||
shop: "",
|
||||
clearActionsFlag: false,
|
||||
biome: getBiomeName(scene.arena.biomeType),
|
||||
initialActions: [],
|
||||
modifiers: [],
|
||||
//pokemon: []
|
||||
}
|
||||
wv = drpd.waves[insertPos]
|
||||
@ -1256,12 +1219,12 @@ function printItemNoNewline(inData: string, indent: string, item: ItemData) {
|
||||
//#region 12 Ingame Menu
|
||||
|
||||
/**
|
||||
* Sets the name, author, and label for a file.
|
||||
* Sets the name, author, and [todo] label for a file.
|
||||
* @param title The display name of the file.
|
||||
* @param authors The author(s) of the file.
|
||||
* @todo Add label field.
|
||||
*/
|
||||
export function setFileInfo(title: string, authors: string[], label: string) {
|
||||
export function setFileInfo(title: string, authors: string[]) {
|
||||
console.log("Setting file " + rarityslot[1] + " to " + title + " / [" + authors.join(", ") + "]")
|
||||
var fileID = rarityslot[1] as string
|
||||
var drpd = JSON.parse(localStorage.getItem(fileID)) as DRPD;
|
||||
@ -1282,7 +1245,6 @@ export function setFileInfo(title: string, authors: string[], label: string) {
|
||||
}
|
||||
}
|
||||
drpd.authors = authors;
|
||||
drpd.label = label;
|
||||
localStorage.setItem(fileID, JSON.stringify(drpd))
|
||||
}
|
||||
|
||||
@ -1487,13 +1449,13 @@ export function generateEditHandlerForLog(scene: BattleScene, i: integer, callba
|
||||
*
|
||||
* This includes attacks you perform, items you transfer during the shop, Poke Balls you throw, running from battl, (or attempting to), and switching (including pre-switches).
|
||||
* @param scene The BattleScene. Used to get the log ID.
|
||||
* @param floor The wave index to write to. Defaults to the current floor.
|
||||
* @param floor The wave index to write to.
|
||||
* @param action The text you want to add to the actions list.
|
||||
*
|
||||
* @see resetWaveActions
|
||||
*/
|
||||
export function logActions(scene: BattleScene, floor: integer, action: string) {
|
||||
if (floor == undefined) floor = scene.currentBattle.waveIndex
|
||||
if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
console.log(`Logging an action: "${action}"`)
|
||||
var wv: Wave = getWave(drpd, floor, scene)
|
||||
@ -1511,13 +1473,13 @@ export function logActions(scene: BattleScene, floor: integer, action: string) {
|
||||
/**
|
||||
* Logs the actions that the player took, adding text to the most recent action.
|
||||
* @param scene The BattleScene. Used to get the log ID.
|
||||
* @param floor The wave index to write to. Defaults to the current floor.
|
||||
* @param floor The wave index to write to.
|
||||
* @param action The text you want to add to the actions list.
|
||||
*
|
||||
* @see resetWaveActions
|
||||
*/
|
||||
export function appendAction(scene: BattleScene, floor: integer, action: string) {
|
||||
if (floor == undefined) floor = scene.currentBattle.waveIndex
|
||||
if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
var wv: Wave = getWave(drpd, floor, scene)
|
||||
if (wv.clearActionsFlag) {
|
||||
@ -1543,6 +1505,7 @@ export function appendAction(scene: BattleScene, floor: integer, action: string)
|
||||
* @see resetWaveActions
|
||||
*/
|
||||
export function getActionCount(scene: BattleScene, floor: integer) {
|
||||
if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
console.log(`Checking action count`)
|
||||
console.log(drpd)
|
||||
@ -1559,11 +1522,11 @@ export function getActionCount(scene: BattleScene, floor: integer) {
|
||||
/**
|
||||
* Logs that a Pokémon was captured.
|
||||
* @param scene The BattleScene. Used to get the log ID.
|
||||
* @param floor The wave index to write to. Defaults to the current floor.
|
||||
* @param floor The wave index to write to.
|
||||
* @param target The Pokémon that you captured.
|
||||
*/
|
||||
export function logCapture(scene: BattleScene, floor: integer, target: EnemyPokemon) {
|
||||
if (floor == undefined) floor = scene.currentBattle.waveIndex
|
||||
//if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
console.log(`Logging successful capture: ${target.name}`)
|
||||
var wv: Wave = getWave(drpd, floor, scene)
|
||||
@ -1579,6 +1542,7 @@ export function logCapture(scene: BattleScene, floor: integer, target: EnemyPoke
|
||||
* @param scene The BattleScene. Used to get the log ID and the player's party.
|
||||
*/
|
||||
export function logPlayerTeam(scene: BattleScene) {
|
||||
if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
console.log(`Logging player starters: ${scene.getParty().map(p => p.name).join(", ")}`)
|
||||
var P = scene.getParty()
|
||||
@ -1598,6 +1562,7 @@ export function logPlayerTeam(scene: BattleScene) {
|
||||
*/
|
||||
export function logPokemon(scene: BattleScene, floor: integer = undefined, slot: integer, pokemon: EnemyPokemon, encounterRarity?: string) {
|
||||
if (floor == undefined) floor = scene.currentBattle.waveIndex
|
||||
if (localStorage.getItem(getLogID(scene)) == null) localStorage.setItem(getLogID(scene), JSON.stringify(newDocument(getMode(scene) + " Run")))
|
||||
var drpd = getDRPD(scene)
|
||||
console.log(`Logging opposing team member: ${pokemon.name}`)
|
||||
var wv: Wave = getWave(drpd, floor, scene)
|
||||
@ -1778,4 +1743,174 @@ export function resetWaveActions(scene: BattleScene, floor: integer = undefined,
|
||||
console.log("--> ", drpd)
|
||||
localStorage.setItem(getLogID(scene), JSON.stringify(drpd))
|
||||
}
|
||||
//#endregion
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//#region 14 Deprecated
|
||||
|
||||
/**
|
||||
* Writes data to a new line.
|
||||
* @param keyword The identifier key for the log you're writing to
|
||||
* @param data The string you're writing to the given log
|
||||
* @deprecated
|
||||
*/
|
||||
export function toLog(keyword: string, data: string) {
|
||||
localStorage.setItem(logs[logKeys.indexOf(keyword)][1], localStorage.getItem(logs[logKeys.indexOf(keyword)][1] + "\n" + data))
|
||||
}
|
||||
/**
|
||||
* Writes data on the same line you were on.
|
||||
* @param keyword The identifier key for the log you're writing to
|
||||
* @param data The string you're writing to the given log
|
||||
* @deprecated
|
||||
*/
|
||||
export function appendLog(keyword: string, data: string) {
|
||||
localStorage.setItem(logs[logKeys.indexOf(keyword)][1], localStorage.getItem(logs[logKeys.indexOf(keyword)][1] + data))
|
||||
}
|
||||
/**
|
||||
* Saves a log to your device.
|
||||
* @param keyword The identifier key for the log you want to save.
|
||||
* @deprecated
|
||||
*/
|
||||
export function downloadLog(keyword: string) {
|
||||
var d = JSON.parse(localStorage.getItem(logs[logKeys.indexOf(keyword)][1]))
|
||||
const blob = new Blob([ printDRPD("", "", d as DRPD) ], {type: "text/json"});
|
||||
const link = document.createElement("a");
|
||||
link.href = window.URL.createObjectURL(blob);
|
||||
var date: string = (d as DRPD).date
|
||||
var filename: string = date[0] + date[1] + "_" + date[3] + date[4] + "_" + date[6] + date[7] + date[8] + date[9] + "_route.json"
|
||||
link.download = `${filename}`;
|
||||
link.click();
|
||||
link.remove();
|
||||
}
|
||||
/**
|
||||
*
|
||||
* Clears all data from a log.
|
||||
* @param keyword The identifier key for the log you want to reste
|
||||
* @deprecated
|
||||
*/
|
||||
export function clearLog(keyword: string) {
|
||||
localStorage.setItem(logs[logKeys.indexOf(keyword)][1], "---- " + logs[logKeys.indexOf(keyword)][3] + " ----" + logs[logKeys.indexOf(keyword)][5])
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an option to create a new log.
|
||||
*
|
||||
* Not used.
|
||||
* @param i The slot number. Corresponds to an index in `logs`.
|
||||
* @param scene The current scene. Not used.
|
||||
* @param o The current game phase. Used to return to the previous menu. Not necessary anymore lol
|
||||
* @returns A UI option.
|
||||
*
|
||||
* wow this function sucks
|
||||
* @deprecated
|
||||
*/
|
||||
export function generateAddOption(i: integer, scene: BattleScene, o: TitlePhase) {
|
||||
var op: OptionSelectItem = {
|
||||
label: "Generate log " + logs[i][0],
|
||||
handler: () => {
|
||||
localStorage.setItem(logs[i][1], JSON.stringify(newDocument()))
|
||||
o.callEnd();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return op;
|
||||
}
|
||||
/**
|
||||
* A sort function, used to sort csv columns.
|
||||
*
|
||||
* No longer used as we are using .json format instead.
|
||||
* @deprecated
|
||||
*/
|
||||
export function dataSorter(a: string, b: string) {
|
||||
var da = a.split(",")
|
||||
var db = b.split(",")
|
||||
if (da[0] == "---- " + logs[logKeys.indexOf("e")][3] + " ----") {
|
||||
return -1;
|
||||
}
|
||||
if (db[0] == "---- " + logs[logKeys.indexOf("e")][3] + " ----") {
|
||||
return 1;
|
||||
}
|
||||
if (da[0] == db[0]) {
|
||||
return ((da[1] as any) * 1) - ((db[1] as any) * 1)
|
||||
}
|
||||
return ((da[0] as any) * 1) - ((db[0] as any) * 1)
|
||||
}
|
||||
/**
|
||||
* Writes or replaces a csv row.
|
||||
*
|
||||
* No longer used as we are using .json format instead.
|
||||
* @param keyword The keyword/ID of the log to write to.
|
||||
* @param newLine The data to write.
|
||||
* @param floor The floor to write to. Used for sorting.
|
||||
* @param slot The slot to write to. Used for sorting.
|
||||
* @deprecated
|
||||
*/
|
||||
export function setRow(keyword: string, newLine: string, floor: integer, slot: integer) {
|
||||
var data = localStorage.getItem(logs[logKeys.indexOf(keyword)][1]).split("\n")
|
||||
data.sort(dataSorter)
|
||||
var idx = 1
|
||||
if (slot == -1) {
|
||||
while (idx < data.length && (data[idx].split(",")[0] as any) * 1 < floor) {
|
||||
idx++
|
||||
}
|
||||
idx--
|
||||
slot = ((data[idx].split(",")[1] as any) * 1) + 1
|
||||
} else {
|
||||
while (idx < data.length && (data[idx].split(",")[0] as any) * 1 <= floor && (data[idx].split(",")[1] as any) * 1 <= slot) {
|
||||
idx++
|
||||
}
|
||||
idx--
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i] == ",,,,,,,,,,,,,,,,") {
|
||||
data.splice(i, 1)
|
||||
if (idx > i) idx--
|
||||
i--
|
||||
}
|
||||
}
|
||||
console.log((data[idx].split(",")[0] as any) * 1, floor, (data[idx].split(",")[1] as any) * 1, slot)
|
||||
if (idx < data.length && (data[idx].split(",")[0] as any) * 1 == floor && (data[idx].split(",")[1] as any) * 1 == slot) {
|
||||
data[idx] = newLine
|
||||
console.log("Overwrote data at " + idx)
|
||||
var i: number;
|
||||
for (i = 0; i < Math.max(0, idx - 2) && i < 2; i++) {
|
||||
console.log(i + " " + data[i])
|
||||
}
|
||||
if (i == 3 && i != Math.min(0, idx - 2)) {
|
||||
console.log("...")
|
||||
}
|
||||
for (i = Math.max(0, idx - 2); i <= idx + 2 && i < data.length; i++) {
|
||||
console.log(i + (i == idx ? " >> " : " ") + data[i])
|
||||
}
|
||||
localStorage.setItem(logs[logKeys.indexOf(keyword)][1], data.join("\n"));
|
||||
return;
|
||||
}
|
||||
idx++
|
||||
}
|
||||
for (var i = 0; i < data.length; i++) {
|
||||
if (data[i] == ",,,,,,,,,,,,,,,,") {
|
||||
data.splice(i, 1)
|
||||
if (idx > i) idx--
|
||||
i--
|
||||
}
|
||||
}
|
||||
console.log("Inserted data at " + idx)
|
||||
var i: number;
|
||||
for (i = 0; i < Math.max(0, idx - 2) && i < 2; i++) {
|
||||
console.log(i + " " + data[i])
|
||||
}
|
||||
if (i == 3 && i != Math.min(0, idx - 2)) {
|
||||
console.log("...")
|
||||
}
|
||||
for (i = Math.max(0, idx - 2); i < idx; i++) {
|
||||
console.log(i + " " + data[i])
|
||||
}
|
||||
console.log(i + " >> " + newLine)
|
||||
for (i = idx; i <= idx + 2 && i < data.length; i++) {
|
||||
console.log(i + " " + data[i])
|
||||
}
|
||||
localStorage.setItem(logs[logKeys.indexOf(keyword)][1], data.slice(0, idx).join("\n") + "\n" + newLine + (data.slice(idx).length == 0 ? "" : "\n") + data.slice(idx).join("\n"));
|
||||
}
|
||||
//#endregion
|
@ -83,18 +83,18 @@ export default class LogNameFormUiHandler extends FormModalUiHandler {
|
||||
//return onFail(i18next.t("menu:emptyUsername"));
|
||||
}
|
||||
console.log(`Calling LoggerTools.setFileInfo(${this.inputs[0].text}, ${this.inputs[1].text.split(",")})`);
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","), this.inputs[2].text);
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","));
|
||||
console.log("Calling originalLoginAction()");
|
||||
originalLoginAction();
|
||||
};
|
||||
const exportaction1 = config.buttonActions[1];
|
||||
config.buttonActions[1] = (_) => {
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","), this.inputs[2].text);
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","));
|
||||
exportaction1();
|
||||
};
|
||||
const exportaction2 = config.buttonActions[2];
|
||||
config.buttonActions[2] = (_) => {
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","), this.inputs[2].text);
|
||||
LoggerTools.setFileInfo(this.inputs[0].text, this.inputs[1].text.split(","));
|
||||
exportaction2();
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user