Game For ECE 2035
Dependencies: mbed wave_player 4DGL-uLCD-SE MMA8452
speech.cpp
- Committer:
- nasiromar
- Date:
- 2021-11-19
- Revision:
- 6:c9695079521d
- Parent:
- 4:37d3935365f8
- Child:
- 14:7225da81314a
File content as of revision 6:c9695079521d:
#include "speech.h" #include "spells.h" #include "globals.h" #include "hardware.h" /** * Draw the speech bubble background. * Use this file to draw speech bubbles, look at the uLCD libraries for printing * text to the uLCD (see graphics.cpp note for link) */ static void draw_horizontal_speech_bubble(); static void draw_vertical_speech_bubble(); /** * Erase the speech bubble. */ void erase_horizontal_speech_bubble(); void erase_vertical_speech_bubble(); /** * Draw a single line of the speech bubble. * @param line The text to display * @param which If TOP, the first line; if BOTTOM, the second line. */ #define TOP 0 #define MID1 1 #define BOTTOM 3 static void draw_horizontal_speech_line(const char* line, int which); static void draw_vertical_speech_line(const char* line, int which); #define SPEECH_X 10 #define SPEECH_Y 80 #define BLACK 0x000000 #define WHITE 0xFFFFFF /** * Delay until it is time to scroll. */ static void horizontal_speech_bubble_wait(); static void vertical_speech_bubble_wait(); void draw_horizontal_speech_bubble() { uLCD.rectangle(SPEECH_X,SPEECH_Y,SPEECH_X+110,SPEECH_Y+30,WHITE); //border uLCD.filled_rectangle(SPEECH_X+1,SPEECH_Y+1,SPEECH_X+109,SPEECH_Y+29,BLACK); } void draw_vertical_speech_bubble() { uLCD.rectangle(SPEECH_Y,SPEECH_X+10,SPEECH_Y+40,SPEECH_X+70,WHITE); //border uLCD.filled_rectangle(SPEECH_Y+1,SPEECH_X+11,SPEECH_Y+39,SPEECH_X+69,BLACK); } void erase_horizontal_speech_bubble() { uLCD.filled_rectangle(SPEECH_X,SPEECH_Y,SPEECH_X+110,SPEECH_Y+30,BLACK); wait(.3); } void erase_vertical_speech_bubble() { uLCD.filled_rectangle(SPEECH_Y,SPEECH_X+10,SPEECH_Y+40,SPEECH_X+70,BLACK); wait(.3); } void draw_horizontal_speech_line(const char* line, int which) { int text_x = 2; int text_y; if(which == TOP){ text_y = 11; } if(which == BOTTOM){ text_y = 12; } uLCD.color(GREEN); uLCD.textbackground_color(BLACK); uLCD.text_mode(OPAQUE); uLCD.color(GREEN); while(*line){ pc.printf("%c\n", *line); uLCD.locate(text_x,text_y); uLCD.printf("%c\n",*line); text_x++; line = line + 1; } } void draw_vertical_speech_line(const char* line, int which) { int text_x = 12; int text_y; if(which == TOP){ text_y = 4; } if(which == MID1){ text_y = 6; } if(which == BOTTOM){ text_y = 8; } uLCD.color(GREEN); uLCD.textbackground_color(BLACK); uLCD.text_mode(OPAQUE); uLCD.color(GREEN); while(*line){ pc.printf("%c\n", *line); uLCD.locate(text_x,text_y); uLCD.printf("%c\n",*line); uLCD.locate(text_x,text_y); uLCD.printf("%c\n",*line); uLCD.locate(text_x,text_y); uLCD.printf("%c\n",*line); text_x++; line = line + 1; } } void horizontal_speech_bubble_wait1() { GameInputs inputs = read_inputs(); while(inputs.b1){ wait(.1); inputs = read_inputs(); } } void horizontal_speech_bubble_wait2() { GameInputs inputs = read_inputs(); while(inputs.b2&&inputs.b1&&inputs.b3){ wait(.1); inputs = read_inputs(); } } void vertical_speech_bubble_wait() { GameInputs inputs = read_inputs(); int magic; while(inputs.b2&&inputs.b1&&inputs.b3){ wait(.1); inputs = read_inputs(); magic = spell(); } } void horizontal_speech1(const char* line1, const char* line2) { draw_horizontal_speech_bubble(); draw_horizontal_speech_line(line1, TOP); draw_horizontal_speech_line(line2, BOTTOM); horizontal_speech_bubble_wait1(); erase_horizontal_speech_bubble(); } void horizontal_speech2(const char* line1, const char* line2) { draw_horizontal_speech_bubble(); draw_horizontal_speech_line(line1, TOP); draw_horizontal_speech_line(line2, BOTTOM); horizontal_speech_bubble_wait2(); erase_horizontal_speech_bubble(); } //const char* line1, const char* line2 void vertical_speech(const char* line1, const char* line2, const char* line3) { draw_vertical_speech_bubble(); draw_vertical_speech_line(line1, TOP); draw_vertical_speech_line(line2, MID1); draw_vertical_speech_line(line3, BOTTOM); vertical_speech_bubble_wait(); erase_vertical_speech_bubble(); } void long_speech(const char* lines[], int n) { }