[Scummvm-git-logs] scummvm master -> 2e6cd47b68611bcefa8736c24b6aa5c4b1f00154
joostp
noreply at scummvm.org
Thu Aug 4 14:08:14 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
2e6cd47b68 ICB: ELDORADO: add some more script functions
Commit: 2e6cd47b68611bcefa8736c24b6aa5c4b1f00154
https://github.com/scummvm/scummvm/commit/2e6cd47b68611bcefa8736c24b6aa5c4b1f00154
Author: Joost Peters (joostp at 7fc1.org)
Date: 2022-08-04T16:07:27+02:00
Commit Message:
ICB: ELDORADO: add some more script functions
Changed paths:
engines/icb/function.cpp
engines/icb/session.h
diff --git a/engines/icb/function.cpp b/engines/icb/function.cpp
index 9f01caec292..471a6ed3dee 100644
--- a/engines/icb/function.cpp
+++ b/engines/icb/function.cpp
@@ -42,6 +42,7 @@
#include "engines/icb/direct_input.h"
#include "engines/icb/actor.h"
#include "engines/icb/remora.h"
+#include "engines/icb/res_man.h"
#include "common/keyboard.h"
@@ -301,6 +302,24 @@ mcodeFunctionReturnCodes fn_set_manual_interact_object(int32 &result, int32 *par
mcodeFunctionReturnCodes fn_cancel_manual_interact_object(int32 &result, int32 *params) { return (MS->fn_cancel_manual_interact_object(result, params)); }
+mcodeFunctionReturnCodes fn_display_objects_lvar(int32 &result, int32 *params) { return (MS->fn_display_objects_lvar(result, params)); }
+
+mcodeFunctionReturnCodes fn_set_override_pose(int32 &result, int32 *params) { return (MS->fn_set_override_pose(result, params)); }
+
+mcodeFunctionReturnCodes fn_cancel_override_pose(int32 &result, int32 *params) { return (MS->fn_cancel_override_pose(result, params)); }
+
+mcodeFunctionReturnCodes fn_preload_actor_file(int32 &result, int32 *params) { return (MS->fn_preload_actor_file(result, params)); }
+
+mcodeFunctionReturnCodes fn_preload_mesh(int32 &result, int32 *params) { return (MS->fn_preload_mesh(result, params)); }
+
+mcodeFunctionReturnCodes fn_hard_load_mesh(int32 &result, int32 *params) { return (MS->fn_hard_load_mesh(result, params)); }
+
+mcodeFunctionReturnCodes fn_preload_texture(int32 &result, int32 *params) { return (MS->fn_preload_texture(result, params)); }
+
+mcodeFunctionReturnCodes fn_preload_palette(int32 &result, int32 *params) { return (MS->fn_preload_palette(result, params)); }
+
+mcodeFunctionReturnCodes fn_preload_animation(int32 &result, int32 *params) { return (MS->fn_preload_animation(result, params)); }
+
mcodeFunctionReturnCodes fn_PLEASE_REUSE_THIS_SLOT_2(int32 &, int32 *) { return IR_CONT; }
mcodeFunctionReturnCodes fn_PLEASE_REUSE_THIS_SLOT_3(int32 &, int32 *) { return IR_CONT; }
@@ -315,6 +334,8 @@ mcodeFunctionReturnCodes fn_inventory_active(int32 &result, int32 *params) { ret
mcodeFunctionReturnCodes fn_can_save(int32 &result, int32 *params) { return (MS->fn_can_save(result, params)); }
+mcodeFunctionReturnCodes fn_shadow(int32 &result, int32 *params) { return (MS->fn_shadow(result, params)); }
+
mcodeFunctionReturnCodes fn_is_actor_relative(int32 &result, int32 *params) { return (MS->fn_is_actor_relative(result, params)); }
mcodeFunctionReturnCodes _game_session::fn_set_as_player(int32 &, int32 *) { return (IR_CONT); }
@@ -1502,6 +1523,24 @@ mcodeFunctionReturnCodes _game_session::fn_set_mesh(int32 &, int32 *params) {
return (IR_CONT);
}
+mcodeFunctionReturnCodes _game_session::fn_set_override_pose(int32 &, int32 *params) {
+ // fn_set_override_pose(text)
+
+ const char *pose = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ L->voxel_info->Set_override_pose(pose);
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_cancel_override_pose(int32 &, int32 *) {
+ // fn_cancel_override_pose(text)
+
+ L->voxel_info->Cancel_override_pose();
+
+ return IR_CONT;
+}
+
extern _player_stat player_stat_table[__TOTAL_WEAPONS];
mcodeFunctionReturnCodes _game_session::fn_set_player_pose(int32 &, int32 *params) {
@@ -2307,6 +2346,13 @@ mcodeFunctionReturnCodes _game_session::fn_get_list_result(int32 &result, int32
return (IR_CONT);
}
+mcodeFunctionReturnCodes _game_session::fn_display_objects_lvar(int32 &, int32 *params) {
+ //draw specified objects specified lvar on the screen - for script debugging
+
+ warning("fn_display_objects_lvar() not implemented");
+ return IR_CONT;
+}
+
mcodeFunctionReturnCodes _game_session::fn_hold_while_list_near_nico(int32 &result, int32 *params) {
// function holds the script position while a mega from the list of megas registers as being near the named nico
@@ -3161,12 +3207,21 @@ mcodeFunctionReturnCodes _game_session::fn_shadows_on(int32 &, int32 *) {
}
mcodeFunctionReturnCodes _game_session::fn_shadows_off(int32 &, int32 *) {
- // shadows back on
+ // shadows off
if (logic_structs[cur_id]->image_type != VOXEL)
Fatal_error("fn_shadows_off says people only!");
- M->drawShadow = FALSE8; // shadows back on
+ M->drawShadow = FALSE8; // shadows off
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_shadow(int32 &, int32 *params) {
+ if (logic_structs[cur_id]->image_type != VOXEL)
+ Fatal_error("fn_shadow says people only!");
+
+ M->drawShadow = (uint8)params[0];
return IR_CONT;
}
@@ -3402,6 +3457,100 @@ mcodeFunctionReturnCodes _game_session::fn_cancel_manual_interact_object(int32 &
}
+mcodeFunctionReturnCodes _game_session::fn_preload_actor_file(int32 &, int32 *params ) {
+ const char *filename = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ if (L->voxel_info->Preload_file(filename) == 0)
+ return IR_REPEAT;
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_hard_load_mesh(int32 &, int32 *params) {
+ const char *base_name = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ char mesh[32];
+ strcpy(mesh, base_name);
+ strcat(mesh, ".rap");
+
+ uint32 fileHash = NULL_HASH;
+ rs_anims->Res_open(mesh, fileHash, L->voxel_info->base_path, L->voxel_info->base_path_hash);
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_preload_mesh(int32 &, int32 *params) {
+ const char *base_name = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ char filename[32];
+ strcpy(filename, base_name);
+ strcat(filename, ".rap");
+
+ if (L->voxel_info->Preload_file(filename) == 0)
+ return IR_REPEAT;
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_preload_texture(int32 &, int32 *params) {
+ const char *base_name = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ char filename[32];
+ strcpy(filename, base_name);
+ strcat(filename, ".revtex");
+
+ if (L->voxel_info->Preload_file(filename) == 0)
+ return IR_REPEAT;
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_preload_palette(int32 &, int32 *params) {
+ const char *base_name = (const char *)MemoryUtil::resolvePtr(params[0]);
+
+ char filename[32];
+ strcpy(filename, base_name);
+ strcat(filename, ".revtex");
+
+ if (L->voxel_info->Preload_file(filename) == 0)
+ return IR_REPEAT;
+
+ return IR_CONT;
+}
+
+mcodeFunctionReturnCodes _game_session::fn_preload_animation(int32 ¶m1, int32 *params) {
+ const char *set_name = (const char *)MemoryUtil::resolvePtr(params[0]);
+ const char *anim_name = (const char *)MemoryUtil::resolvePtr(params[1]);
+
+ char stub[128];
+ char file[128];
+
+ // The set name
+ strcpy(stub, set_name);
+
+ // The actual animation name
+ strcat(stub, "\\");
+ strcat(stub, anim_name);
+
+ // Preload the marker file into memory
+ strcpy(file, stub);
+ strcat(file, ".raj");
+
+ if (L->voxel_info->Preload_file(file) == 0) {
+ return IR_REPEAT;
+ }
+
+ // Preload the animation file into memory
+ strcpy(file, stub);
+ strcat(file, ".rab");
+
+ if (L->voxel_info->Preload_file(file) == 0) {
+ return IR_REPEAT;
+ }
+
+ return IR_CONT;
+}
+
mcodeFunctionReturnCodes _game_session::fn_set_to_floor(int32 &, int32 *params) {
// locate a character onto a specified floor
// crudely sticks the character in the middle of the first floor LRECT
diff --git a/engines/icb/session.h b/engines/icb/session.h
index 63e5df1d324..0c5c782ad8f 100644
--- a/engines/icb/session.h
+++ b/engines/icb/session.h
@@ -671,15 +671,26 @@ public:
mcodeFunctionReturnCodes fn_face_camera(int32 &, int32 *);
mcodeFunctionReturnCodes fn_set_interact_distance(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_display_objects_lvar(int32 &, int32 *);
mcodeFunctionReturnCodes fn_activate_sparkle(int32 &, int32 *);
mcodeFunctionReturnCodes fn_deactivate_sparkle(int32 &, int32 *);
mcodeFunctionReturnCodes fn_is_player_standing_still(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_set_override_pose(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_cancel_override_pose(int32 &, int32 *);
+
+ mcodeFunctionReturnCodes fn_preload_actor_file(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_preload_mesh(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_preload_texture(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_preload_palette(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_preload_animation(int32 &, int32 *);
mcodeFunctionReturnCodes fn_inventory_active(int32 &, int32 *);
mcodeFunctionReturnCodes fn_radial_interact(int32 &, int32 *);
mcodeFunctionReturnCodes fn_shutdown_inventory(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_hard_load_mesh(int32 &, int32 *);
mcodeFunctionReturnCodes fn_set_mega_height(int32 &, int32 *);
+ mcodeFunctionReturnCodes fn_shadow(int32 &, int32 *);
mcodeFunctionReturnCodes fn_is_actor_relative(int32 &, int32 *);
mcodeFunctionReturnCodes fn_can_save(int32 &, int32 *);
More information about the Scummvm-git-logs
mailing list