Skip to content

Commit 6e55d71

Browse files
committed
Add first block, some sounds
1 parent 86e7388 commit 6e55d71

File tree

4 files changed

+73
-148
lines changed

4 files changed

+73
-148
lines changed

blockly/src/minecraft/api.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,8 @@ exports.log = function (id) {
44
alert('log');
55
console.log('');
66
};
7+
8+
exports.playSound = function(id, soundName) {
9+
BlocklyApps.highlight(id);
10+
BlocklyApps.playAudio(soundName);
11+
};

blockly/src/minecraft/blocks.js

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,20 +8,59 @@
88
var msg = require('../../locale/current/minecraft');
99
var commonMsg = require('../../locale/current/common');
1010
var blockUtils = require('../block_utils');
11+
var utils = require('../utils');
12+
13+
var generateSetterCode = function (ctx, name) {
14+
var value = ctx.getTitleValue('VALUE');
15+
return 'Minecraft.' + name + '(\'block_id_' + ctx.id + '\', ' +
16+
value + ');\n';
17+
};
1118

1219
// Install extensions to Blockly's language and JavaScript generator.
1320
exports.install = function(blockly, blockInstallOptions) {
14-
// var skin = blockInstallOptions.skin;
21+
var skin = blockInstallOptions.skin;
1522
var generator = blockly.Generator.get('JavaScript');
1623
blockly.JavaScript = generator;
1724

1825

1926
blockUtils.generateSimpleBlock(blockly, generator, {
2027
name: 'minecraft_log',
2128
helpUrl: 'http://google.com',
22-
title: "Log something", // TODO Localize
29+
title: "hello world", // TODO Localize
2330
tooltip: 'TODO Localize me', // TODO localize
2431
functionName: 'Minecraft.log'
2532
});
2633

34+
35+
function onSoundSelected(soundValue) {
36+
if (soundValue === 'random') {
37+
return;
38+
}
39+
BlocklyApps.playAudio(utils.stripQuotes(soundValue), {volume: 1.0});
40+
}
41+
42+
blockly.Blocks.minecraft_playSound = {
43+
// Block for playing sound.
44+
helpUrl: '',
45+
init: function() {
46+
this.setHSV(184, 1.00, 0.74);
47+
this.appendDummyInput()
48+
.appendTitle('play sound')
49+
.appendTitle(new blockly.FieldDropdown(this.K1_SOUNDS, onSoundSelected), 'VALUE');
50+
this.setPreviousStatement(true);
51+
this.setNextStatement(true);
52+
this.setTooltip('play sound');
53+
}
54+
};
55+
56+
blockly.Blocks.minecraft_playSound.K1_SOUNDS =
57+
[
58+
['win', 'win'],
59+
['start', 'start'],
60+
['failure', 'failure']
61+
];
62+
63+
generator.minecraft_playSound = function() {
64+
return generateSetterCode(this, 'playSound');
65+
};
2766
};

