From ad8999a35c1fa2f24a9924ab32a6b735b21a07f2 Mon Sep 17 00:00:00 2001 From: ayabusa Date: Mon, 22 Sep 2025 15:22:00 +0200 Subject: [PATCH] added neko states, I will need to add animations --- build.sh | 2 +- res/main | Bin 22784 -> 27064 bytes src/main.c | 2 +- src/neko.c | 77 ++++++++++++++++++++++++++++++++++++++++++++--------- src/neko.h | 3 ++- 5 files changed, 69 insertions(+), 15 deletions(-) diff --git a/build.sh b/build.sh index c04770f..ee0dd38 100755 --- a/build.sh +++ b/build.sh @@ -2,7 +2,7 @@ echo Building with ... echo gcc src/main.c -o res/main $(pkg-config --cflags --libs sdl3 x11 xfixes sdl3-image) -gcc src/main.c src/neko.c -I src/ -o res/main $(pkg-config --cflags --libs sdl3 x11 xfixes sdl3-image) +gcc src/main.c src/neko.c -I src/ -o res/main $(pkg-config --cflags --libs sdl3 x11 xfixes sdl3-image) -lm echo Running... DISPLAY=:1 ./res/main diff --git a/res/main b/res/main index e77d36189d6c65961d251b91fbbfd8c8945caa8f..059b97b768f4dba4600c74caa795342516fb702e 100755 GIT binary patch literal 27064 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 literal 22784 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 static SDL_Texture *texture = NULL; static int texture_width = 0; @@ -7,8 +8,21 @@ static int texture_height = 0; static float catx = 200; static float caty = 200; +static float speed = 5.0; -int neko_init(SDL_Renderer *renderer){ +#define TIME_BEFORE_SPLEEP 3000 +#define TIME_BEFORE_RUNNING 1000 + +enum CatState { + SLEEPING, + RUNNING, + WAKING_UP, + STAND_BY, +} cat_state = RUNNING; + +static int state_timer; + +int neko_init(SDL_Renderer *renderer, SDL_Window *window){ SDL_Surface *surface = NULL; char *neko_bmp_path = NULL; @@ -38,22 +52,14 @@ int neko_init(SDL_Renderer *renderer){ SDL_DestroySurface(surface); /* done with this, the texture has a copy of the pixels now. */ + SDL_AddTimer(50, move_cat, window); } void neko_render(SDL_Renderer *renderer, SDL_Window *window){ - float mousex, mousey; - int windowx, windowy; - float diffx, diffy; SDL_FRect dst_rect; - SDL_GetGlobalMouseState(&mousex, &mousey); - SDL_GetWindowPosition(window, &windowx, &windowy); - diffx = catx-(mousex-(float)windowx); - diffy = caty-(mousey-(float)windowy); - SDL_Log("(%f, %f)", diffx, diffy); - - dst_rect.x = catx+(diffx/diffy); - dst_rect.y = caty+(diffy/diffx); + dst_rect.x = catx; + dst_rect.y = caty; dst_rect.h = WINDOW_HEIGHT/10; dst_rect.w = WINDOW_HEIGHT/10; SDL_RenderTexture(renderer, texture, NULL, &dst_rect); @@ -61,4 +67,51 @@ void neko_render(SDL_Renderer *renderer, SDL_Window *window){ void neko_quit(){ SDL_DestroyTexture(texture); +} + +Uint32 move_cat(void *window, SDL_TimerID timerID, Uint32 interval){ + float mousex, mousey; + float diffx, diffy, hypo; + int windowx, windowy; + + SDL_GetGlobalMouseState(&mousex, &mousey); + SDL_GetWindowPosition(window, &windowx, &windowy); + + diffx = catx-(mousex-(float)windowx); + diffy = caty-(mousey-(float)windowy); + hypo = sqrt(diffx*diffx + diffy*diffy); + switch (cat_state) + { + case RUNNING: + if (hypo>50){ + catx -= (diffx*speed/hypo); + caty -= (diffy*speed/hypo); + }else{ + cat_state = STAND_BY; + state_timer = SDL_GetTicks(); + } + break; + case STAND_BY: + if (hypo>50){ + cat_state = RUNNING; + }else if (SDL_GetTicks()-TIME_BEFORE_SPLEEP > state_timer){ + cat_state = SLEEPING; + } + break; + case SLEEPING: + if (hypo>50){ + cat_state = WAKING_UP; + state_timer = SDL_GetTicks(); + } + break; + case WAKING_UP: + if (SDL_GetTicks()-TIME_BEFORE_RUNNING > state_timer){ + cat_state = RUNNING; + } + break; + + default: + break; + } + return(interval); } \ No newline at end of file diff --git a/src/neko.h b/src/neko.h index 0a6e976..ea9768b 100644 --- a/src/neko.h +++ b/src/neko.h @@ -7,8 +7,9 @@ #include -int neko_init(SDL_Renderer *renderer); +int neko_init(SDL_Renderer *renderer, SDL_Window *window); void neko_render(SDL_Renderer *renderer, SDL_Window *window); void neko_quit(); +Uint32 move_cat(void *window, SDL_TimerID timerID, Uint32 interval); #endif \ No newline at end of file