/************************************************************** * LInE - Free Education, Private Data - http://www.usp.br/line * * This file holds all global elements to the game. * * Generating game levels in menu: * ..................................................... * ...............square....................circle...... } = gameShape * .........../...........\....................|........ } = gameName (game) * ........One.............Two................One....... } * ......./...\.........../...\............./....\...... * ......A.....B.........A.....B...........A......B..... = gameMode (game mode) * .(floor)..(stack)..(top)..(bottom)..(floor)..(stack). * .......\./.............\./................\./........ * ........|...............|..................|......... * ......./.\..............|................/.|.\....... * ...Plus...Minus.......Equals........Plus.Minus.Mixed. = gameOperation (game math operation) * .......\./..............|................\.|./....... * ........|...............|..................|......... * ......1,2,3.........1,2,3,4,5..........1,2,3,4,5..... = gameDifficulty (difficulty level) * ..................................................... * * About levels in map: * * ..................(game.levels)...................... * ......................__|__.......................... * .....................|.|.|.|......................... * ...................0,1,2,3,4,5....................... = curMapPosition (map positions) * ...................|.........|....................... * ................(start)....(end)..................... **************************************************************/ /** * Turns console messages ON/OFF (for debug purposes only) * @type {boolean} */ const debugMode = false; /** FOR MOODLE
* * iFractions can run on a server or inside moodle through iAssign.
* This variable should be set according to where it is suposed to run:
* - if true, on moodle
* - if false, on a server */ const moodle = false; /** * index of the current game in gameList * Can be: 'squareOne', 'squareTwo' or 'circleOne'. * * @type {string} */ let gameId; /** * Selected game name.
* Can be: 'squareOne', 'squareTwo' or 'circleOne'. * * @type {string} */ let gameName; /** * Used for text and game information.
* Shape that makes the name of the game - e.g in 'squareOne' it is 'square'.
* Can be: 'circle' or 'square'. * * @type {string} */ let gameShape; /** * Holds selected game mode.
* In squareOne/circleOne can be: 'A' (click on the floor) or 'B' (click on the amount to go/stacked figures).
* In squareTwo can be: 'A' (more subdivisions on top) or 'B' (more subdivisions on bottom). * * @type {string} */ let gameMode; /** * Holds game math operation.
* In squareOne can be: 'Plus' (green tractor goes right) or 'Minus' (red tractor goes left).
* In circleOne can be: 'Plus' (green tractor goes right), 'Minus' (red tractor goes left) or 'Mixed' (green tractor goes both sides).
* In squareTwo can be: 'Equals' (compares two rectangle subdivisions). * * @type {string} */ let gameOperation; /** * Holds game overall difficulty. 1 (easier) -> n (harder).
* In squareOne can be: 1..3.
* In circleOne/squareTwo can be: 1..5. * * @type {number} */ let gameDifficulty; /** * Turns displaying the fraction labels on levels ON/OFF * @type {boolean} */ let fractionLabel = true; /** * When true, the character can move to next position in the map * @type {boolean} */ let canGoToNextMapPosition; /** * Character position on the map, aka game levels (1..4: valid; 5: end) * @type {number} */ let curMapPosition; /** * Number of finished levels in the map * @type {number} */ let completedLevels; /** * Turns game audio ON/OFF * @type {boolean} */ let audioStatus = false; /** * Player's name * @type {string} */ let playerName; /** * String that contains the selected language.
* It is the name of the language file. * @type {string} */ let langString; /** * Holds the current state.
* Is used as if it was a 'this' inside state functions. * @type {object} */ let self;