Skip to content

Commit

Permalink
style: eslint and add some icon
Browse files Browse the repository at this point in the history
  • Loading branch information
takaokouji committed Aug 17, 2024
1 parent 644636f commit 1fe23b4
Show file tree
Hide file tree
Showing 10 changed files with 51 additions and 23 deletions.
1 change: 1 addition & 0 deletions src/containers/ruby-tab/snippets-completer.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import MeshSnippets from './mesh-snippets.json';
import SmalrubotS1Snippets from './smalrubot-s1-snippets.json';
import MicrobitMoreSnippets from './microbit-more-snippets.json';
import KoshienSnippets from './koshien-snippets.json';

class SnippetsCompleter extends BaseCompleter {
#completions = [];

Expand Down
15 changes: 9 additions & 6 deletions src/lib/libraries/extensions/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,9 @@ import smalrubotS1InsetIconURL from './smalrubot-s1/smalrubot-s1-small.png';
import smalrubotS1ConnectionIconURL from './smalrubot-s1/smalrubot-s1-illustration.png';
import smalrubotS1ConnectionSmallIconURL from './smalrubot-s1/smalrubot-s1-small.png';

import koshienIconURL from './koshien/koshien.png';
import koshienInsetIconURL from './koshien/koshien-small.png';

const extensions = [
{
name: (
Expand Down Expand Up @@ -400,19 +403,19 @@ const extensions = [
{
name: (
<FormattedMessage
defaultMessage="甲子園"
defaultMessage="Smalruby Koshien"
description="Name for the 'koshien' extension"
id="gui.extension.koshien.name"
id="gui.smalruby3.extension.koshien.name"
/>
),
extensionId: 'koshien',
iconURL: musicIconURL,
insetIconURL: musicInsetIconURL,
iconURL: koshienIconURL,
insetIconURL: koshienInsetIconURL,
description: (
<FormattedMessage
defaultMessage="Play instruments and drums."
defaultMessage="Smalruby Koshien AI."
description="Description for the 'koshien' extension"
id="gui.extension.koshien.description"
id="gui.smalruby3.extension.koshien.description"
/>
),
featured: true
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added src/lib/libraries/extensions/koshien/koshien.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions src/lib/ruby-generator/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ import WeDo2Blocks from './wedo2.js';
import GdxForBlocks from './gdx_for.js';
import MeshBlocks from './mesh.js';
import SmalrubotS1Blocks from './smalrubot_s1.js';
import koshien from './koshien.js';
import KoshienBlocks from './koshien.js';

const SCALAR_TYPE = '';
const LIST_TYPE = 'list';
Expand Down Expand Up @@ -463,6 +463,6 @@ WeDo2Blocks(RubyGenerator);
GdxForBlocks(RubyGenerator);
MeshBlocks(RubyGenerator);
SmalrubotS1Blocks(RubyGenerator);
koshien(RubyGenerator);
KoshienBlocks(RubyGenerator);

export default RubyGenerator;
14 changes: 7 additions & 7 deletions src/lib/ruby-generator/koshien.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,20 @@
* @param {RubyGenerator} Generator The RubyGenerator
* @return {RubyGenerator} same as param.
*/

export default function (Generator) {
Generator.koshien_move_to = function (block) {
const x = Generator.valueToCode(block, 'X', Generator.ORDER_NONE) || 0;
const y = Generator.valueToCode(block, 'Y', Generator.ORDER_NONE) || 0;
return `koshien.move_to([${x},${y}])\n`;
};
Generator.koshien_calc_route = function (block) {
const src_x = Generator.valueToCode(block, 'SRC_X', Generator.ORDER_NONE) || 0;
const src_y = Generator.valueToCode(block, 'SRC_Y', Generator.ORDER_NONE) || 0;
const dst_x = Generator.valueToCode(block, 'DST_X', Generator.ORDER_NONE) || 0;
const dst_y = Generator.valueToCode(block, 'DST_Y', Generator.ORDER_NONE) || 0;
const srcX = Generator.valueToCode(block, 'SRC_X', Generator.ORDER_NONE) || 0;
const srcY = Generator.valueToCode(block, 'SRC_Y', Generator.ORDER_NONE) || 0;
const dstX = Generator.valueToCode(block, 'DST_X', Generator.ORDER_NONE) || 0;
const dstY = Generator.valueToCode(block, 'DST_Y', Generator.ORDER_NONE) || 0;
const list = Generator.valueToCode(block, 'LIST', Generator.ORDER_NONE) || 0;

return [`koshien.calc_route(src:"${src_x}:${src_y}",dst:"${dst_x}:${dst_y}",except_cells:${list})`];
return [`koshien.calc_route(src:"${srcX}:${srcY}",dst:"${dstX}:${dstY}",except_cells:${list})`];
};
Generator.koshien_get_map_area = function (block) {
const x = Generator.valueToCode(block, 'X', Generator.ORDER_NONE) || 0;
Expand All @@ -44,7 +43,8 @@ export default function (Generator) {
const x = Generator.valueToCode(block, 'X', Generator.ORDER_NONE) || 0;
const y = Generator.valueToCode(block, 'Y', Generator.ORDER_NONE) || 0;
const size = Generator.valueToCode(block, 'SIZE', Generator.ORDER_NONE) || 5;
const item = Generator.valueToCode(block, 'ITEM', Generator.ORDER_NONE) || Generator.quote_('["A","B","C","D"]');
const item =
Generator.valueToCode(block, 'ITEM', Generator.ORDER_NONE) || Generator.quote_('["A","B","C","D"]');

return [`koshien.locate_objects(sq_size:${size},cent:"${x}:${y}",objects:${item})`];
};
Expand Down
34 changes: 26 additions & 8 deletions src/lib/ruby-to-blocks-converter/koshien.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
import {a} from 'bowser';

const Koshien = 'koshien';

const KoshienConverter = {
Expand All @@ -21,6 +19,7 @@ const KoshienConverter = {
converter.addNumberInput(block, 'Y', 'math_number', args[0].value[1], 0);
return block;
});

converter.registerCallMethod(Koshien, 'calc_route', 1, params => {
const {receiver, args} = params;

Expand All @@ -39,6 +38,7 @@ const KoshienConverter = {
converter.addNumberInput(block, 'LIST', 'math_number', Number(args[0].get('sym:except_cells')), 0);
return block;
});

converter.registerCallMethod(Koshien, 'get_map_area', 1, params => {
const {receiver, args} = params;

Expand All @@ -50,6 +50,7 @@ const KoshienConverter = {
converter.addNumberInput(block, 'Y', 'math_number', args[0].value[1], 0);
return block;
});

converter.registerCallMethod(Koshien, 'set_dynamite', 1, params => {
const {receiver, args} = params;

Expand All @@ -62,6 +63,7 @@ const KoshienConverter = {
converter.addNumberInput(block, 'Y', 'math_number', args[0].value[1], 0);
return block;
});

converter.registerCallMethod(Koshien, 'set_bomb', 1, params => {
const {receiver, args} = params;

Expand All @@ -74,6 +76,7 @@ const KoshienConverter = {
converter.addNumberInput(block, 'Y', 'math_number', args[0].value[1], 0);
return block;
});

converter.registerCallMethod(Koshien, 'map', 3, params => {
const {receiver, args} = params;

Expand All @@ -90,6 +93,7 @@ const KoshienConverter = {

return block;
});

converter.registerCallMethod(Koshien, 'map_all', 1, params => {
const {receiver, args} = params;

Expand All @@ -100,86 +104,97 @@ const KoshienConverter = {
converter.addTextInput(block, 'LOCATION', location, 'map_1');
return block;
});

converter.registerCallMethod(Koshien, 'locate_objects', 1, params => {
const {receiver, args} = params;

const sq_size = args[0].get('sym:sq_size').value;
const sqSize = args[0].get('sym:sq_size').value;
const cent = args[0].get('sym:cent').value;
const objects = args[0].get('sym:objects').value;

if (!converter.isNumberOrBlock(sq_size)) return null;
if (!converter.isNumberOrBlock(sqSize)) return null;
if (!converter.isStringOrBlock(cent)) return null;
if (!converter.isStringOrBlock(objects)) return null;

const cent_coordinate = cent.split(':');
const centCoordinate = cent.split(':');

const block = converter.changeRubyExpressionBlock(receiver, 'koshien_locate_objects', 'value');
converter.addNumberInput(block, 'SIZE', 'math_number', sq_size, 0);
converter.addNumberInput(block, 'X', 'math_number', Number(cent_coordinate[0]), 0);
converter.addNumberInput(block, 'Y', 'math_number', Number(cent_coordinate[1]), 0);
converter.addNumberInput(block, 'SIZE', 'math_number', sqSize, 0);
converter.addNumberInput(block, 'X', 'math_number', Number(centCoordinate[0]), 0);
converter.addNumberInput(block, 'Y', 'math_number', Number(centCoordinate[1]), 0);
converter.addTextInput(block, 'ITEM', objects, '0');
return block;
});

converter.registerCallMethod(Koshien, 'other_player_x', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'other_player');
converter.addField(block, 'COORDINATE', 'x');
return block;
});

converter.registerCallMethod(Koshien, 'other_player_y', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'other_player');
converter.addField(block, 'COORDINATE', 'y');
return block;
});

converter.registerCallMethod(Koshien, 'enemy_x', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'enemy');
converter.addField(block, 'COORDINATE', 'x');
return block;
});

converter.registerCallMethod(Koshien, 'enemy_y', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'enemy');
converter.addField(block, 'COORDINATE', 'y');
return block;
});

converter.registerCallMethod(Koshien, 'goal_x', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'goal');
converter.addField(block, 'COORDINATE', 'x');
return block;
});

converter.registerCallMethod(Koshien, 'goal_y', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'goal');
converter.addField(block, 'COORDINATE', 'y');
return block;
});

converter.registerCallMethod(Koshien, 'player_x', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'player');
converter.addField(block, 'COORDINATE', 'x');
return block;
});

