X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Ftools.c;h=42e8225425cc96dc7d70c1f410a016e22ed233c5;hb=d45b35552f4ca1ada1266fb7e8b6968d878019a6;hp=18c5ca28f8c439934f25542eabae836d2ae96b7b;hpb=e742774a369161df5592ec2d7c553ea6d1143de3;p=rocksndiamonds.git diff --git a/src/tools.c b/src/tools.c index 18c5ca28..42e82254 100644 --- a/src/tools.c +++ b/src/tools.c @@ -5900,6 +5900,52 @@ int map_direction_EM_to_RND(int direction) MV_NONE); } +int map_element_RND_to_SP(int element_rnd) +{ + int element_sp = 0x20; /* map unknown elements to yellow "hardware" */ + + if (element_rnd >= EL_SP_START && + element_rnd <= EL_SP_END) + element_sp = element_rnd - EL_SP_START; + else if (element_rnd == EL_EMPTY_SPACE) + element_sp = 0x00; + else if (element_rnd == EL_INVISIBLE_WALL) + element_sp = 0x28; + + return element_sp; +} + +int map_element_SP_to_RND(int element_sp) +{ + int element_rnd = EL_UNKNOWN; + + if (element_sp >= 0x00 && + element_sp <= 0x27) + element_rnd = EL_SP_START + element_sp; + else if (element_sp == 0x28) + element_rnd = EL_INVISIBLE_WALL; + + return element_rnd; +} + +int map_action_SP_to_RND(int action_sp) +{ + switch (action_sp) + { + case actActive: return ACTION_ACTIVE; + case actImpact: return ACTION_IMPACT; + case actExploding: return ACTION_EXPLODING; + case actDigging: return ACTION_DIGGING; + case actSnapping: return ACTION_SNAPPING; + case actCollecting: return ACTION_COLLECTING; + case actPassing: return ACTION_PASSING; + case actPushing: return ACTION_PUSHING; + case actDropping: return ACTION_DROPPING; + + default: return ACTION_DEFAULT; + } +} + int get_next_element(int element) { switch (element) @@ -7738,17 +7784,21 @@ void InitGraphicInfo_EM(void) void getGraphicSource_SP(struct GraphicInfo_SP *g_sp, int graphic, int sync_frame, int x, int y) { -#if 0 - /* currently we get the actual graphic animation frame */ - int frame = sync_frame; -#else - /* (future implementations may provide a synchronization frame instead) */ int frame = getGraphicAnimationFrame(graphic, sync_frame); -#endif getGraphicSource(graphic, frame, &g_sp->bitmap, &g_sp->src_x, &g_sp->src_y); } +boolean isNextAnimationFrame_SP(int graphic, int sync_frame) +{ + return (IS_NEXT_FRAME(sync_frame, graphic)); +} + +int getGraphicInfo_Delay(int graphic) +{ + return graphic_info[graphic].anim_delay; +} + void PlayMenuSoundExt(int sound) { if (sound == SND_UNDEFINED)