F95API/app/scripts/classes/game-info.js

120 lines
2.5 KiB
JavaScript
Raw Normal View History

"use strict";
const UNKNOWN = "Unknown";
2020-09-29 15:11:43 +00:00
class GameInfo {
constructor() {
//#region Properties
2020-09-29 15:11:43 +00:00
/**
* Game name
* @type String
*/
this.name = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Game author
* @type String
*/
this.author = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* URL to the game's official conversation on the F95Zone portal
* @type String
2020-09-29 15:11:43 +00:00
*/
this.f95url = null;
/**
* Game description
* @type String
*/
this.overview = UNKNOWN;
/**
* List of tags associated with the game
* @type String[]
*/
this.tags = [];
2020-09-29 15:11:43 +00:00
/**
* Graphics engine used for game development
* @type String
*/
this.engine = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Progress of the game
* @type String
*/
this.status = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Game description image URL
* @type String
2020-09-29 15:11:43 +00:00
*/
this.previewSource = null;
/**
* Game version
* @type String
*/
this.version = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Last time the game underwent updates
* @type String
*/
this.lastUpdate = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Last time the local copy of the game was run
* @type String
*/
this.lastPlayed = UNKNOWN;
2020-09-29 15:11:43 +00:00
/**
* Specifies if the game is original or a mod
* @type Boolean
*/
this.isMod = false;
2020-10-14 14:04:50 +00:00
/**
* Changelog for the last version.
* @type String
*/
this.changelog = null;
2020-09-29 15:11:43 +00:00
/**
* Directory containing the local copy of the game
* @type String
*/
this.gameDir = UNKNOWN;
/**
* Information on game file download links,
* including information on hosting platforms
* and operating system supported by the specific link
* @type GameDownload[]
*/
this.downloadInfo = [];
//#endregion Properties
2020-09-29 15:11:43 +00:00
}
/**
* Converts the object to a dictionary used for JSON serialization
*/
toJSON() {
return {
name: this.name,
author: this.author,
f95url: this.f95url,
overview: this.overview,
engine: this.engine,
status: this.status,
previewSource: this.previewSource,
version: this.version,
lastUpdate: this.lastUpdate,
lastPlayed: this.lastPlayed,
isMod: this.isMod,
2020-10-14 14:04:50 +00:00
changelog: this.changelog,
gameDir: this.gameDir,
downloadInfo: this.downloadInfo,
};
2020-09-29 15:11:43 +00:00
}
/**
* Return a new GameInfo from a JSON string
* @param {String} json JSON string used to create the new object
* @returns {GameInfo}
*/
static fromJSON(json) {
return Object.assign(new GameInfo(), json);
}
}
module.exports = GameInfo;