From d9fdc2aa0e4ca2167c03791f2ed73fc13bad8634 Mon Sep 17 00:00:00 2001 From: laochailan Date: Sun, 8 May 2011 13:48:25 +0200 Subject: [PATCH] Dialogs! conversational~ fun fact: taisei might build with -Wall -Werror now. --- gfx/dialog/youmu.png | Bin 0 -> 69567 bytes gfx/dialog/youmu.svg | 1106 +++++++++++++++++++++++++++++++++++++++++- src/CMakeLists.txt | 1 + src/animation.c | 1 + src/audio.c | 1 + src/boss.c | 8 +- src/dialog.c | 119 +++++ src/dialog.h | 46 ++ src/enemy.h | 6 +- src/font.c | 12 +- src/font.h | 1 + src/global.c | 1 + src/global.h | 3 + src/item.h | 4 +- src/laser.c | 4 +- src/laser.h | 2 +- src/list.c | 2 +- src/list.h | 2 +- src/main.c | 4 +- src/shader.c | 1 + src/stage.c | 66 ++- src/stages/stage0.c | 34 +- src/texture.c | 1 + 23 files changed, 1353 insertions(+), 72 deletions(-) create mode 100644 gfx/dialog/youmu.png create mode 100644 src/dialog.c create mode 100644 src/dialog.h diff --git a/gfx/dialog/youmu.png b/gfx/dialog/youmu.png new file mode 100644 index 0000000000000000000000000000000000000000..09629240c01d78cf15c3b775e278baf7fd3af20a GIT binary patch literal 69567 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%0D?U`g6-Q1rU`x*sWw^uCLbrprl3#uzr%F4}P2 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 literal 0 HcmV?d00001 diff --git a/gfx/dialog/youmu.svg b/gfx/dialog/youmu.svg index e5fe114b..a1278296 100644 --- a/gfx/dialog/youmu.svg +++ b/gfx/dialog/youmu.svg @@ -10,14 +10,731 @@ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="1337" - height="1664" + width="1087.3624" + height="1431.0938" id="svg2" version="1.1" inkscape:version="0.48.1 r9760" - sodipodi:docname="youmu.svg"> + sodipodi:docname="youmu.svg" + inkscape:export-filename="/tmp/vektoryoumu.png" + inkscape:export-xdpi="200" + inkscape:export-ydpi="200"> + id="defs4"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + inkscape:window-maximized="1" + showguides="true" + inkscape:guide-bbox="true" /> @@ -56,9 +775,9 @@ inkscape:label="Ebene 1" inkscape:groupmode="layer" id="layer1" - transform="translate(179.92857,159.63782)" + transform="translate(-52.126629,120.00835)" sodipodi:insensitive="true" - style="display:inline"> + style="display:none"> + style="display:inline" + transform="translate(-232.05519,-39.629467)"> + + + + + + + + + + + + + + + + + + + + + - + + + + + d="m 667.71083,551.06445 c 0,7.67102 -9.7236,13.8896 -21.71828,13.8896 -11.99467,0 -21.71828,-6.21858 -21.71828,-13.8896 0,-7.67101 9.72361,-13.88959 21.71828,-13.88959 11.99468,0 21.71828,6.21858 21.71828,13.88959 z" + transform="matrix(1.0348837,0,0,1.5636364,-23.797316,-303.78143)" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 81e29d20..e297982e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -15,6 +15,7 @@ set(SRCs plrmodes.c laser.c shader.c + dialog.c stages/stage0.c) set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}) diff --git a/src/animation.c b/src/animation.c index 64644c0e..cec2c993 100644 --- a/src/animation.c +++ b/src/animation.c @@ -10,6 +10,7 @@ #include "list.h" #include +#include Animation *init_animation(char *filename) { Animation *buf = create_element((void **)&global.animations, sizeof(Animation)); diff --git a/src/audio.c b/src/audio.c index 152733b5..56d5a4e2 100644 --- a/src/audio.c +++ b/src/audio.c @@ -8,6 +8,7 @@ #include "audio.h" #include "global.h" #include "list.h" +#include Sound *load_sound(char *filename) { ALuint sound; diff --git a/src/boss.c b/src/boss.c index d62ee839..7f5aa6e7 100644 --- a/src/boss.c +++ b/src/boss.c @@ -113,7 +113,11 @@ void process_boss(Boss *boss) { } } - boss->current->rule(boss, time); + if(time == 0) + boss->current->rule(boss, EVENT_BIRTH); + else + boss->current->rule(boss, time); + if(time > boss->current->timeout) boss->dmg = boss->current->dmglimit + 1; @@ -145,7 +149,6 @@ void free_attack(Attack *a) { void start_attack(Boss *b, Attack *a) { a->starttime = global.frames; - a->rule(b, 0); if(a->type == Spellcard || a->type == SurvivalSpell) play_sound("charge_generic"); } @@ -162,7 +165,6 @@ Attack *boss_add_attack(Boss *boss, AttackType type, char *name, float timeout, strcpy(a->name, name); a->timeout = timeout * FPS; - int i; int dmg = 0; if(boss->acount > 1) dmg = boss->attacks[boss->acount - 2].dmglimit; diff --git a/src/dialog.c b/src/dialog.c new file mode 100644 index 00000000..6a5e9028 --- /dev/null +++ b/src/dialog.c @@ -0,0 +1,119 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (C) 2011, Lukas Weber + */ + +#include "dialog.h" +#include "global.h" +#include "font.h" +#include +#include + +Dialog *create_dialog(char *left, char *right) { + Dialog *d = malloc(sizeof(Dialog)); + memset(d, 0, sizeof(Dialog)); + + d->images[Left] = get_tex(left); + d->images[Right] = get_tex(right); + + d->page_time = global.frames; + d->birthtime = global.frames; + return d; +} + +void dset_image(Dialog *d, Side side, char *name) { + d->images[side] = get_tex(name); +} + +void dadd_msg(Dialog *d, Side side, char *msg) { + d->messages = realloc(d->messages, (++d->count)*sizeof(DialogMessage)); + d->messages[d->count-1].side = side; + d->messages[d->count-1].msg = malloc(strlen(msg) + 1); + strncpy(d->messages[d->count-1].msg, msg, strlen(msg) + 1); +} + +void delete_dialog(Dialog *d) { + int i; + for(i = 0; i < d->count; i++) + free(d->messages[i].msg); + + free(d->messages); + free(d); +} + +void draw_dialog(Dialog *dialog) { + glPushMatrix(); + + glTranslatef(VIEWPORT_W/2.0, VIEWPORT_H*3.0/4.0, 0); + + int i; + for(i = 0; i < 2; i++) { + glPushMatrix(); + if(i == Left) { + glCullFace(GL_FRONT); + glScalef(-1,1,1); + } + + if(global.frames - dialog->birthtime < 30) + glTranslatef(120 - (global.frames - dialog->birthtime)*4, 0, 0); + + int cur = dialog->messages[dialog->pos].side; + int pre = 2; + if(dialog->pos > 0) + pre = dialog->messages[dialog->pos-1].side; + + short dir = (1 - 2*(i == dialog->messages[dialog->pos].side)); + if(global.frames - dialog->page_time < 10 && ((i != pre && i == cur) || (i == pre && i != cur))) { + int time = (global.frames - dialog->page_time) * dir; + glTranslatef(time, time, 0); + float clr = 1.0 - 0.07*time; + glColor3f(clr, clr, clr); + } else { + glTranslatef(dir*10, dir*10, 0); + glColor3f(1 - dir*0.7, 1 - dir*0.7, 1 - dir*0.7); + } + + glTranslatef(VIEWPORT_W*7.0/18.0, 0, 0); + if(dialog->images[i]) + draw_texture_p(0, 0, dialog->images[i]); + glPopMatrix(); + } + + glColor3f(1,1,1); + + glCullFace(GL_BACK); + glPopMatrix(); + + glPushMatrix(); + if(global.frames - dialog->birthtime < 25) + glTranslatef(0, 100-(global.frames-dialog->birthtime)*4, 0); + glColor4f(0,0,0,0.8); + + glBegin(GL_QUADS); + glVertex3f(20, VIEWPORT_H-130, 0); + glVertex3f(20, VIEWPORT_H-20, 0); + glVertex3f(VIEWPORT_W-20, VIEWPORT_H-20, 0); + glVertex3f(VIEWPORT_W-20, VIEWPORT_H-130, 0); + glEnd(); + glColor4f(1,1,1,1); + + if(dialog->messages[dialog->pos].side == Right) + glColor3f(0.6,0.6,1); + draw_text(dialog->messages[dialog->pos].msg, VIEWPORT_W/2, VIEWPORT_H-110, _fonts.biolinum); + + glColor4f(1,1,1,1); + glPopMatrix(); +} + +void page_dialog(Dialog **d) { + (*d)->pos++; + (*d)->page_time = global.frames; + + if((*d)->pos >= (*d)->count) { + delete_dialog(*d); + *d = NULL; + global.timer++; + } +} \ No newline at end of file diff --git a/src/dialog.h b/src/dialog.h new file mode 100644 index 00000000..42e78bf7 --- /dev/null +++ b/src/dialog.h @@ -0,0 +1,46 @@ +/* + * This software is licensed under the terms of the MIT-License + * See COPYING for further information. + * --- + * Copyright (C) 2011, Lukas Weber + */ + +#ifndef DIALOG_H +#define DIALOG_H + +#include "texture.h" + +struct DialogMessage; +struct DialogSpeaker; + +typedef enum { + Right, + Left +} Side; + +typedef struct DialogMessage { + Side side; + char *msg; +} DialogMessage; + +typedef struct Dialog { + DialogMessage *messages; + Texture *images[2]; + + int count; + int pos; + + int page_time; + + int birthtime; +} Dialog; + +Dialog *create_dialog(char *left, char *right); +void dset_image(Dialog *d, Side side, char *name); +void dadd_msg(Dialog *d, Side side, char *msg); +void delete_dialog(Dialog *d); + +void draw_dialog(Dialog *dialog); +void page_dialog(Dialog **d); + +#endif \ No newline at end of file diff --git a/src/enemy.h b/src/enemy.h index b18c3afb..86fa0e04 100644 --- a/src/enemy.h +++ b/src/enemy.h @@ -10,6 +10,10 @@ #include "animation.h" #include + +#undef complex +#define complex double _Complex + #include struct Enemy; @@ -17,7 +21,7 @@ typedef void (*EnemyLogicRule)(struct Enemy*, int t); typedef EnemyLogicRule EnemyDrawRule; enum { - ENEMY_IMMUNE = -9000, + ENEMY_IMMUNE = -9000 }; typedef struct Enemy { diff --git a/src/font.c b/src/font.c index 49064791..3758249f 100644 --- a/src/font.c +++ b/src/font.c @@ -30,7 +30,17 @@ Texture *load_text(const char *text, TTF_Font *font) { } void draw_text(const char *text, int x, int y, TTF_Font *font) { - Texture *tex = load_text(text, font); + char *nl; + char *buf = malloc(strlen(text)); + strcpy(buf, text); + + if((nl = strchr(buf, '\n')) != NULL && strlen(nl) > 1) { + draw_text(nl+1, x, y + 20, font); + *nl = '\0'; + } + + Texture *tex = load_text(buf, font); draw_texture_p(x, y, tex); free_texture(tex); + free(buf); } \ No newline at end of file diff --git a/src/font.h b/src/font.h index a2a8373e..de15ebe3 100644 --- a/src/font.h +++ b/src/font.h @@ -14,6 +14,7 @@ Texture *load_text(const char *text, TTF_Font *font); void draw_text(const char *text, int x, int y, TTF_Font *font); +void init_fonts(); struct Fonts { TTF_Font *biolinum; diff --git a/src/global.c b/src/global.c index 56001004..714e4b01 100644 --- a/src/global.c +++ b/src/global.c @@ -8,6 +8,7 @@ #include "global.h" #include #include +#include #include "font.h" Global global; diff --git a/src/global.h b/src/global.h index 3f5f3ba7..56b40f26 100644 --- a/src/global.h +++ b/src/global.h @@ -17,6 +17,7 @@ #include "boss.h" #include "laser.h" #include "shader.h" +#include "dialog.h" enum { SCREEN_W = 800, @@ -47,6 +48,7 @@ typedef struct { Laser *lasers; int frames; + int timer; Texture *textures; Animation *animations; @@ -62,6 +64,7 @@ typedef struct { } rtt; Boss *boss; + Dialog *dialog; ALuint sndsrc[SNDSRC_COUNT]; diff --git a/src/item.h b/src/item.h index 31c9c721..179a60e0 100644 --- a/src/item.h +++ b/src/item.h @@ -25,7 +25,7 @@ typedef struct Item{ struct Item *next; struct Item *prev; - long birthtime; + int birthtime; complex pos; complex pos0; @@ -40,7 +40,7 @@ void delete_item(Item *item); void draw_items(); void delete_items(); -int collision(Item *p); +int collision_item(Item *p); void process_items(); #endif diff --git a/src/laser.c b/src/laser.c index 740f764b..39080f45 100644 --- a/src/laser.c +++ b/src/laser.c @@ -91,7 +91,7 @@ void draw_laser_curve(Laser *laser) { if(t < 0) t = 0; - for(t; t < global.frames - laser->birthtime && t <= laser->deathtime; t+=0.5) { + for(; t < global.frames - laser->birthtime && t <= laser->deathtime; t+=0.5) { complex pos = laser->rule(laser,t); glPushMatrix(); @@ -181,7 +181,7 @@ int collision_laser_curve(Laser *l) { if(t < 0) t = 0; - for(t; t < global.frames - l->birthtime && t <= l->deathtime; t+=2) { + for(; t < global.frames - l->birthtime && t <= l->deathtime; t+=2) { complex pos = l->rule(l,t); if(cabs(pos - global.plr.pos) < 5) return 1; diff --git a/src/laser.h b/src/laser.h index e4fedc5a..e9e4f1d5 100644 --- a/src/laser.h +++ b/src/laser.h @@ -41,7 +41,7 @@ typedef struct Laser { Laser *create_laser(LaserType type, complex pos, complex pos0, int time, int deathtime, Color *color, LaserRule rule, complex args, ...); void draw_lasers(); -void free_lasers(); +void delete_lasers(); void process_lasers(); int collision_laser_line(Laser *l); diff --git a/src/list.c b/src/list.c index 21c1e40a..c9ec32c7 100644 --- a/src/list.c +++ b/src/list.c @@ -44,7 +44,7 @@ void delete_element(void **dest, void *e) { free(e); } -void *delete_all_elements(void **dest, void (callback)(void **, void *)) { +void delete_all_elements(void **dest, void (callback)(void **, void *)) { void *e = *dest; void *tmp; diff --git a/src/list.h b/src/list.h index 5e6fe4f1..bc93ca60 100644 --- a/src/list.h +++ b/src/list.h @@ -14,6 +14,6 @@ void *create_element(void **dest, int size); void delete_element(void **dest, void *e); -void *delete_all_elements(void **dest, void (callback)(void **, void *)); +void delete_all_elements(void **dest, void (callback)(void **, void *)); #endif \ No newline at end of file diff --git a/src/main.c b/src/main.c index 531b2ccb..6245c05f 100644 --- a/src/main.c +++ b/src/main.c @@ -67,5 +67,7 @@ int main(int argc, char** argv) { stage0_loop(); - shutdown(); + shutdown(); + + return 1; } \ No newline at end of file diff --git a/src/shader.c b/src/shader.c index 4fbe9bea..daff44f7 100644 --- a/src/shader.c +++ b/src/shader.c @@ -9,6 +9,7 @@ #include "global.h" #include "list.h" #include +#include void print_info_log(GLuint shader) { int len, alen; diff --git a/src/stage.c b/src/stage.c index f8dfdc00..7c0c6715 100644 --- a/src/stage.c +++ b/src/stage.c @@ -15,6 +15,7 @@ SDL_Event event; void stage_start() { init_player(&global.plr, Youmu, YoumuHoming); + global.timer = 0; } void stage_input() { @@ -25,10 +26,14 @@ void stage_input() { global.plr.focus = 1; break; case SDLK_y: - global.plr.fire = True; + if(!global.dialog) + global.plr.fire = True; + else + page_dialog(&global.dialog); break; case SDLK_x: - plr_bomb(&global.plr); + if(!global.dialog) + plr_bomb(&global.plr); break; case SDLK_ESCAPE: exit(1); @@ -77,28 +82,8 @@ void stage_input() { } -void stage_draw() { - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glOrtho(0, SCREEN_W, SCREEN_H, 0, -10, 10); - glMatrixMode(GL_MODELVIEW); - glDisable(GL_DEPTH_TEST); - - glPushMatrix(); - glTranslatef(VIEWPORT_X,VIEWPORT_Y,0); - apply_bg_shaders(); - player_draw(&global.plr); - - draw_projectiles(global.projs); - draw_enemies(global.enemies); - draw_items(); - draw_lasers(); - - if(global.boss) - draw_boss(global.boss); - - glPopMatrix(); - draw_texture(SCREEN_W/2, SCREEN_H/2, "hud"); +void draw_hud() { + draw_texture(SCREEN_W/2, SCREEN_H/2, "hud"); char buf[16]; int i; @@ -123,6 +108,34 @@ void stage_draw() { glPopMatrix(); } +void stage_draw() { + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glOrtho(0, SCREEN_W, SCREEN_H, 0, -10, 10); + glMatrixMode(GL_MODELVIEW); + glDisable(GL_DEPTH_TEST); + + glPushMatrix(); + glTranslatef(VIEWPORT_X,VIEWPORT_Y,0); + apply_bg_shaders(); + player_draw(&global.plr); + + draw_projectiles(global.projs); + draw_enemies(global.enemies); + draw_items(); + draw_lasers(); + + if(global.boss) + draw_boss(global.boss); + + if(global.dialog) + draw_dialog(global.dialog); + + glPopMatrix(); + + draw_hud(); +} + void apply_bg_shaders() { glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); @@ -173,7 +186,11 @@ void stage_logic() { global.boss = NULL; } } + global.frames++; + + if(!global.dialog) + global.timer++; if(SDL_GetTicks() > global.fpstime+1000) { fprintf(stderr, "FPS: %d\n", global.fps); @@ -189,6 +206,5 @@ void stage_end() { delete_enemies(&global.enemies); delete_items(); delete_lasers(); - global.frames = 0; } \ No newline at end of file diff --git a/src/stages/stage0.c b/src/stages/stage0.c index bc0ecf57..2db675d3 100644 --- a/src/stages/stage0.c +++ b/src/stages/stage0.c @@ -19,13 +19,23 @@ void simpleEnemy(Enemy *e, int t) { return; } - if(!((global.frames - e->birthtime) % 50)) + if(!(t % 50)) create_projectile("ball", e->pos, rgb(0,0,1), linear,3 + 2I); e->moving = 1; e->dir = creal(e->args[0]) < 0; - e->pos = e->pos0 + e->args[0]*t + I*sin((global.frames - e->birthtime)/10.0f)*20; // TODO: do this way cooler. + e->pos = e->pos0 + e->args[0]*t + I*sin(t/10.0f)*20; // TODO: do this way cooler. +} + +Dialog *test_dialog() { + Dialog *d = create_dialog("dialog/youmu", "dialog/youmu"); + + dadd_msg(d, Left, "Hello"); + dadd_msg(d, Right, "Hello you"); + dadd_msg(d, Right, "Uhm ... who are you?\nNew line.\nAnother longer line."); + + return d; } void stage0_draw() { @@ -103,13 +113,14 @@ void stage0_draw() { } void cirno_intro(Boss *c, int time) { - if(time == 0) { + if(time == EVENT_BIRTH) { boss_add_waypoint(c->current, VIEWPORT_W/2-100 + 30I, 100); boss_add_waypoint(c->current, VIEWPORT_W/2+100 + 30I, 400); + return; } -// if(!(time % 50)) -// create_laser(LaserLine, c->pos, 10*cexp(I*carg(global.plr.pos - c->pos)), 30, 200, ((Color){1,0,0}), NULL, 0); + if(!(time % 50)) + create_laser(LaserLine, c->pos, 10*cexp(I*carg(global.plr.pos - c->pos)+I*0.1), 30, 200, rgb(1,0,0), NULL, 0); } complex lolsin(Laser *l, float t) { @@ -120,10 +131,11 @@ complex lolsin(Laser *l, float t) { } void cirno_test(Boss *c, int time) { - if(time == 0) { + if(time == EVENT_BIRTH) { boss_add_waypoint(c->current, 220 + 100I, 50); boss_add_waypoint(c->current, 12 + 100I, 60); boss_add_waypoint(c->current, 200 + 90I, 100); + return; } int i; if(!(time % 50)) @@ -140,11 +152,15 @@ Boss *create_cirno() { } void stage0_events() { - if(global.frames == 300 ) + if(global.dialog) + return; + if(global.timer == 200) + global.dialog = test_dialog(); + if(global.timer == 300) global.boss = create_cirno(); - if(global.boss == NULL && !(global.frames % 100)) create_enemy(&global.enemies, Fairy, simpleEnemy, 0 + I*100, 3, NULL, 2); + if(global.boss == NULL && !(global.timer % 100)) create_enemy(&global.enemies, Fairy, simpleEnemy, 0 + I*100, 3, NULL, 2); -// if(!(global.frames % 100)) +// if(!(global.timer % 100)) // create_laser(LaserCurve, 300, 300, 60, 500, ((ColorA){0.6,0.6,1,0.4}), lolsin, 0); } diff --git a/src/texture.c b/src/texture.c index 6caf6fdd..60ab8b60 100644 --- a/src/texture.c +++ b/src/texture.c @@ -11,6 +11,7 @@ #include #include #include +#include #include "audio.h" #include "shader.h" #include "list.h"