Skip to content

Commit

Permalink
add gf
Browse files Browse the repository at this point in the history
  • Loading branch information
UNSTOP4BLE committed Apr 4, 2024
1 parent e576793 commit 5175053
Show file tree
Hide file tree
Showing 12 changed files with 103 additions and 58 deletions.
Binary file modified assets/characters/gf/sheet0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions assets/characters/gf/speaker.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"textures": [
"sheet1.png"
],

"frames": [
[0, 1, 1, 176, 88, 51, 77],
[0, 178, 1, 175, 88, 50, 77],
[0, 1, 90, 175, 88, 50, 77]
],

"config": [
[24, 2, 1, 0, 0]
]
}
40 changes: 32 additions & 8 deletions src/character.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,16 @@ Character::Character(std::string path, std::string objstr, float _x, float _y) {
type = chardata["type"].asString();
obj = new Anim_OBJECT();
issinging = false;
singendtime = 0;
AnimOBJECT_Init(obj, path, objstr);
setAnim(0);
obj_speaker = NULL;
if (Hash::FromString(type.c_str()) == "gf"_h) {
obj_speaker = new Anim_OBJECT();
AnimOBJECT_Init(obj_speaker, path, "speaker.json");
AnimOBJECT_SetAnim(obj_speaker, 0, ModeNone);
}
setAnim(0, ModeNone);
// issinging = false;
// singendtime = 0;
}

void Character::setPos(float _x, float _y) {
Expand All @@ -31,10 +38,19 @@ void Character::setFocus(float x, float y, float zoom) {
camzoom = zoom;
}

void Character::setAnim(int anim) {
AnimOBJECT_SetAnim(obj, anim, ModeNone);
void Character::setAnim(int anim, AnimationModes mode) {
AnimOBJECT_SetAnim(obj, anim, mode);
switch (Hash::FromString(type.c_str()))
{
case "gf"_h:
AnimOBJECT_SetAnim(obj_speaker, 0, ModeStep);
singendtime = app->parser.curStep + 3;
break;
default:
singendtime = app->parser.curStep + 7;
break;
}
issinging = true;
singendtime = app->parser.curStep + 7;
}

void Character::setIcon(int i) {
Expand All @@ -50,7 +66,10 @@ int Character::getFrame(void) {
}

void Character::tick(void) {
if (Hash::FromString(type.c_str()) == "gf"_h)
AnimOBJECT_Tick(obj_speaker);
AnimOBJECT_Tick(obj);

if (singendtime < app->parser.curStep)
issinging = false;
//set animations
Expand All @@ -62,23 +81,28 @@ void Character::tick(void) {
if (app->parser.justStep && !(app->parser.curStep % 4))
{
if (obj->curanim.anim == 1)
setAnim(0);
setAnim(0, ModeStep);
else
setAnim(1);
setAnim(1, ModeStep);
}
break;
default:
if (app->parser.justStep && !(app->parser.curStep % 8))
setAnim(0);
setAnim(0, ModeStep);
break;
}
}
}

void Character::draw(float cx, float cy, float cz) {
if (Hash::FromString(type.c_str()) == "gf"_h)
AnimOBJECT_Draw(obj_speaker, (x-50)-cx, (y+72)-cy, false, 0, 255, cz);

AnimOBJECT_Draw(obj, x-cx, y-cy, false, 0, 255, cz);
}

Character::~Character() {
delete obj;
if (obj_speaker != NULL)
delete obj_speaker;
}
3 changes: 2 additions & 1 deletion src/character.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ class Character
Character(std::string path, std::string objstr, float _x, float _y);
void setPos(float _x, float _y);
void setFocus(float x, float y, float zoom);
void setAnim(int anim);
void setAnim(int anim, AnimationModes mode);
void setIcon(int i);
int getAnim(void);
int getFrame(void);
Expand All @@ -21,5 +21,6 @@ class Character
int icon;
private:
Anim_OBJECT *obj;
Anim_OBJECT *obj_speaker;
std::string type;
};
2 changes: 1 addition & 1 deletion src/chartparser.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ class ChartParser
int songTime;
bool justStep;
double step_crochet;
double crochet;
ChartData chartdata;
std::vector<Section> sections;
std::vector<Note> gamenotes[2];
private:
std::ifstream chart;
double crochet;
void readChartData(void);
};
2 changes: 1 addition & 1 deletion src/combo.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ class ComboObject
public:
bool tick, falling;
float x;
Tween<float, QuadInOutEasing, ChronoTimeSource> y;
Tween<float, QuadInOutEasing, Chrono> y;
int ymin;
GFX::RECT<int> img;
GFX::RECT<int> disp;
Expand Down
2 changes: 1 addition & 1 deletion src/menu/mainmenu.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,5 +15,5 @@ class MainMenuScreen : public Screen {
int selection;
std::string selectedsong;
std::string songs[4];
Tween<float, QuadInEasing, ChronoTimeSource> backgroundy;
Tween<float, QuadInEasing, Chrono> backgroundy;
};
19 changes: 9 additions & 10 deletions src/playstate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ void PlayStateScreen::initscr(std::string song) {
opponent->setFocus(_config["opponentpos"][2].asFloat(), _config["opponentpos"][3].asFloat(), _config["opponentpos"][4].asFloat());

//gf
// sprintf(_path, "assets/characters/%s/", _config["gf"].asString().c_str());
// gf = new Character(_path, _config["gf"].asString() + ".json", _config["gfpos"][0].asFloat(), _config["gfpos"][1].asFloat());
sprintf(_path, "assets/characters/%s/", _config["gf"].asString().c_str());
gf = new Character(_path, _config["gf"].asString() + ".json", _config["gfpos"][0].asFloat(), _config["gfpos"][1].asFloat());

//stage
sprintf(_path, "assets/stages/%s/%s.json", _config["back"].asString().c_str(), _config["back"].asString().c_str());
Expand Down Expand Up @@ -193,7 +193,7 @@ void PlayStateScreen::update(void)
curstage.tick(gamecam.camx.getValue(), gamecam.camy.getValue());
player->tick();
opponent->tick();
// gf->tick();
gf->tick();

}

