Skip to content

Commit

Permalink
Various improvements.
Browse files Browse the repository at this point in the history
  • Loading branch information
gabordemooij committed Sep 20, 2024
1 parent 4530c90 commit dda3f19
Show file tree
Hide file tree
Showing 18 changed files with 53 additions and 27 deletions.
6 changes: 3 additions & 3 deletions i18n/en/dictionary.h
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@
#define CTR_DICT_MYSELF "myself"
#define CTR_DICT_DO "do"
#define CTR_DICT_DONE "done"
#define CTR_DICT_IFFALSE "no:"
#define CTR_DICT_IFTRUE "yes:"
#define CTR_DICT_IFFALSE "false:"
#define CTR_DICT_IFTRUE "true:"
#define CTR_DICT_WHILE "while:"
#define CTR_DICT_MESSAGEARGS "message:arguments:"
#define CTR_DICT_MESSAGE "message:"
#define CTR_DICT_LEARN "learn:means:"
#define CTR_DICT_BREAK "abort"
#define CTR_DICT_BREAK "break"
#define CTR_DICT_CONTINUE "continue"
#define CTR_DICT_ELSE "else:"
#define CTR_DICT_NOT "not"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/cs/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "duch:"
#define CTR_DICT_STATIC "statický:"
#define CTR_DICT_NODIRANI_SET "imobilní:"
#define CTR_DICT_STOP_AT_SET "destinace:"
#define CTR_DICT_STOP_AT_SET "destinace"
#define CTR_DICT_AUDIO_PLAY "přehrávání"
#define CTR_DICT_AUDIO_SILENCE "ticho"
#define CTR_DICT_AUDIO_REWIND "přetočit"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/de/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "geist:"
#define CTR_DICT_STATIC "statisch:"
#define CTR_DICT_NODIRANI_SET "fixieren:"
#define CTR_DICT_STOP_AT_SET "ziel:"
#define CTR_DICT_STOP_AT_SET "ziel"
#define CTR_DICT_AUDIO_PLAY "abspielen"
#define CTR_DICT_AUDIO_SILENCE "stille"
#define CTR_DICT_AUDIO_REWIND "zurückspulen"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/en/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "ghost:"
#define CTR_DICT_STATIC "static:"
#define CTR_DICT_NODIRANI_SET "fixate:"
#define CTR_DICT_STOP_AT_SET "destination:"
#define CTR_DICT_STOP_AT_SET "destination"
#define CTR_DICT_AUDIO_PLAY "play"
#define CTR_DICT_AUDIO_SILENCE "silence"
#define CTR_DICT_AUDIO_REWIND "rewind"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/fr/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "fantôme:"
#define CTR_DICT_STATIC "statique:"
#define CTR_DICT_NODIRANI_SET "fixé:"
#define CTR_DICT_STOP_AT_SET "destination:"
#define CTR_DICT_STOP_AT_SET "destination"
#define CTR_DICT_AUDIO_PLAY "jouer"
#define CTR_DICT_AUDIO_SILENCE "silence"
#define CTR_DICT_AUDIO_REWIND "rembobiner"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/fy/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "spoek:"
#define CTR_DICT_STATIC "statysk:"
#define CTR_DICT_NODIRANI_SET "fêstlizze:"
#define CTR_DICT_STOP_AT_SET "bestimming:"
#define CTR_DICT_STOP_AT_SET "bestimming"
#define CTR_DICT_AUDIO_PLAY "spielje"
#define CTR_DICT_AUDIO_SILENCE "stilte"
#define CTR_DICT_AUDIO_REWIND "weromspoelje"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/hi/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "घोस्ट:"
#define CTR_DICT_STATIC "स्थिर:"
#define CTR_DICT_NODIRANI_SET "जमाना:"
#define CTR_DICT_STOP_AT_SET "गंतव्य:"
#define CTR_DICT_STOP_AT_SET "गंतव्य"
#define CTR_DICT_AUDIO_PLAY "प्लेबैक"
#define CTR_DICT_AUDIO_SILENCE "मौन"
#define CTR_DICT_AUDIO_REWIND "रिवाइंड"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/id/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "hantu:"
#define CTR_DICT_STATIC "statis:"
#define CTR_DICT_NODIRANI_SET "tetapkan:"
#define CTR_DICT_STOP_AT_SET "tujuan:"
#define CTR_DICT_STOP_AT_SET "tujuan"
#define CTR_DICT_AUDIO_PLAY "mainkan"
#define CTR_DICT_AUDIO_SILENCE "diam"
#define CTR_DICT_AUDIO_REWIND "putar-balik"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/it/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "fantasma:"
#define CTR_DICT_STATIC "statico:"
#define CTR_DICT_NODIRANI_SET "fissa:"
#define CTR_DICT_STOP_AT_SET "destinazione:"
#define CTR_DICT_STOP_AT_SET "destinazione"
#define CTR_DICT_AUDIO_PLAY "riproduci"
#define CTR_DICT_AUDIO_SILENCE "silenzio"
#define CTR_DICT_AUDIO_REWIND "riavvolgi"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/nl/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "spook:"
#define CTR_DICT_STATIC "statisch:"
#define CTR_DICT_NODIRANI_SET "fixeer:"
#define CTR_DICT_STOP_AT_SET "bestemming:"
#define CTR_DICT_STOP_AT_SET "bestemming"
#define CTR_DICT_AUDIO_PLAY "afspelen"
#define CTR_DICT_AUDIO_SILENCE "stil"
#define CTR_DICT_AUDIO_REWIND "terugspoelen"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/no/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "spøkelse:"
#define CTR_DICT_STATIC "statisk:"
#define CTR_DICT_NODIRANI_SET "fikser:"
#define CTR_DICT_STOP_AT_SET "destinasjon:"
#define CTR_DICT_STOP_AT_SET "destinasjon"
#define CTR_DICT_AUDIO_PLAY "spill"
#define CTR_DICT_AUDIO_SILENCE "stillhet"
#define CTR_DICT_AUDIO_REWIND "spol-tilbake"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/pl/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "duch:"
#define CTR_DICT_STATIC "statyczny:"
#define CTR_DICT_NODIRANI_SET "ustabilizuj:"
#define CTR_DICT_STOP_AT_SET "cel:"
#define CTR_DICT_STOP_AT_SET "cel"
#define CTR_DICT_AUDIO_PLAY "graj"
#define CTR_DICT_AUDIO_SILENCE "cisza"
#define CTR_DICT_AUDIO_REWIND "przewiń"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/pt_br/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "fantasma:"
#define CTR_DICT_STATIC "estático:"
#define CTR_DICT_NODIRANI_SET "fixar:"
#define CTR_DICT_STOP_AT_SET "destino:"
#define CTR_DICT_STOP_AT_SET "destino"
#define CTR_DICT_AUDIO_PLAY "tocar"
#define CTR_DICT_AUDIO_SILENCE "silêncio"
#define CTR_DICT_AUDIO_REWIND "rebobinar"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/ru/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "призрак:"
#define CTR_DICT_STATIC "статичный:"
#define CTR_DICT_NODIRANI_SET "закрепить:"
#define CTR_DICT_STOP_AT_SET "пункт-назначения:"
#define CTR_DICT_STOP_AT_SET "пункт-назначения"
#define CTR_DICT_AUDIO_PLAY "воспроизвести"
#define CTR_DICT_AUDIO_SILENCE "тишина"
#define CTR_DICT_AUDIO_REWIND "перемотать"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/uz/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "maxluq:"
#define CTR_DICT_STATIC "statik:"
#define CTR_DICT_NODIRANI_SET "mustahkamla:"
#define CTR_DICT_STOP_AT_SET "manzil:"
#define CTR_DICT_STOP_AT_SET "manzil"
#define CTR_DICT_AUDIO_PLAY "ijro"
#define CTR_DICT_AUDIO_SILENCE "sukunat"
#define CTR_DICT_AUDIO_REWIND "orqaga-o‘rash"
Expand Down
2 changes: 1 addition & 1 deletion plugins/media/i18n/zh2/media.h
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
#define CTR_DICT_GHOST_SET "幽灵:"
#define CTR_DICT_STATIC "静态:"
#define CTR_DICT_NODIRANI_SET "固定:"
#define CTR_DICT_STOP_AT_SET "目的地:"
#define CTR_DICT_STOP_AT_SET "目的地"
#define CTR_DICT_AUDIO_PLAY "播放"
#define CTR_DICT_AUDIO_SILENCE "静音"
#define CTR_DICT_AUDIO_REWIND "倒带"
Expand Down
43 changes: 34 additions & 9 deletions plugins/media/media.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,6 @@ int CtrMediaPrevClickY = 0;
int CtrMediaPrevClickTime = 0;
char CtrMediaDoubleClick = 0;
ctr_size CtrMediaAutoReplaceRuleLen = 0;
int CtrMediaLastFrameOffsetX = 0;
int CtrMediaJumpHeightFactor = 100;
int CtrMediaControlMode = 0;
int CtrMediaRotation = 0;
Expand Down Expand Up @@ -102,6 +101,7 @@ struct MediaIMG {
double gravity; double gspeed;
double fric; double accel;
double speed; double dir;
double lastdir;
double mov; int anims;
int animspeed;
int solid; int collidable;
Expand Down Expand Up @@ -240,7 +240,6 @@ void ctr_internal_media_reset() {
CtrMediaPrevClickTime = 0;
CtrMediaDoubleClick = 0;
CtrMediaAutoReplaceRuleLen = 0;
CtrMediaLastFrameOffsetX = 0;
CtrMediaJumpHeightFactor = 100;
CtrMediaControlMode = 0;
CtrMediaRotation = 0;
Expand Down Expand Up @@ -1007,12 +1006,17 @@ void ctr_internal_media_render_image(MediaIMG* m, SDL_Rect r, SDL_Rect s, MediaI
if (m->gravity < 1) {
/* drifting/hovering (space ship, fish) - in this case going up/down you don't want to change direction */
if (m->dir == 180 || m->dir == 0) {
CtrMediaLastFrameOffsetX = m->dir;
m->lastdir = m->dir;
}
if (CtrMediaLastFrameOffsetX && m->dir != 180 && m->dir != 0) {
xdir = CtrMediaLastFrameOffsetX;
if (m->lastdir != -1 && m->dir != 180 && m->dir != 0) {
xdir = m->lastdir;
}
if (m == player) {
SDL_RenderCopyEx(CtrMediaRenderer, m->texture, &s, &r, 0, NULL, ( xdir == 180 ) ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
} else {
// for other objects no clear left/right (because user fills in custom x/y)
SDL_RenderCopyEx(CtrMediaRenderer, m->texture, &s, &r, 0, NULL, ( xdir >= 90 && xdir <= 270 ) ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
}
SDL_RenderCopyEx(CtrMediaRenderer, m->texture, &s, &r, 0, NULL, ( xdir == 180 ) ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
} else {
/* platform game style (Mario/Sonic/Giana-style) - in this case adjust direction of image based on 360 degrees (for ease of use) */
SDL_RenderCopyEx(CtrMediaRenderer, m->texture, &s, &r, 0, NULL, ( xdir >= 180 && xdir <= 270 ) ? SDL_FLIP_HORIZONTAL : SDL_FLIP_NONE);
Expand All @@ -1035,7 +1039,6 @@ void ctr_internal_media_render_image(MediaIMG* m, SDL_Rect r, SDL_Rect s, MediaI

void ctr_internal_media_image_calculate_motion(MediaIMG* m) {
MediaIMG* player;
ctr_argument* a;
// keep a constant physics speed by calculating the timediff
double delta_in_seconds = ((CtrMediaTicks2 - CtrMediaTicks1) / 1000.0f );
double dt = 60 * delta_in_seconds;
Expand Down Expand Up @@ -1073,7 +1076,8 @@ void ctr_internal_media_image_calculate_motion(MediaIMG* m) {
m->y -= dt * m->mov * sin(m->dir * M_PI / 180);
// an image reaches its destination if the destination falls between
// this step and the previous one (i.e. tx is between ox and x and ty
// between oy and ty).
// between oy and ty). Note that gravity etc. might interfere with this,
// because it adjust ox/oy. @todo maybe tweak this? (but keep backward compat.)
if (
// is X reached?
((round(m->tx) >= round(m->ox) && round(m->tx) <= round(m->x))
Expand All @@ -1084,8 +1088,8 @@ void ctr_internal_media_image_calculate_motion(MediaIMG* m) {
|| (round(m->ty) <= round(m->oy) && round(m->ty) >= round(m->y)))
) {
m->dir = -1;
ctr_argument* a;
a = (ctr_argument*) ctr_heap_allocate( sizeof( ctr_argument ) );
a->object = m->ref;
ctr_send_message(m->ref, CTR_DICT_STOP_AT_SET, strlen(CTR_DICT_STOP_AT_SET), a );
ctr_heap_free(a);
}
Expand Down Expand Up @@ -2187,6 +2191,7 @@ ctr_object* ctr_img_new(ctr_object* myself, ctr_argument* argumentList) {
mediaImage->accel = 1;
mediaImage->gspeed = 0;
mediaImage->dir = -1;
mediaImage->lastdir = mediaImage->dir;
mediaImage->mov = 0;
mediaImage->visible = 1;
mediaImage->anims = 1;
Expand Down Expand Up @@ -4119,6 +4124,25 @@ ctr_object* ctr_media_dialog(ctr_object* myself, ctr_argument* argumentList) {
return CtrStdNil;
}

/**
* @def
* [ Media ] website: [ Text ]
*
* @example
* Media website: ['https://www.citrine-lang.org'].
*
* @result
* www.citrine-lang.org
*/
ctr_object* ctr_media_website(ctr_object* myself, ctr_argument* argumentList) {
char* url = ctr_heap_allocate_cstring(
ctr_internal_cast2string(argumentList->object)
);
SDL_OpenURL(url);
ctr_heap_free(url);
return myself;
}

void begin(){
ctr_gc_clean_free = 1; // only for debugging
#ifdef WIN
Expand Down Expand Up @@ -4180,6 +4204,7 @@ void begin(){
ctr_internal_create_func(mediaObject, ctr_build_string_from_cstring( "use:" ), &ctr_media_include );
ctr_internal_create_func(mediaObject, ctr_build_string_from_cstring( "_datastart" ), &ctr_media_datastart );
ctr_internal_create_func(mediaObject, ctr_build_string_from_cstring( CTR_DICT_DIALOG_SET ), &ctr_media_dialog );
ctr_internal_create_func(mediaObject, ctr_build_string_from_cstring( "website:" ), &ctr_media_website );
#ifdef WIN
ctr_internal_create_func(CtrStdConsole, ctr_build_string_from_cstring(CTR_DICT_WRITE), &ctr_media_console_write );
ctr_internal_create_func(CtrStdConsole, ctr_build_string_from_cstring( CTR_DICT_STOP ), &ctr_media_console_brk );
Expand Down
1 change: 1 addition & 0 deletions world.c
Original file line number Diff line number Diff line change
Expand Up @@ -866,6 +866,7 @@ void ctr_initialize_world() {
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_JOIN ), &ctr_array_join );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_POP ), &ctr_array_pop );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_POSITION_SET ), &ctr_array_get );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_AT ), &ctr_array_get );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_AT_SYMBOL ), &ctr_array_get );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_SORT ), &ctr_array_sort );
ctr_internal_create_func(CtrStdArray, ctr_build_string_from_cstring( CTR_DICT_PUT_AT ), &ctr_array_put );
Expand Down

0 comments on commit dda3f19

Please sign in to comment.