mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-22 03:55:11 +00:00
Expose first_person_check_cancels() to Lua
This commit is contained in:
parent
632d8de0b2
commit
471a6c8c05
6 changed files with 55 additions and 11 deletions
|
@ -4000,6 +4000,12 @@ function stop_sounds_in_continuous_banks()
|
|||
-- ...
|
||||
end
|
||||
|
||||
--- @param m MarioState
|
||||
--- @return boolean
|
||||
function first_person_check_cancels(m)
|
||||
-- ...
|
||||
end
|
||||
|
||||
--- @return nil
|
||||
function first_person_reset()
|
||||
-- ...
|
||||
|
|
|
@ -3266,6 +3266,26 @@
|
|||
<br />
|
||||
|
||||
|
||||
## [first_person_check_cancels](#first_person_check_cancels)
|
||||
|
||||
### Lua Example
|
||||
`local booleanValue = first_person_check_cancels(m)`
|
||||
|
||||
### Parameters
|
||||
| Field | Type |
|
||||
| ----- | ---- |
|
||||
| m | [MarioState](structs.md#MarioState) |
|
||||
|
||||
### Returns
|
||||
- `boolean`
|
||||
|
||||
### C Prototype
|
||||
`bool first_person_check_cancels(struct MarioState *m);`
|
||||
|
||||
[:arrow_up_small:](#)
|
||||
|
||||
<br />
|
||||
|
||||
## [first_person_reset](#first_person_reset)
|
||||
|
||||
### Lua Example
|
||||
|
|
|
@ -800,6 +800,7 @@
|
|||
<br />
|
||||
|
||||
- first_person_cam.h
|
||||
- [first_person_check_cancels](functions-3.md#first_person_check_cancels)
|
||||
- [first_person_reset](functions-3.md#first_person_reset)
|
||||
- [get_first_person_enabled](functions-3.md#get_first_person_enabled)
|
||||
- [set_first_person_enabled](functions-3.md#set_first_person_enabled)
|
||||
|
|
|
@ -30,9 +30,7 @@ struct FirstPersonCamera gFirstPersonCamera = {
|
|||
|
||||
extern s16 gMenuMode;
|
||||
|
||||
bool first_person_check_cancels(void) {
|
||||
struct MarioState *m = &gMarioStates[0];
|
||||
|
||||
bool first_person_check_cancels(struct MarioState *m) {
|
||||
if (m->action == ACT_FIRST_PERSON || m->action == ACT_IN_CANNON || m->action == ACT_READING_NPC_DIALOG || m->action == ACT_DISAPPEARED) {
|
||||
return true;
|
||||
}
|
||||
|
@ -48,7 +46,7 @@ bool first_person_check_cancels(void) {
|
|||
}
|
||||
|
||||
bool get_first_person_enabled(void) {
|
||||
return gFirstPersonCamera.enabled && !first_person_check_cancels();
|
||||
return gFirstPersonCamera.enabled && !first_person_check_cancels(&gMarioStates[0]);
|
||||
}
|
||||
|
||||
void set_first_person_enabled(bool enable) {
|
||||
|
@ -144,12 +142,12 @@ void first_person_camera_update(void) {
|
|||
|
||||
void first_person_update(void) {
|
||||
if (gFirstPersonCamera.enabled && !gDjuiInMainMenu) {
|
||||
// check cancels
|
||||
bool cancel = first_person_check_cancels();
|
||||
if (cancel) { return; }
|
||||
|
||||
struct MarioState *m = &gMarioStates[0];
|
||||
|
||||
// check cancels
|
||||
bool cancel = first_person_check_cancels(m);
|
||||
if (cancel) { return; }
|
||||
|
||||
if (m->action == ACT_SHOT_FROM_CANNON && m->area->camera->mode == CAMERA_MODE_INSIDE_CANNON) {
|
||||
gFirstPersonCamera.yaw = m->faceAngle[1] + 0x8000;
|
||||
m->area->camera->mode = CAMERA_MODE_FREE_ROAM;
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#ifndef FIRST_PERSON_CAM_H
|
||||
#define FIRST_PERSON_CAM_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <PR/ultratypes.h>
|
||||
#include "types.h"
|
||||
|
||||
#define FIRST_PERSON_DEFAULT_FOV 70
|
||||
|
||||
|
@ -16,10 +15,12 @@ struct FirstPersonCamera {
|
|||
|
||||
extern struct FirstPersonCamera gFirstPersonCamera;
|
||||
|
||||
bool first_person_check_cancels(struct MarioState *m);
|
||||
|
||||
bool get_first_person_enabled(void);
|
||||
void set_first_person_enabled(bool enable);
|
||||
|
||||
void first_person_update(void);
|
||||
void first_person_reset(void);
|
||||
|
||||
#endif
|
||||
#endif // FIRST_PERSON_CAM_H
|
|
@ -13184,6 +13184,23 @@ int smlua_func_stop_sounds_in_continuous_banks(UNUSED lua_State* L) {
|
|||
// first_person_cam.h //
|
||||
////////////////////////
|
||||
|
||||
int smlua_func_first_person_check_cancels(lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
int top = lua_gettop(L);
|
||||
if (top != 1) {
|
||||
LOG_LUA_LINE("Improper param count for '%s': Expected %u, Received %u", "first_person_check_cancels", 1, top);
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct MarioState* m = (struct MarioState*)smlua_to_cobject(L, 1, LOT_MARIOSTATE);
|
||||
if (!gSmLuaConvertSuccess) { LOG_LUA("Failed to convert parameter %u for function '%s'", 1, "first_person_check_cancels"); return 0; }
|
||||
|
||||
lua_pushboolean(L, first_person_check_cancels(m));
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int smlua_func_first_person_reset(UNUSED lua_State* L) {
|
||||
if (L == NULL) { return 0; }
|
||||
|
||||
|
@ -32039,6 +32056,7 @@ void smlua_bind_functions_autogen(void) {
|
|||
smlua_bind_function(L, "stop_sounds_in_continuous_banks", smlua_func_stop_sounds_in_continuous_banks);
|
||||
|
||||
// first_person_cam.h
|
||||
smlua_bind_function(L, "first_person_check_cancels", smlua_func_first_person_check_cancels);
|
||||
smlua_bind_function(L, "first_person_reset", smlua_func_first_person_reset);
|
||||
smlua_bind_function(L, "get_first_person_enabled", smlua_func_get_first_person_enabled);
|
||||
smlua_bind_function(L, "set_first_person_enabled", smlua_func_set_first_person_enabled);
|
||||
|
|
Loading…
Reference in a new issue