Expand Down Expand Up @@ -239,7 +239,7 @@ void PlayStateScreen::drawIcons(void) {
void PlayStateScreen::draw(void)
{
curstage.drawObjects(curstage.bgobjects, gamecam.zoom.getValue());
// gf->draw(gamecam.camx, gamecam.camy, gamecam.zoom);
gf->draw(gamecam.camx.getValue(), gamecam.camy.getValue(), gamecam.zoom.getValue());
curstage.drawObjects(curstage.mdobjects, gamecam.zoom.getValue());

opponent->draw(gamecam.camx.getValue(), gamecam.camy.getValue(), gamecam.zoom.getValue());
Expand Down Expand Up @@ -304,8 +304,8 @@ void PlayStateScreen::updateInput(void)
checkPadHeld[1] = Pad_Held(PSP_CTRL_DOWN | PSP_CTRL_CROSS | PSP_CTRL_LTRIGGER);
checkPadHeld[2] = Pad_Held(PSP_CTRL_UP | PSP_CTRL_TRIANGLE | PSP_CTRL_RTRIGGER);
checkPadHeld[3] = Pad_Held(PSP_CTRL_RIGHT | PSP_CTRL_CIRCLE);
/*
*/


//handle note hits here? why not lol
//opponent
for (int i = 0; i < static_cast<int>(app->parser.gamenotes[1].size()); i++)
Expand Down Expand Up @@ -334,7 +334,7 @@ void PlayStateScreen::updateInput(void)
if (inst != NULL)
vocals->setVolume(1,1);
notes[i].flag |= FLAG_NOTE_HIT;
opponent->setAnim(1+type); //set animation
opponent->setAnim(1+type, ModeNone); //set animation
}

//note is below the screen, so go back to index 0
Expand Down Expand Up @@ -370,7 +370,6 @@ void PlayStateScreen::updateInput(void)
Rating rating = judgeNote(notediff);
if (rating.name == "sick")
checkPad[type] = true;

}
//check if its been hit
if (checkPad[type] && notediff < static_cast<float>(ratingData[3].hitWindow)) //shit hit window
Expand All @@ -380,7 +379,7 @@ void PlayStateScreen::updateInput(void)
if (inst != NULL)
vocals->setVolume(1,1);
notes[i].flag |= FLAG_NOTE_HIT;
player->setAnim(1+type); //play animation
player->setAnim(1+type, ModeNone); //play animation
score += rating.score;
health += 0.023;
combo.combo += 1;
Expand All @@ -400,7 +399,7 @@ void PlayStateScreen::updateInput(void)
anim = i;
break;
}
player->setAnim(1+anim);
player->setAnim(1+anim, ModeNone);
player->singendtime = app->parser.curStep-1;
}
}
Expand Down
6 changes: 3 additions & 3 deletions src/playstate.h
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ class PlayStateScreen : public Screen {
class Camera {
public:
void update(float ox, float oy, float oz, float px, float py, float pz);
Tween<float, QuadInOutEasing, ChronoTimeSource> camx, camy;
Tween<float, QuadInOutEasing, ChronoTimeSource> zoom;
Tween<float, QuadInOutEasing, Chrono> camx, camy;
Tween<float, QuadInOutEasing, Chrono> zoom;
} gamecam, hudcam;
void initscr(std::string song);
void freescr(void);
Expand Down Expand Up @@ -81,6 +81,6 @@ class PlayStateScreen : public Screen {
bool ghosttap;
bool botplay;
//note animation
Tween<float, QuadInOutEasing, ChronoTimeSource> noteframe[4];
Tween<float, QuadInOutEasing, Chrono> noteframe[4];
bool notehit[4];
};
44 changes: 17 additions & 27 deletions src/psp/animation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,16 +58,6 @@ void AnimOBJECT_SetAnim(Anim_OBJECT *obj, int anim, AnimationModes mode)
ASSERTFUNC(obj, "object is null");

obj->mode = mode;
switch(mode)
{
case ModeStep:
obj->curanim.endtime = app->parser.curStep + 4; //end 4 steps later
break;
case ModeNone:
obj->curanim.endtime = 0;
break;
default: break;
}

obj->curanim.anim = anim;
obj->curframe = obj->conf[obj->curanim.anim][0];
Expand All @@ -76,7 +66,20 @@ void AnimOBJECT_SetAnim(Anim_OBJECT *obj, int anim, AnimationModes mode)
obj->tick = obj->cananimate = true;
if (obj->speed[obj->curanim.anim] == 0)
obj->speed[obj->curanim.anim] = 1;
obj->frame.setValue(0, static_cast<float>(obj->curanim.framecount-1), static_cast<float>(obj->curanim.framecount-1)/static_cast<float>(obj->speed[obj->curanim.anim]));

switch(mode)
{
case ModeStep:
obj->curanim.endtime = 4; //end 4 steps later
obj->frame.timesource = Step;
break;
case ModeNone:
obj->curanim.endtime = static_cast<float>(obj->curanim.framecount-1)/static_cast<float>(obj->speed[obj->curanim.anim]);
obj->frame.timesource = Chrono;
break;
default: break;
}
obj->frame.setValue(0, static_cast<float>(obj->curanim.framecount-1), obj->curanim.endtime);
}

