1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-06 07:56:32 +00:00

Decompile some more of z_player_lib (#137)

* Progress on z_player_lib, Named fields in Player struct

* More functions decompiled

* Matched another function

* A few more functions

* Ran formatter

* Rename some variables and add comments where appropriate, change types of unknowns

* Create PlayerActionFunc type

* Fix uncaught syntax error and issues from effects merge

* Rename invincible to invincibilityTimer, refactor long comments in Player struct

* Properly rename all occurences of invincibilityTimer
This commit is contained in:
Tharo 2020-05-20 01:15:48 +01:00 committed by GitHub
parent b8b334f90a
commit 5df0e9b6f8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
13 changed files with 567 additions and 67 deletions

View file

@ -1521,13 +1521,13 @@ s32 func_8002F1C4(Actor* actor, GlobalContext* globalCtx, f32 arg2, f32 arg3, u3
// This is convoluted but it seems like it must be a single if statement to match
if ((player->actor.flags & 0x100) || ((arg4 != 0) && func_8008E988(globalCtx)) ||
((actor->unk_10C == 0) &&
((arg3 < fabsf(actor->yDistanceFromLink)) || (player->unk_698 < actor->xzDistanceFromLink) ||
((arg3 < fabsf(actor->yDistanceFromLink)) || (player->targetActorDistance < actor->xzDistanceFromLink) ||
(arg2 < actor->xzDistanceFromLink)))) {
return 0;
}
player->unk_694 = actor;
player->unk_698 = actor->xzDistanceFromLink;
player->naviTargetActor = actor;
player->targetActorDistance = actor->xzDistanceFromLink;
player->exchangeItemId = arg4;
return 1;
@ -1582,7 +1582,8 @@ s32 func_8002F434(Actor* actor, GlobalContext* globalCtx, s32 getItemId, f32 xzR
s32 abs_var;
if (!(player->stateFlags1 & 0x3C7080) && func_8008F29C(player) < 0) {
if ((((player->heldActor != NULL) || (actor == player->unk_694)) && (getItemId > 0) && (getItemId < 0x7E)) ||
if ((((player->heldActor != NULL) || (actor == player->naviTargetActor)) && (getItemId > 0) &&
(getItemId < 0x7E)) ||
(!(player->stateFlags1 & 0x20000800))) {
if ((actor->xzDistanceFromLink < xzRange) && (fabsf(actor->yDistanceFromLink) < yRange)) {
var = actor->rotTowardsLinkY - player->actor.shape.rot.y;
@ -2072,7 +2073,7 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
}
if ((player->stateFlags1 & 0x40) && ((player->actor.textId & 0xFF00) != 0x600)) {
sp74 = player->unk_694;
sp74 = player->naviTargetActor;
}
for (i = 0; i < ARRAY_COUNT(actorCtx->actorList); i++, sp80++) {
@ -2097,7 +2098,7 @@ void Actor_UpdateAll(GlobalContext* globalCtx, ActorContext* actorCtx) {
Actor_Kill(actor);
actor = actor->next;
} else if ((unkFlag && !(actor->flags & unkFlag)) ||
(!unkFlag && unkCondition && (sp74 != actor) && (actor != player->unk_68C) &&
(!unkFlag && unkCondition && (sp74 != actor) && (actor != player->navi) &&
(actor != player->heldActor) && (&player->actor != actor->attachedA))) {
func_80061E8C(&actor->colChkInfo);
actor = actor->next;