blockly/src/minecraft/minecraft.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,9 +159,12 @@ Minecraft.execute = function() {
159159
Minecraft.message = undefined;
160160

161161
// Run the app
162+
var codeWhenRunButton = Blockly.Generator.blockSpaceToCode(
163+
'JavaScript',
164+
'when_run');
162165

163166
// Get a result
164-
Minecraft.result = evalCode();
167+
Minecraft.result = evalCode(codeWhenRunButton);
165168
Minecraft.testResults = BlocklyApps.getTestResults(Minecraft.result);
166169

167170
if (level.freePlay) {

blockly/src/minecraft/skins.js

Lines changed: 23 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ var skinsBase = require('../skins');
99

1010
var CONFIGS = {
1111

12-
flappy: {
12+
minecraft: {
1313
}
1414

1515
};
@@ -18,150 +18,28 @@ exports.load = function(assetUrl, id) {
1818
var skin = skinsBase.load(assetUrl, id);
1919
var config = CONFIGS[skin.id];
2020

21-
// todo: the way these are organized ends up being a little bit ugly as
22-
// lot of our assets are individual items not necessarily attached to a
23-
// specific theme
24-
25-
skin.scifi = {
26-
background: skin.assetUrl('background_scifi.png'),
27-
avatar: skin.assetUrl('avatar_scifi.png'),
28-
obstacle_bottom: skin.assetUrl('obstacle_bottom_scifi.png'),
29-
obstacle_bottom_thumb: skin.assetUrl('obstacle_bottom_scifi_thumb.png'),
30-
obstacle_top: skin.assetUrl('obstacle_top_scifi.png'),
31-
ground: skin.assetUrl('ground_scifi.png'),
32-
ground_thumb: skin.assetUrl('ground_scifi_thumb.png')
33-
};
34-
35-
skin.underwater = {
36-
background: skin.assetUrl('background_underwater.png'),
37-
avatar: skin.assetUrl('avatar_underwater.png'),
38-
obstacle_bottom: skin.assetUrl('obstacle_bottom_underwater.png'),
39-
obstacle_bottom_thumb: skin.assetUrl('obstacle_bottom_underwater_thumb.png'),
40-
obstacle_top: skin.assetUrl('obstacle_top_underwater.png'),
41-
ground: skin.assetUrl('ground_underwater.png'),
42-
ground_thumb: skin.assetUrl('ground_underwater_thumb.png')
43-
};
44-
45-
skin.cave = {
46-
background: skin.assetUrl('background_cave.png'),
47-
avatar: skin.assetUrl('avatar_cave.png'),
48-
obstacle_bottom: skin.assetUrl('obstacle_bottom_cave.png'),
49-
obstacle_bottom_thumb: skin.assetUrl('obstacle_bottom_cave_thumb.png'),
50-
obstacle_top: skin.assetUrl('obstacle_top_cave.png'),
51-
ground: skin.assetUrl('ground_cave.png'),
52-
ground_thumb: skin.assetUrl('ground_cave_thumb.png')
53-
};
54-
55-
skin.santa = {
56-
background: skin.assetUrl('background_santa.png'),
57-
avatar: skin.assetUrl('santa.png'),
58-
obstacle_bottom: skin.assetUrl('obstacle_bottom_santa.png'),
59-
obstacle_bottom_thumb: skin.assetUrl('obstacle_bottom_santa_thumb.png'),
60-
obstacle_top: skin.assetUrl('obstacle_top_santa.png'),
61-
ground: skin.assetUrl('ground_santa.png'),
62-
ground_thumb: skin.assetUrl('ground_santa_thumb.png')
63-
};
64-
65-
skin.night = {
66-
background: skin.assetUrl('background_night.png')
67-
};
68-
69-
skin.redbird = {
70-
avatar: skin.assetUrl('avatar_redbird.png')
71-
};
72-
73-
skin.laser = {
74-
obstacle_bottom: skin.assetUrl('obstacle_bottom_laser.png'),
75-
obstacle_bottom_thumb: skin.assetUrl('obstacle_bottom_laser_thumb.png'),
76-
obstacle_top: skin.assetUrl('obstacle_top_laser.png')
77-
};
78-
79-
skin.lava = {
80-
ground: skin.assetUrl('ground_lava.png'),
81-
ground_thumb: skin.assetUrl('ground_lava_thumb.png')
82-
};
83-
84-
skin.shark = {
85-
avatar: skin.assetUrl('shark.png')
86-
};
87-
88-
skin.easter = {
89-
avatar: skin.assetUrl('easterbunny.png')
90-
};
91-
92-
skin.batman = {
93-
avatar: skin.assetUrl('batman.png')
94-
};
95-
96-
skin.submarine = {
97-
avatar: skin.assetUrl('submarine.png')
98-
};
99-
100-
skin.unicorn = {
101-
avatar: skin.assetUrl('unicorn.png')
102-
};
103-
104-
skin.fairy = {
105-
avatar: skin.assetUrl('fairy.png')
106-
};
107-
108-
skin.superman = {
109-
avatar: skin.assetUrl('superman.png')
110-
};
111-
112-
skin.turkey = {
113-
avatar: skin.assetUrl('turkey.png')
114-
};
115-
116-
// Images
117-
skin.ground = skin.assetUrl('ground.png');
118-
skin.ground_thumb = skin.assetUrl('ground_thumb.png');
119-
skin.obstacle_top = skin.assetUrl('obstacle_top.png');
120-
skin.obstacle_bottom = skin.assetUrl('obstacle_bottom.png');
121-
skin.obstacle_bottom_thumb = skin.assetUrl('obstacle_bottom_thumb.png');
122-
skin.instructions = skin.assetUrl('instructions.png');
123-
skin.clickrun = skin.assetUrl('clickrun.png');
124-
skin.getready = skin.assetUrl('getready.png');
125-
skin.gameover = skin.assetUrl('gameover.png');
126-
skin.flapIcon = skin.assetUrl('flap-bird.png');
127-
skin.crashIcon = skin.assetUrl('when-crash.png');
128-
skin.collideObstacleIcon = skin.assetUrl('when-obstacle.png');
129-
skin.collideGroundIcon = skin.assetUrl('when-crash.png');
130-
skin.enterObstacleIcon = skin.assetUrl('when-pass.png');
131-
skin.tiles = skin.assetUrl('tiles.png');
132-
skin.goal = skin.assetUrl('goal.png');
133-
skin.goalSuccess = skin.assetUrl('goal_success.png');
134-
skin.obstacle = skin.assetUrl('obstacle.png');
135-
skin.obstacleScale = config.obstacleScale || 1.0;
136-
skin.largerObstacleAnimationTiles =
137-
skin.assetUrl(config.largerObstacleAnimationTiles);
138-
skin.hittingWallAnimation =
139-
skin.assetUrl(config.hittingWallAnimation);
140-
skin.approachingGoalAnimation =
141-
skin.assetUrl(config.approachingGoalAnimation);
142-
// Sounds
143-
skin.obstacleSound =
144-
[skin.assetUrl('obstacle.mp3'), skin.assetUrl('obstacle.ogg')];
145-
skin.wallSound = [skin.assetUrl('wall.mp3'), skin.assetUrl('wall.ogg')];
146-
skin.winGoalSound = [skin.assetUrl('win_goal.mp3'),
147-
skin.assetUrl('win_goal.ogg')];
148-
skin.wall0Sound = [skin.assetUrl('wall0.mp3'), skin.assetUrl('wall0.ogg')];
149-
150-
skin.dieSound = [skin.assetUrl('sfx_die.mp3'), skin.assetUrl('sfx_die.ogg')];
151-
skin.hitSound = [skin.assetUrl('sfx_hit.mp3'), skin.assetUrl('sfx_hit.ogg')];
152-
skin.pointSound = [skin.assetUrl('sfx_point.mp3'), skin.assetUrl('sfx_point.ogg')];
153-
skin.swooshingSound = [skin.assetUrl('sfx_swooshing.mp3'), skin.assetUrl('sfx_swooshing.ogg')];
154-
skin.wingSound = [skin.assetUrl('sfx_wing.mp3'), skin.assetUrl('sfx_wing.ogg')];
155-
156-
skin.jetSound = [skin.assetUrl('jet.mp3'), skin.assetUrl('jet.ogg')];
157-
skin.crashSound = [skin.assetUrl('crash.mp3'), skin.assetUrl('crash.ogg')];
158-
skin.jingleSound = [skin.assetUrl('jingle.mp3'), skin.assetUrl('jingle.ogg')];
159-
skin.laserSound = [skin.assetUrl('laser.mp3'), skin.assetUrl('laser.ogg')];
160-
skin.splashSound = [skin.assetUrl('splash.mp3'), skin.assetUrl('splash.ogg')];
161-
162-
// Settings
163-
skin.graph = config.graph;
164-
skin.background = skin.assetUrl('background.png');
21+
skin.rubberSound = [skin.assetUrl('wall.mp3'), skin.assetUrl('wall.ogg')];
22+
skin.flagSound = [skin.assetUrl('win_goal.mp3'),
23+
skin.assetUrl('win_goal.ogg')];
24+
skin.crunchSound = [skin.assetUrl('wall0.mp3'), skin.assetUrl('wall0.ogg')];
25+
skin.winPointSound = [skin.assetUrl('1_we_win.mp3'),
26+
skin.assetUrl('1_we_win.ogg')];
27+
skin.winPoint2Sound = [skin.assetUrl('2_we_win.mp3'),
28+
skin.assetUrl('2_we_win.ogg')];
29+
skin.losePointSound = [skin.assetUrl('1_we_lose.mp3'),
30+
skin.assetUrl('1_we_lose.ogg')];
31+
skin.losePoint2Sound = [skin.assetUrl('2_we_lose.mp3'),
32+
skin.assetUrl('2_we_lose.ogg')];
33+
skin.goal1Sound = [skin.assetUrl('1_goal.mp3'), skin.assetUrl('1_goal.ogg')];
34+
skin.goal2Sound = [skin.assetUrl('2_goal.mp3'), skin.assetUrl('2_goal.ogg')];
35+
skin.woodSound = [skin.assetUrl('1_paddle_bounce.mp3'),
36+
skin.assetUrl('1_paddle_bounce.ogg')];
37+
skin.retroSound = [skin.assetUrl('2_paddle_bounce.mp3'),
38+
skin.assetUrl('2_paddle_bounce.ogg')];
39+
skin.slapSound = [skin.assetUrl('1_wall_bounce.mp3'),
40+
skin.assetUrl('1_wall_bounce.ogg')];
41+
skin.hitSound = [skin.assetUrl('2_wall_bounce.mp3'),
42+
skin.assetUrl('2_wall_bounce.ogg')];
16543

16644
return skin;
16745
};

0 commit comments

Comments
 (0)