void AnimOBJECT_Tick(Anim_OBJECT *obj)
Expand All @@ -85,26 +88,18 @@ void AnimOBJECT_Tick(Anim_OBJECT *obj)

if (obj->tick && obj->cananimate)
{
switch (obj->mode)
{
case ModeStep:
// obj->tweenframe.setValue(obj->framecount, obj->speed[obj->curanim], app->parser.curStep); // maybe dont make synced to step later on? i will see
break;
case ModeNone:
break;
default: break;
}

if (static_cast<int>(obj->frame.getValue())+1 > obj->curanim.framecount) {
obj->tick = false;
return;
}
if (static_cast<int>(obj->frame.getValue()) < 0)
return;
obj->curframe = obj->conf[obj->curanim.anim][static_cast<int>(obj->frame.getValue())];
obj->curanim.tex = obj->frames[obj->curframe].tex;
}

}
#include "font.h"

void AnimOBJECT_Draw(Anim_OBJECT *obj, float x, float y, bool linear, float angle, int alpha, float zoom)
{
ASSERTFUNC(obj, "object is null");
Expand All @@ -119,13 +114,8 @@ void AnimOBJECT_Draw(Anim_OBJECT *obj, float x, float y, bool linear, float angl
static_cast<float>(y - obj->frames[obj->curframe].offsety),
static_cast<float>(obj->frames[obj->curframe].w),
static_cast<float>(obj->frames[obj->curframe].h)};
// if (obj->flipped)
// disp.w = -disp.w;

ASSERTFUNC(obj->textures[obj->curanim.tex], "texture is NULL");

// if (obj->visible)
GFX::drawTexZoom<float>(obj->textures[obj->curanim.tex], &img, &disp, linear, angle, alpha, zoom);
PrintFont(Left, 0, 40, "asdasd %d", static_cast<int>(obj->frame.getValue()));
}
}
4 changes: 2 additions & 2 deletions src/psp/animation.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ struct Animation
int anim;
int tex;
int framecount;
int endtime;
float endtime;
};

class Anim_OBJECT {
Expand All @@ -32,7 +32,7 @@ class Anim_OBJECT {
int curframe;
bool tick;
bool cananimate;
Tween<float, LinearEasing, ChronoTimeSource> frame;
Tween<float, LinearEasing, Chrono> frame;
AnimationModes mode;
std::vector<AnimFrames> frames;
std::vector<std::vector<int>> conf;
Expand Down
Loading

0 comments on commit 5175053

Please sign in to comment.