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

120 lines
2.8 KiB
JavaScript
Raw Normal View History

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