converter.registerCallMethod(Koshien, 'player_y', 0, params => {
const {receiver} = params;
const block = converter.changeRubyExpressionBlock(receiver, 'koshien_target_coordinate', 'value');
converter.addField(block, 'TARGET', 'player');
converter.addField(block, 'COORDINATE', 'y');
return block;
});

converter.registerCallMethod(Koshien, 'turn_over', 0, params => {
const {receiver} = params;
return converter.changeRubyExpressionBlock(receiver, 'koshien_turn_over', 'value');
});

converter.registerCallMethod(Koshien, 'connect_game', 1, params => {
const {receiver, args} = params;

Expand All @@ -190,6 +205,7 @@ const KoshienConverter = {
converter.addTextInput(block, 'NAME', name, 'test');
return block;
});

converter.registerCallMethod(Koshien, 'position_x', 1, params => {
const {receiver, args} = params;

Expand All @@ -200,6 +216,7 @@ const KoshienConverter = {
converter.addField(block, 'COORDINATE', 'x');
return block;
});

converter.registerCallMethod(Koshien, 'position_y', 1, params => {
const {receiver, args} = params;

Expand All @@ -212,4 +229,5 @@ const KoshienConverter = {
});
}
};

export default KoshienConverter;
2 changes: 2 additions & 0 deletions src/locales/en.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ export default {
"gui.smalruby3.telemetryOptIn.buttonTextYes": "Yes, I'd like to help improve Smalruby",
'gui.smalruby3.extension.mesh.name': 'Mesh',
'gui.smalruby3.extension.mesh.description': 'Allowing users to interact over a computer network.',
'gui.smalruby3.extension.koshien.name': 'Smalruby Koshien',
'gui.smalruby3.extension.koshien.description': 'Smalruby Koshien AI.',
'mesh.categoryName': 'Mesh',
'mesh.sensorValue': '[NAME] sensor value',
'mesh.hostPeripheralName': 'Mesh Host [{ MESH_ID }]',
Expand Down
2 changes: 2 additions & 0 deletions src/locales/ja-Hira.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ export default {
'gui.smalruby3.rubyToBlocksConverter.wrongInstruction': '「{ SOURCE }」はめいれいがまちがっています。',
'gui.smalruby3.extension.mesh.name': 'メッシュ',
'gui.smalruby3.extension.mesh.description': 'ネットワークじょうでユーザーかんのやりとりをおこなう。',
'gui.smalruby3.extension.koshien.name': 'スモウルビー こうしえん',
'gui.smalruby3.extension.koshien.description': 'スモウルビー こうしえんのエー・アイを作成する。',
'mesh.categoryName': 'メッシュ',
'mesh.sensorValue': '[NAME] センサーのあたい',
'mesh.hostPeripheralName': 'メッシュのホストになる 【{ MESH_ID }】',
Expand Down
2 changes: 2 additions & 0 deletions src/locales/ja.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ export default {
'gui.smalruby3.telemetryOptIn.buttonTextYes': 'はい、スモウルビーの改善に協力します。',
'gui.smalruby3.extension.mesh.name': 'メッシュ',
'gui.smalruby3.extension.mesh.description': 'ネットワーク上でユーザー間のやりとりを行う。',
'gui.smalruby3.extension.koshien.name': 'スモウルビー甲子園',
'gui.smalruby3.extension.koshien.description': 'スモウルビー甲子園のAIを作成する。',
'mesh.categoryName': 'メッシュ',
'mesh.sensorValue': '[NAME] センサーの値',
'mesh.hostPeripheralName': 'メッシュのホストになる 【{ MESH_ID }】',
Expand Down

0 comments on commit 1fe23b4

Please sign in to comment.