Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions src/extension-support/extension-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,7 @@

builtinExtensions.koshien = () => {
const formatMessage = require('format-message');
const ext = require('../extensions/koshien/index.js');
const blockClass = ext.blockClass;
const blockClass = require('../extensions/koshien/index.js');
blockClass.formatMessage = formatMessage;
return blockClass;
};
Expand Down Expand Up @@ -369,11 +368,11 @@
const menuFunc = extensionObject[menuItemFunctionName];
const menuItems = menuFunc.call(extensionObject, editingTargetID).map(
item => {
item = maybeFormatMessage(item, extensionMessageContext);

Check warning on line 371 in src/extension-support/extension-manager.js

View workflow job for this annotation

GitHub Actions / ci-cd

Pattern is not a string literal
switch (typeof item) {
case 'object':
return [
maybeFormatMessage(item.text, extensionMessageContext),

Check warning on line 375 in src/extension-support/extension-manager.js

View workflow job for this annotation

GitHub Actions / ci-cd

Pattern is not a string literal
item.value
];
case 'string':
Expand Down
57 changes: 45 additions & 12 deletions src/extensions/koshien/index.js
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
import ArgumentType from '../../extension-support/argument-type';
import BlockType from '../../extension-support/block-type';
import TargetType from '../../extension-support/target-type';
import Variable from '../../engine/variable';
const ArgumentType = require('../../extension-support/argument-type');
const BlockType = require('../../extension-support/block-type');
const TargetType = require('../../extension-support/target-type');
const Variable = require('../../engine/variable');

import blockIcon from './block-icon.png';
import translations from './translations.json';
/**
* Icon svg to be displayed at the left edge of each extension block, encoded as a data URI.
* @type {string}
*/
// eslint-disable-next-line max-len
const blockIconURI = 'data:image/png;base64,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';

let formatMessage = messageData => messageData.defaultMessage;
let formatMessage = require('format-message');
const translations = require('./translations.json');

/**
* Setup format-message for this extension.
Expand Down Expand Up @@ -122,6 +127,11 @@ class KoshienClient {
return new Promise(resolve => resolve());
}

// eslint-disable-next-line no-unused-vars
setMessage (message) {
return new Promise(resolve => resolve());
}

calcRoute (props) {
// eslint-disable-next-line no-unused-vars
const {src, dst, exceptCells, result} = props;
Expand Down Expand Up @@ -413,7 +423,7 @@ class KoshienBlocks {
return {
id: KoshienBlocks.EXTENSION_ID,
name: KoshienBlocks.EXTENSION_NAME,
blockIconURI: blockIcon,
blockIconURI: blockIconURI,
showStatusButton: false,
blocks: [
{
Expand Down Expand Up @@ -703,6 +713,22 @@ class KoshienBlocks {

},
filter: [TargetType.SPRITE]
},
{
opcode: 'setMessage',
blockType: BlockType.COMMAND,
text: formatMessage({
id: 'koshien.setMessage',
default: 'message [MESSAGE]',
description: 'display a message'
}),
arguments: {
MESSAGE: {
type: ArgumentType.STRING,
defaultValue: 'hello'
}
},
filter: [TargetType.SPRITE]
}
],
menus: {
Expand Down Expand Up @@ -958,9 +984,16 @@ class KoshienBlocks {
return -1;
}
}

/**
* display a message
* @param {object} args - the block's arguments.
* @param {string} args.MESSAGE - message.
*/
// eslint-disable-next-line no-unused-vars
setMessage (args) {
return this._client.setMessage(args.MESSAGE);
}
}

export {
KoshienBlocks as default,
KoshienBlocks as blockClass
};
module.exports = KoshienBlocks;
2 changes: 2 additions & 0 deletions src/extensions/koshien/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
"koshien.locateObjects": "範囲内の地形・アイテム (中心 座標 [POSITION] 、範囲 [SQ_SIZE] 、地形・アイテム [OBJECTS])をリスト [RESULT] に保存する",
"koshien.targetCoordinate": "[TARGET] の [COORDINATE]",
"koshien.turnOver": "ターンを終了する",
"koshien.setMessage": "メッセージ [MESSAGE]",
"koshien.position": "座標 [X] [Y]",
"koshien.positionOf": "[POSITION] の [COORDINATE]",
"koshien.object": "[OBJECT]"
Expand Down Expand Up @@ -81,6 +82,7 @@
"koshien.locateObjects": "はんいないのちけい・アイテム (ちゅうしん ざひょう [POSITION] 、はんい [SQ_SIZE] 、ちけい・アイテム [OBJECTS])をリスト [RESULT] にほぞんする",
"koshien.targetCoordinate": "[TARGET] の [COORDINATE]",
"koshien.turnOver": "ターンをしゅうりょうする",
"koshien.setMessage": "メッセージ [MESSAGE]",
"koshien.position": "ざひょう [X] [Y]",
"koshien.positionOf": "[POSITION] の [COORDINATE]",
"koshien.object": "[OBJECT]"
Expand Down
Loading
Loading