Fennec/bin/fennec.js
2026-03-15 18:36:05 +01:00

321 lines
6.2 KiB
JavaScript

const BackgroundTypes = {
IMAGE: 0,
SOLID: 1,
GRADIENT: 2
}
const BorderTypes = {
NONE: 0,
SOLID: 1
}
const Colors = {
WHITE: new N3DSColorRGBA(255, 255, 255, 1),
BLACK: new N3DSColorRGBA(0, 0, 0, 1)
}
const FontStyles = {
NORMAL: 0,
ITALIC: 1,
OBLIQUE: 2
}
const Screens = {
TOP: 0,
BOTTOM: 1
}
const Languages = {
DEFAULT: "FR"
}
class Fennec {
constructor() {
this.screens = {
Top: new N3DSScreen(Screens.TOP),
Bottom: new N3DSScreen(Screens.Bottom)
}
}
/**
* @param {Function} callback
*/
onGameLoop(callback) {
callback()
}
/**
* @param {Function} callback
*/
onControlClicked(callback) {
callback()
}
/**
* @param {Function} callback
*/
onTouched(callback) {
callback()
}
invokeKeyboard() {
return null
}
getSystemLanguage() {
return Languages.DEFAULT
}
}
class N3DSAsset {
constructor(location) {
this.location = location
}
}
class Background {
/**
* @param {BackgroundTypes.IMAGE | BackgroundTypes.SOLID | BackgroundTypes} type
* @param {N3DSColorHEX | N3DSColorRGB | N3DSColorRGBA | N3DSAsset} source
*/
constructor(type, source) {
this.type = type
this.source = source
}
draw(x, y, z, width, height) {
}
}
class N3DSColorRGBA {
/**
* @param {Number} red
* @param {Number} green
* @param {Number} blue
* @param {Number} alpha
*/
constructor(red, green, blue, alpha) {
this.red = red
this.green = green
this.blue = blue
this.alpha = alpha
}
}
class N3DSColorRGB {
/**
*
* @param {Number} red
* @param {Number} green
* @param {Number} blue
*/
constructor(red, green, blue) {
this.red = red
this.green = green
this.blue = blue
this.alpha = 1
}
}
class N3DSColorHEX {
/**
* @param {string} hexCode
*/
constructor(hexCode) {
this.hexCode = hexCode
}
/**
* @returns {N3DSColorRGB}
*/
toRGB() {
const convertedColor = ColorsHelper.fromHexToRGB(this.hexCode)
return convertedColor
}
toRGBA() {
const convertedColor = ColorsHelper.fromHexToRGBA(this.hexCode)
return convertedColor
}
}
class Border {
/**
* @param {Number} top
* @param {Number} left
* @param {Number} right
* @param {Number} bottom
* @param {BorderTypes.DOTTED | BorderTypes.DASHED | BorderTypes.SOLID | BorderTypes.DOUBLE | BorderTypes.RIDGE | BorderTypes.INSET | BorderTypes.OUTSET | BorderTypes.NONE | BorderTypes.MIXED} type
* @param {Background} background
*/
constructor(top, left, right, bottom, type, background, radius) {
this.top = top
this.left = left
this.right = right
this.bottom = bottom
this.type = type || BorderTypes.SOLID
this.background = background || new Background(BackgroundTypes.SOLID, Colors.BLACK)
}
}
class Font {
/**
* @param {N3DSAsset} source
* @param {string} name
*/
constructor(source, name) {
this.source = source
this.name = name
}
}
class FontSetting {
/**
* @param {Font} font
* @param {Number} weight
* @param {FontStyles.NORMAL | FontStyles.ITALIC | FontStyles.OBLIQUE} style
*/
constructor(font, weight, style) {
this.font = font
this.weight = weight
this.style = style
}
}
class N3DSText {
/**
* @param {string} value
* @param {FontSetting} fontSpec
*/
constructor(value, fontSpec) {
this.value = value
this.fontSpec = fontSpec
}
}
class Placeholder {
/**
* @param {Text} title
* @param {N3DSColorHEX | N3DSColorRGB | N3DSColorRGBA} color
* @param {Number} x
* @param {Number} y
* @param {Number} z
* @param {Background | null} background
* @param {Border} border
*/
constructor(title, color, background, border) {
this.title = title || new N3DSText()
this.color = color || Colors.BLACK
this.background = background || new Background(BackgroundTypes.SOLID, Colors.WHITE)
this.border = border || new Border(10, )
}
draw(x, y, z, width, height) {
}
}
class InputField {
/**
* @param {Placeholder} placeholder
*/
constructor(placeholder) {
this.placeholder = placeholder || new Placeholder("Enter your text here", Colors.BLACK, 0, null, 0, new Background(BackgroundTypes.SOLID, Colors.WHITE))
}
/**
* @param {Function} callback
*/
onChanged(callback) {
callback()
}
/**
* @param {Function} callback
*/
onKeypressed(callback) {
callback()
}
/**
* @param {Function} callback
*/
onClicked(callback) {
callback()
}
/**
* @param {Function} callback
*/
onCoordinatesChanges(callback) {
callback()
}
/**
* @param {Function} callback
*/
onReset(callback) {
callback()
}
draw(x, y, z, width, height) {
this.placeholder.draw(x, y, z, width, height)
}
}
class Graphics2D {
/**
* @param {N3DSText} text
*/
drawText(text) {
return text
}
/**
* @param {Number} x
* @param {Number} y
* @param {Number} z
* @param {Number} width
* @param {Number} height
* @param {Background} background
* @param {Border} border
*/
drawRect(x, y, z, width, height, background, border) {
return { x, y, z, width, height, background, border }
}
}
class N3DSScreen {
/**
* @param {Screens.TOP | Screens.BOTTOM} position
*/
constructor(position) {
this.position = position
this.graphics2d = new Graphics2D()
}
}
module.exports = {
Background,
BackgroundTypes,
Border,
BorderTypes,
Colors,
Fennec,
Font,
FontSetting,
FontStyles,
Graphics2D,
InputField,
Languages,
N3DSAsset,
N3DSColorHEX,
N3DSColorRGB,
N3DSColorRGBA,
N3DSScreen,
N3DSText,
Placeholder
}