123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- /************************************************************************************
- * This code is used EXCLUSIVELY when iFractions is runnign inside Moodle via iAssign
- * as an iLM (interactive learning module) and the global variable moodle=true.
- *
- * This file holds game states.
- ************************************************************************************/
- /**
- * [STUDENT REPORT STATE] Screen that shows the stats of a previously played game (exclusive to moodle).
- *
- * FOR MOODLE
- *
- * @namespace
- */
- const studentReport = {
- /** FOR MOODLE
- * Main code
- */
- create: function () {
- const offsetX = context.canvas.width / 4;
- const offsetY = 37.5;
- const x0 = offsetX / 2;
- const y0 = context.canvas.height / 2 - 100;
- const titleFont = { ...textStyles.h1_, fill: colors.green };
- const infoFont = {
- ...textStyles.h4_,
- align: 'left',
- fill: colors.maroon,
- };
- renderBackground();
- // Title
- game.add.text(context.canvas.width / 2, 120, game.lang.results, titleFont);
- game.add.image(
- x0 - 80,
- y0 - 110,
- gameList[gameId].assets.menu.gameNameBtn,
- 1.4
- );
- this.utils.renderCurGameMetadata(y0, offsetY, infoFont);
- this.utils.renderCurGameStats(x0, offsetX, offsetY, infoFont);
- },
- utils: {
- renderCurGameMetadata: function (defaultY, offsetY, font) {
- // Game info
- let text =
- game.lang[gameShape].charAt(0).toUpperCase() +
- game.lang[gameShape].slice(1);
- text =
- game.lang.game +
- ': ' +
- text +
- (gameName.slice(-3) == 'One' ? ' I' : ' II');
- const x0 = 360;
- game.add.text(x0, defaultY - offsetY * 2, text, font);
- game.add.text(
- x0,
- defaultY - offsetY,
- game.lang.game_mode + ': ' + gameMode.toUpperCase(),
- font
- );
- const operationText =
- gameOperation.charAt(0).toUpperCase() + gameOperation.slice(1);
- game.add.text(
- x0,
- defaultY,
- game.lang.operation + ': ' + operationText,
- font
- );
- game.add.text(
- x0,
- defaultY + offsetY,
- game.lang.difficulty + ': ' + gameDifficulty,
- font
- );
- },
- renderCurGameStats: function (defaultX, offsetX, offsetY, font) {
- // Student info
- const y0 = context.canvas.height - 300;
- let x = defaultX;
- for (let i = 0; i < 4; i++, x += offsetX) {
- // If level wasnt completed, show broken sign
- if (moodleVar.hits[i] === 0 && moodleVar.errors[i] === 0) {
- const sign = game.add.image(
- x,
- context.canvas.height - 150,
- 'sign_broken',
- 1.2
- );
- sign.anchor(0.5, 0.5);
- continue;
- }
- // If level was completed shows sign with level number and student report
- const sign = game.add.image(
- x,
- context.canvas.height - 150,
- 'sign',
- 1.2
- );
- sign.anchor(0.5, 0.5);
- const numberFont = {
- ...textStyles.h2_,
- font: 'bold ' + textStyles.h2_.font,
- fill: colors.white,
- };
- game.add.text(x, context.canvas.height - 150, '' + (i + 1), numberFont);
- game.add.geom.rect(
- x - 40 - 50,
- y0 - offsetY * 1.75,
- 10,
- 135 * 1.5,
- colors.blue,
- 0.1
- );
- game.add.text(
- x - 60,
- y0 - offsetY,
- game.lang.time + ': ' + game.math.convertTime(moodleVar.time[i]),
- font
- );
- game.add.text(
- x - 60,
- y0,
- game.lang.hits + ': ' + moodleVar.hits[i],
- font
- );
- game.add.text(
- x - 60,
- y0 + offsetY,
- game.lang.errors + ': ' + moodleVar.errors[i],
- font
- );
- }
- },
- },
- };
|