PCBrawl/src/main.c

240 lines
4.9 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "main.h"
#include "lzy.h"
#include "player.h"
#include "bullet.h"
#include "attack.h"
#include "level.h"
#include "sandbag.h"
#include "overlay.h"
#include "particle.h"
#include <stdlib.h>
#include <math.h>
static int frame, chara, level;
static int log_init(int x);
static int init(int argc, const char **argv);
static void update(void);
static void draw(int frame);
static int menu(void);
static void draw_bg(int frame);
/* debug */
int
init(int argc, const char **argv)
{
srand(69);
if (LZY_Init(argc, argv, "lzy example", 30, "res/tset.png",
"res/font.png")) {
LZY_Log(LZY_GetError());
LZY_Quit();
return 1;
}
menu();
level_init(level, chara);
frame = 0;
return 0;
}
void
update(void)
{
LZY_CycleEvents();
player_update();
sandbag_update(frame);
bullet_table_update();
attack_table_update();
particle_table_update();
}
void
draw(int frame)
{
/* draw */
LZY_DrawBegin();
{
level_draw();
player_draw(frame);
sandbag_draw(frame);
bullet_table_draw(frame);
attack_table_draw(frame);
particle_table_draw(frame);
overlay_draw(114, 176, chara, player_get_life());
overlay_draw(210, 176, -1, sandbag_get_life());
}
LZY_DrawEnd();
}
int
main(int argc, const char **argv)
{
if (init(argc, argv)) {
return 1;
} /* error */
while (!LZY_ShouldQuit()) {
update();
draw(frame);
frame += 1;
}
LZY_Log("cya");
LZY_Quit();
return 0;
}
int menu(void) {
/* main loop of the menu */
int running = 1;
int frame = 0;
while(running) {
LZY_CycleEvents();
LZY_DrawBegin();
{
draw_bg(frame);
LZY_DrawTileEx(247, LZY_DISPLAY_WIDTH / 2 - 72, 30, 6, 5);
if (frame % 16 < 8) {
LZY_DrawText("- PRESS SHIFT -", 134, 181);
LZY_DrawText("- PRESS SHIFT -", 134, 180);
}
}
LZY_DrawEnd();
running = !LZY_KeyDown(LZYK_O);
frame += 1;
}
while(LZY_KeyDown(LZYK_O)) {LZY_CycleEvents();}
running = 1;
int selec = 1;
int wait = 0;
while(running) {
LZY_CycleEvents();
LZY_DrawBegin();
{
draw_bg(frame);
LZY_DrawTile(61, 186 + (selec - 2.5) * 48, 64.0f + sin((float)frame / 5) * 5.0f);
for (int i=1; i<5; ++i) {
LZY_DrawTile(i * 23, 186 + (i - 2.5) * 48, 100);
}
switch (selec) {
case 1:
LZY_DrawText("DELTA", 178, 151);
LZY_DrawText("DELTA", 178, 150);
LZY_DrawText("PAR MASSENA", 16, 200);
LZY_DrawText("DANS FROZEN FRENZY", 16, 208);
break;
case 2:
LZY_DrawText("GRAVITY DUCK", 150, 151);
LZY_DrawText("GRAVITY DUCK", 150, 150);
LZY_DrawText("PAR PIEROTLL", 16, 200);
LZY_DrawText("DANS GRAVITY DUCK", 16, 208);
break;
case 3:
LZY_DrawText("AVENTURIER POUDINGUE", 118, 151);
LZY_DrawText("AVENTURIER POUDINGUE", 118, 150);
LZY_DrawText("PAR DRAK", 16, 200);
LZY_DrawText("DANS AVENTURA, LE ROYAUME POUDINGUE", 16, 208);
break;
case 4:
LZY_DrawText("SAKIMI HAKYU", 150, 151);
LZY_DrawText("SAKIMI HAKYU", 150, 150);
LZY_DrawText("PAR REDEYES", 16, 200);
LZY_DrawText("DANS SWORD BURST ZERO", 16, 208);
break;
}
}
LZY_DrawEnd();
running = !LZY_KeyDown(LZYK_O);
if(LZY_KeyDown(LZYK_LEFT) && selec > 1 && !wait) {
selec -= 1;
wait = 5;
};
if(LZY_KeyDown(LZYK_RIGHT) && selec < 4 && !wait) {
selec += 1;
wait = 5;
};
frame += 1;
if (wait > 0) --wait;
}
while(LZY_KeyDown(LZYK_O)) {LZY_CycleEvents();}
running = 1;
int selec_level = 1;
wait = 0;
while(running) {
LZY_CycleEvents();
LZY_DrawBegin();
{
draw_bg(frame);
LZY_DrawTile(61, 90 + (selec_level - 1) * 96, 40.0f + sin((float)frame / 5) * 5.0f);
for (int i=1; i<4; ++i) {
LZY_DrawTileEx(307 + (i - 1) * 3, 66 + (i - 1) * 96, 76, 3, 2);
}
switch (selec_level) {
case 1:
LZY_DrawText("GRAVITY FOREST DX", 130, 151);
LZY_DrawText("GRAVITY FOREST DX", 130, 150);
break;
case 2:
LZY_DrawText("SANCTUAIRE DE RECUPERATION", 90, 151);
LZY_DrawText("SANCTUAIRE DE RECUPERATION", 90, 150);
break;
case 3:
LZY_DrawText("PLANETE PLATFORMER", 126, 151);
LZY_DrawText("PLANETE PLATFORMER", 126, 150);
break;
}
}
LZY_DrawEnd();
running = !LZY_KeyDown(LZYK_O);
if(LZY_KeyDown(LZYK_LEFT) && selec_level > 1 && !wait) {
selec_level -= 1;
wait = 5;
};
if(LZY_KeyDown(LZYK_RIGHT) && selec_level < 3 && !wait) {
selec_level += 1;
wait = 5;
};
frame += 1;
if (wait > 0) --wait;
}
chara = selec - 1;
level = selec_level - 1;
return 1;
}
void draw_bg(int frame) {
LZY_DrawSetColor(240, 181, 65);
LZY_DrawClear();
LZY_DrawSetColor(255, 137, 51);
for (int x = frame%32-32; x < LZY_DISPLAY_WIDTH+32 ; x += 32){
for (int y = frame%32-32; y < LZY_DISPLAY_HEIGHT+32 ; y += 32){
LZY_DrawRect(x-1, y-1, 32, 32);
LZY_DrawRect(x, y, 32, 32);
LZY_DrawRect(x+1, y+1, 32, 32);
}
}
LZY_DrawSetColor(207, 117, 43);
for (int x = (frame*2)%32-32; x < LZY_DISPLAY_WIDTH+32 ; x += 32){
for (int y = (frame*2)%32-32; y < LZY_DISPLAY_HEIGHT+32 ; y += 32){
LZY_DrawRect(x, y, 32, 32);
}
}
}