pxt-ev3/libs/mood/mood.ts

125 lines
3.5 KiB
TypeScript
Raw Normal View History

namespace brick {
2018-01-17 02:05:57 +01:00
/**
* Shows a mood
*/
//% weight=90
//% blockId=moodShow block="show mood %mood=mood_image_picker"
//% weight=101 group="Screen" blockGap=8
export function showMood(mood: Mood) {
if(mood)
mood.show();
}
/**
* A mood
*/
//% fixedInstances
export class Mood {
2018-01-17 02:05:57 +01:00
private image: Image;
private sound: Sound;
private light: BrickLight;
constructor(image: Image, sound: Sound, light: BrickLight) {
this.image = image;
this.sound = sound;
this.light = light;
}
/**
* Shows the mood on the EV3
*/
show() {
brick.setLight(this.light);
brick.showImage(this.image);
2018-01-17 01:44:32 +01:00
music.playSoundEffectUntilDone(this.sound);
2018-01-17 02:05:57 +01:00
loops.pause(20);
}
}
/**
* An image
* @param image the image
*/
//% blockId=mood_image_picker block="%image" shim=TD_ID
//% image.fieldEditor="images"
//% image.fieldOptions.columns=4
//% image.fieldOptions.width=400
//% group="Screen" weight=0 blockHidden=1
export function __moodImagePicker(mood: Mood): Mood {
return mood;
2018-01-17 02:05:57 +01:00
}
2018-01-17 01:21:02 +01:00
}
2018-01-17 01:21:02 +01:00
namespace moods {
/**
* A sleeping mood
*/
//% fixedInstance jres=images.eyesSleeping
2018-01-17 01:21:02 +01:00
export const sleeping = new brick.Mood(images.eyesSleeping, sounds.expressionsSnoring, BrickLight.OrangePulse);
/**
* A awake mood
*/
//% fixedInstance jres=images.eyesAwake
2018-01-17 01:21:02 +01:00
export const awake = new brick.Mood(images.eyesAwake, sounds.informationActivate, BrickLight.Orange);
/**
* A tired mood
*/
//% fixedInstance jres=images.eyesTiredMiddle
2018-01-17 01:21:02 +01:00
export const tired = new brick.Mood(images.eyesTiredMiddle, sounds.expressionsSneezing, BrickLight.OrangeFlash);
2018-01-17 02:05:57 +01:00
/**
* An angry mood
*/
//% fixedInstance jres=images.eyesAngry
2018-01-17 01:21:02 +01:00
export const angry = new brick.Mood(images.eyesAngry, sounds.animalsDogGrowl, BrickLight.RedPulse);
/**
* A sad mood
*/
//% fixedInstance jres=images.eyesTear
2018-01-17 01:21:02 +01:00
export const sad = new brick.Mood(images.eyesTear, sounds.animalsDogWhine, BrickLight.Red);
/**
* A dizzy mood
*/
//% fixedInstance jres=images.eyesDizzy
2018-01-17 01:21:02 +01:00
export const dizzy = new brick.Mood(images.eyesDizzy, sounds.expressionsUhOh, BrickLight.OrangeFlash);
/**
* A knocked out mood
*/
//% fixedInstance jres=images.eyesKnockedOut
2018-01-17 01:21:02 +01:00
export const knockedOut = new brick.Mood(images.eyesKnockedOut, sounds.informationError, BrickLight.RedFlash);
2018-01-17 02:05:57 +01:00
/**
* Looking around left
*/
//% fixedInstance jres=images.eyesMiddleLeft
2018-01-17 02:05:57 +01:00
export const middleLeft = new brick.Mood(images.eyesMiddleLeft, sounds.informationAnalyze, BrickLight.Off);
/**
* Looking around right
*/
//% fixedInstance jres=images.eyesMiddleRight
2018-01-17 02:05:57 +01:00
export const middleRight = new brick.Mood(images.eyesMiddleRight, sounds.informationAnalyze, BrickLight.Off);
/**
* In love mood
*/
//% fixedInstance jres=images.eyesLove
2018-01-17 02:05:57 +01:00
export const love = new brick.Mood(images.eyesLove, sounds.expressionsMagicWand, BrickLight.GreenPulse);
/**
* In laughing mood
*/
//% fixedInstance jres=images.eyesWinking
2018-01-17 02:05:57 +01:00
export const winking = new brick.Mood(images.eyesWinking, sounds.expressionsLaughing1, BrickLight.GreenFlash);
/**
* In a neutral mood
*/
//% fixedInstance jres=images.eyesNeutral
2018-01-17 01:21:02 +01:00
export const neutral = new brick.Mood(images.eyesNeutral, undefined, BrickLight.Green);
}