parent
5bd0e3c505
commit
8e4299d728
171
src/animation.cc
171
src/animation.cc
|
@ -1,5 +1,6 @@
|
||||||
#include "animation.h"
|
#include "animation.h"
|
||||||
|
|
||||||
|
#include "art.h"
|
||||||
#include "color.h"
|
#include "color.h"
|
||||||
#include "combat.h"
|
#include "combat.h"
|
||||||
#include "combat_ai.h"
|
#include "combat_ai.h"
|
||||||
|
@ -29,50 +30,144 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#define ANIMATION_SEQUENCE_LIST_CAPACITY (32)
|
||||||
|
#define ANIMATION_DESCRIPTION_LIST_CAPACITY (55)
|
||||||
|
|
||||||
|
typedef struct AnimationDescription {
|
||||||
|
int type;
|
||||||
|
Object* owner;
|
||||||
|
union {
|
||||||
|
Object* destinationObj;
|
||||||
|
Sound* sound;
|
||||||
|
};
|
||||||
|
union {
|
||||||
|
int tile;
|
||||||
|
int fid; // for type == 17
|
||||||
|
int weaponAnimationCode; // for type == 18
|
||||||
|
int lightDistance; // for type == 19
|
||||||
|
};
|
||||||
|
int elevation;
|
||||||
|
int anim; // anim
|
||||||
|
int delay; // delay
|
||||||
|
union {
|
||||||
|
AnimationProc* proc;
|
||||||
|
AnimationSoundProc* soundProc;
|
||||||
|
};
|
||||||
|
AnimationProc2* field_20; // func
|
||||||
|
int field_24;
|
||||||
|
union {
|
||||||
|
int field_28; // actionPoints
|
||||||
|
Object* field_28_obj; // obj in type == 12
|
||||||
|
void* field_28_void;
|
||||||
|
};
|
||||||
|
CacheEntry* field_2C;
|
||||||
|
} AnimationDescription;
|
||||||
|
|
||||||
|
typedef struct AnimationSequence {
|
||||||
|
int field_0;
|
||||||
|
// Index of current animation in [animations] array or -1 if animations in
|
||||||
|
// this sequence is not playing.
|
||||||
|
int animationIndex;
|
||||||
|
// Number of scheduled animations in [animations] array.
|
||||||
|
int length;
|
||||||
|
int flags;
|
||||||
|
AnimationDescription animations[ANIMATION_DESCRIPTION_LIST_CAPACITY];
|
||||||
|
} AnimationSequence;
|
||||||
|
|
||||||
|
typedef struct PathNode {
|
||||||
|
int tile;
|
||||||
|
int from;
|
||||||
|
// actual type is likely char
|
||||||
|
int rotation;
|
||||||
|
int field_C;
|
||||||
|
int field_10;
|
||||||
|
} PathNode;
|
||||||
|
|
||||||
|
typedef struct STRUCT_530014 {
|
||||||
|
int flags; // flags
|
||||||
|
Object* obj;
|
||||||
|
int fid; // fid
|
||||||
|
int field_C;
|
||||||
|
int field_10;
|
||||||
|
int field_14; // animation speed?
|
||||||
|
int animationSequenceIndex;
|
||||||
|
int field_1C; // length of field_28
|
||||||
|
int field_20; // current index in field_28
|
||||||
|
int field_24;
|
||||||
|
union {
|
||||||
|
unsigned char rotations[3200];
|
||||||
|
STRUCT_530014_28 field_28[200];
|
||||||
|
};
|
||||||
|
} STRUCT_530014;
|
||||||
|
|
||||||
|
static int _anim_free_slot(int a1);
|
||||||
|
static void _anim_cleanup();
|
||||||
|
static int _check_registry(Object* obj);
|
||||||
|
static int animationRunSequence(int a1);
|
||||||
|
static int _anim_set_continue(int a1, int a2);
|
||||||
|
static int _anim_set_end(int a1);
|
||||||
|
static bool canUseDoor(Object* critter, Object* door);
|
||||||
|
static int _idist(int a1, int a2, int a3, int a4);
|
||||||
|
static int _tile_idistance(int tile1, int tile2);
|
||||||
|
static int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int animationSequenceIndex);
|
||||||
|
static int animateMoveObjectToTile(Object* obj, int tile_num, int elev, int a4, int anim, int animationSequenceIndex);
|
||||||
|
static int _anim_move(Object* obj, int tile, int elev, int a3, int anim, int a5, int animationSequenceIndex);
|
||||||
|
static int _anim_move_straight_to_tile(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex, int flags);
|
||||||
|
static int _anim_move_on_stairs(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex);
|
||||||
|
static int _check_for_falling(Object* obj, int anim, int a3);
|
||||||
|
static void _object_move(int index);
|
||||||
|
static void _object_straight_move(int index);
|
||||||
|
static int _anim_animate(Object* obj, int anim, int animationSequenceIndex, int flags);
|
||||||
|
static void _object_anim_compact();
|
||||||
|
static int actionRotate(Object* obj, int delta, int animationSequenceIndex);
|
||||||
|
static int _anim_change_fid(Object* obj, int animationSequenceIndex, int fid);
|
||||||
|
static int _check_gravity(int tile, int elevation);
|
||||||
|
static unsigned int _compute_tpf(Object* object, int fid);
|
||||||
|
|
||||||
// 0x510718
|
// 0x510718
|
||||||
int _curr_sad = 0;
|
static int _curr_sad = 0;
|
||||||
|
|
||||||
// 0x51071C
|
// 0x51071C
|
||||||
int gAnimationSequenceCurrentIndex = -1;
|
static int gAnimationSequenceCurrentIndex = -1;
|
||||||
|
|
||||||
// 0x510720
|
// 0x510720
|
||||||
int _anim_in_init = 0;
|
static int _anim_in_init = 0;
|
||||||
|
|
||||||
// 0x510724
|
// 0x510724
|
||||||
bool _anim_in_anim_stop = false;
|
static bool _anim_in_anim_stop = false;
|
||||||
|
|
||||||
// 0x510728
|
// 0x510728
|
||||||
bool _anim_in_bk = false;
|
static bool _anim_in_bk = false;
|
||||||
|
|
||||||
// 0x51072C
|
// 0x51072C
|
||||||
int _lastDestination = -2;
|
static int _lastDestination = -2;
|
||||||
|
|
||||||
// 0x510730
|
// 0x510730
|
||||||
unsigned int _last_time_ = 0;
|
static unsigned int _last_time_ = 0;
|
||||||
|
|
||||||
// 0x510734
|
// 0x510734
|
||||||
unsigned int _next_time = 0;
|
static unsigned int _next_time = 0;
|
||||||
|
|
||||||
// 0x530014
|
// 0x530014
|
||||||
STRUCT_530014 _sad[24];
|
static STRUCT_530014 _sad[24];
|
||||||
|
|
||||||
// 0x542FD4
|
// 0x542FD4
|
||||||
PathNode gClosedPathNodeList[2000];
|
static PathNode gClosedPathNodeList[2000];
|
||||||
|
|
||||||
// 0x54CC14
|
// 0x54CC14
|
||||||
AnimationSequence gAnimationSequences[32];
|
static AnimationSequence gAnimationSequences[32];
|
||||||
|
|
||||||
// 0x561814
|
// 0x561814
|
||||||
unsigned char gPathfinderProcessedTiles[5000];
|
static unsigned char gPathfinderProcessedTiles[5000];
|
||||||
|
|
||||||
// 0x562B9C
|
// 0x562B9C
|
||||||
PathNode gOpenPathNodeList[2000];
|
static PathNode gOpenPathNodeList[2000];
|
||||||
|
|
||||||
// 0x56C7DC
|
// 0x56C7DC
|
||||||
int gAnimationDescriptionCurrentIndex;
|
static int gAnimationDescriptionCurrentIndex;
|
||||||
|
|
||||||
// 0x56C7E0
|
// 0x56C7E0
|
||||||
Object* dword_56C7E0[100];
|
static Object* dword_56C7E0[100];
|
||||||
|
|
||||||
// anim_init
|
// anim_init
|
||||||
// 0x413A20
|
// 0x413A20
|
||||||
|
@ -146,7 +241,7 @@ int reg_anim_begin(int flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x413B80
|
// 0x413B80
|
||||||
int _anim_free_slot(int flags)
|
static int _anim_free_slot(int flags)
|
||||||
{
|
{
|
||||||
int v1 = -1;
|
int v1 = -1;
|
||||||
int v2 = 0;
|
int v2 = 0;
|
||||||
|
@ -252,7 +347,7 @@ int reg_anim_end()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x413D98
|
// 0x413D98
|
||||||
void _anim_cleanup()
|
static void _anim_cleanup()
|
||||||
{
|
{
|
||||||
if (gAnimationSequenceCurrentIndex == -1) {
|
if (gAnimationSequenceCurrentIndex == -1) {
|
||||||
return;
|
return;
|
||||||
|
@ -278,7 +373,7 @@ void _anim_cleanup()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x413E2C
|
// 0x413E2C
|
||||||
int _check_registry(Object* obj)
|
static int _check_registry(Object* obj)
|
||||||
{
|
{
|
||||||
if (gAnimationSequenceCurrentIndex == -1) {
|
if (gAnimationSequenceCurrentIndex == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1072,7 +1167,7 @@ int reg_anim_26(int a1, int delay)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4156A8
|
// 0x4156A8
|
||||||
int animationRunSequence(int animationSequenceIndex)
|
static int animationRunSequence(int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
if (animationSequenceIndex == -1) {
|
if (animationSequenceIndex == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1266,7 +1361,7 @@ int animationRunSequence(int animationSequenceIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x415B44
|
// 0x415B44
|
||||||
int _anim_set_continue(int animationSequenceIndex, int a2)
|
static int _anim_set_continue(int animationSequenceIndex, int a2)
|
||||||
{
|
{
|
||||||
if (animationSequenceIndex == -1) {
|
if (animationSequenceIndex == -1) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1290,7 +1385,7 @@ int _anim_set_continue(int animationSequenceIndex, int a2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x415B9C
|
// 0x415B9C
|
||||||
int _anim_set_end(int animationSequenceIndex)
|
static int _anim_set_end(int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
AnimationSequence* animationSequence;
|
AnimationSequence* animationSequence;
|
||||||
AnimationDescription* animationDescription;
|
AnimationDescription* animationDescription;
|
||||||
|
@ -1394,7 +1489,7 @@ int _anim_set_end(int animationSequenceIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x415E24
|
// 0x415E24
|
||||||
bool canUseDoor(Object* critter, Object* door)
|
static bool canUseDoor(Object* critter, Object* door)
|
||||||
{
|
{
|
||||||
if (critter == gDude) {
|
if (critter == gDude) {
|
||||||
if (!_obj_portal_is_walk_thru(door)) {
|
if (!_obj_portal_is_walk_thru(door)) {
|
||||||
|
@ -1637,7 +1732,7 @@ int pathfinderFindPath(Object* object, int from, int to, unsigned char* rotation
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x41633C
|
// 0x41633C
|
||||||
int _idist(int x1, int y1, int x2, int y2)
|
static int _idist(int x1, int y1, int x2, int y2)
|
||||||
{
|
{
|
||||||
int dx = x2 - x1;
|
int dx = x2 - x1;
|
||||||
if (dx < 0) {
|
if (dx < 0) {
|
||||||
|
@ -1655,7 +1750,7 @@ int _idist(int x1, int y1, int x2, int y2)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x416360
|
// 0x416360
|
||||||
int _tile_idistance(int tile1, int tile2)
|
static int _tile_idistance(int tile1, int tile2)
|
||||||
{
|
{
|
||||||
int x1;
|
int x1;
|
||||||
int y1;
|
int y1;
|
||||||
|
@ -1864,7 +1959,7 @@ int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4167F8
|
// 0x4167F8
|
||||||
int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int animationSequenceIndex)
|
static int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
bool hidden = (to->flags & OBJECT_HIDDEN);
|
bool hidden = (to->flags & OBJECT_HIDDEN);
|
||||||
to->flags |= OBJECT_HIDDEN;
|
to->flags |= OBJECT_HIDDEN;
|
||||||
|
@ -1904,7 +1999,7 @@ int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int an
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x416CFC
|
// 0x416CFC
|
||||||
int animateMoveObjectToTile(Object* obj, int tile, int elev, int a4, int anim, int animationSequenceIndex)
|
static int animateMoveObjectToTile(Object* obj, int tile, int elev, int a4, int anim, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
STRUCT_530014* ptr;
|
STRUCT_530014* ptr;
|
||||||
int v1;
|
int v1;
|
||||||
|
@ -1932,7 +2027,7 @@ int animateMoveObjectToTile(Object* obj, int tile, int elev, int a4, int anim, i
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x416DFC
|
// 0x416DFC
|
||||||
int _anim_move(Object* obj, int tile, int elev, int a3, int anim, int a5, int animationSequenceIndex)
|
static int _anim_move(Object* obj, int tile, int elev, int a3, int anim, int a5, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
STRUCT_530014* ptr;
|
STRUCT_530014* ptr;
|
||||||
|
|
||||||
|
@ -1971,7 +2066,7 @@ int _anim_move(Object* obj, int tile, int elev, int a3, int anim, int a5, int an
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x416F54
|
// 0x416F54
|
||||||
int _anim_move_straight_to_tile(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex, int flags)
|
static int _anim_move_straight_to_tile(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex, int flags)
|
||||||
{
|
{
|
||||||
if (_curr_sad == 24) {
|
if (_curr_sad == 24) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2013,7 +2108,7 @@ int _anim_move_straight_to_tile(Object* obj, int tile, int elevation, int anim,
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x41712C
|
// 0x41712C
|
||||||
int _anim_move_on_stairs(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex)
|
static int _anim_move_on_stairs(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
STRUCT_530014* ptr;
|
STRUCT_530014* ptr;
|
||||||
|
|
||||||
|
@ -2047,7 +2142,7 @@ int _anim_move_on_stairs(Object* obj, int tile, int elevation, int anim, int ani
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x417248
|
// 0x417248
|
||||||
int _check_for_falling(Object* obj, int anim, int a3)
|
static int _check_for_falling(Object* obj, int anim, int a3)
|
||||||
{
|
{
|
||||||
STRUCT_530014* ptr;
|
STRUCT_530014* ptr;
|
||||||
|
|
||||||
|
@ -2084,7 +2179,7 @@ int _check_for_falling(Object* obj, int anim, int a3)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x417360
|
// 0x417360
|
||||||
void _object_move(int index)
|
static void _object_move(int index)
|
||||||
{
|
{
|
||||||
STRUCT_530014* p530014 = &(_sad[index]);
|
STRUCT_530014* p530014 = &(_sad[index]);
|
||||||
Object* object = p530014->obj;
|
Object* object = p530014->obj;
|
||||||
|
@ -2206,7 +2301,7 @@ void _object_move(int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4177C0
|
// 0x4177C0
|
||||||
void _object_straight_move(int index)
|
static void _object_straight_move(int index)
|
||||||
{
|
{
|
||||||
STRUCT_530014* p530014 = &(_sad[index]);
|
STRUCT_530014* p530014 = &(_sad[index]);
|
||||||
Object* object = p530014->obj;
|
Object* object = p530014->obj;
|
||||||
|
@ -2257,7 +2352,7 @@ void _object_straight_move(int index)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4179B8
|
// 0x4179B8
|
||||||
int _anim_animate(Object* obj, int anim, int animationSequenceIndex, int flags)
|
static int _anim_animate(Object* obj, int anim, int animationSequenceIndex, int flags)
|
||||||
{
|
{
|
||||||
if (_curr_sad == 24) {
|
if (_curr_sad == 24) {
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2460,7 +2555,7 @@ void _object_animate()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x417F18
|
// 0x417F18
|
||||||
void _object_anim_compact()
|
static void _object_anim_compact()
|
||||||
{
|
{
|
||||||
for (int index = 0; index < ANIMATION_SEQUENCE_LIST_CAPACITY; index++) {
|
for (int index = 0; index < ANIMATION_SEQUENCE_LIST_CAPACITY; index++) {
|
||||||
AnimationSequence* animationSequence = &(gAnimationSequences[index]);
|
AnimationSequence* animationSequence = &(gAnimationSequences[index]);
|
||||||
|
@ -2751,7 +2846,7 @@ void _dude_standup(Object* a1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x4185EC
|
// 0x4185EC
|
||||||
int actionRotate(Object* obj, int delta, int animationSequenceIndex)
|
static int actionRotate(Object* obj, int delta, int animationSequenceIndex)
|
||||||
{
|
{
|
||||||
if (!_critter_is_prone(obj)) {
|
if (!_critter_is_prone(obj)) {
|
||||||
int rotation = obj->rotation + delta;
|
int rotation = obj->rotation + delta;
|
||||||
|
@ -2770,7 +2865,7 @@ int actionRotate(Object* obj, int delta, int animationSequenceIndex)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x418660
|
// 0x418660
|
||||||
int _anim_change_fid(Object* obj, int animationSequenceIndex, int fid)
|
static int _anim_change_fid(Object* obj, int animationSequenceIndex, int fid)
|
||||||
{
|
{
|
||||||
Rect rect;
|
Rect rect;
|
||||||
Rect v7;
|
Rect v7;
|
||||||
|
@ -2804,7 +2899,7 @@ void _anim_stop()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x418708
|
// 0x418708
|
||||||
int _check_gravity(int tile, int elevation)
|
static int _check_gravity(int tile, int elevation)
|
||||||
{
|
{
|
||||||
for (; elevation > 0; elevation--) {
|
for (; elevation > 0; elevation--) {
|
||||||
int x;
|
int x;
|
||||||
|
@ -2821,7 +2916,7 @@ int _check_gravity(int tile, int elevation)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 0x418794
|
// 0x418794
|
||||||
unsigned int _compute_tpf(Object* object, int fid)
|
static unsigned int _compute_tpf(Object* object, int fid)
|
||||||
{
|
{
|
||||||
int fps;
|
int fps;
|
||||||
|
|
||||||
|
|
111
src/animation.h
111
src/animation.h
|
@ -1,14 +1,10 @@
|
||||||
#ifndef ANIMATION_H
|
#ifndef ANIMATION_H
|
||||||
#define ANIMATION_H
|
#define ANIMATION_H
|
||||||
|
|
||||||
#include "art.h"
|
|
||||||
#include "combat_defs.h"
|
#include "combat_defs.h"
|
||||||
#include "obj_types.h"
|
#include "obj_types.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
|
|
||||||
#define ANIMATION_SEQUENCE_LIST_CAPACITY (32)
|
|
||||||
#define ANIMATION_DESCRIPTION_LIST_CAPACITY (55)
|
|
||||||
|
|
||||||
typedef enum AnimKind {
|
typedef enum AnimKind {
|
||||||
ANIM_KIND_OBJ_MOVE_TO_OBJ = 0,
|
ANIM_KIND_OBJ_MOVE_TO_OBJ = 0,
|
||||||
ANIM_KIND_OBJ_MOVE_TO_TILE = 1,
|
ANIM_KIND_OBJ_MOVE_TO_TILE = 1,
|
||||||
|
@ -120,56 +116,6 @@ typedef int AnimationProc(Object*, Object*);
|
||||||
typedef int AnimationSoundProc(Sound*);
|
typedef int AnimationSoundProc(Sound*);
|
||||||
typedef int AnimationProc2(Object*, Object*, void*);
|
typedef int AnimationProc2(Object*, Object*, void*);
|
||||||
|
|
||||||
typedef struct AnimationDescription {
|
|
||||||
int type;
|
|
||||||
Object* owner;
|
|
||||||
union {
|
|
||||||
Object* destinationObj;
|
|
||||||
Sound* sound;
|
|
||||||
};
|
|
||||||
union {
|
|
||||||
int tile;
|
|
||||||
int fid; // for type == 17
|
|
||||||
int weaponAnimationCode; // for type == 18
|
|
||||||
int lightDistance; // for type == 19
|
|
||||||
};
|
|
||||||
int elevation;
|
|
||||||
int anim; // anim
|
|
||||||
int delay; // delay
|
|
||||||
union {
|
|
||||||
AnimationProc* proc;
|
|
||||||
AnimationSoundProc* soundProc;
|
|
||||||
};
|
|
||||||
AnimationProc2* field_20; // func
|
|
||||||
int field_24;
|
|
||||||
union {
|
|
||||||
int field_28; // actionPoints
|
|
||||||
Object* field_28_obj; // obj in type == 12
|
|
||||||
void* field_28_void;
|
|
||||||
};
|
|
||||||
CacheEntry* field_2C;
|
|
||||||
} AnimationDescription;
|
|
||||||
|
|
||||||
typedef struct AnimationSequence {
|
|
||||||
int field_0;
|
|
||||||
// Index of current animation in [animations] array or -1 if animations in
|
|
||||||
// this sequence is not playing.
|
|
||||||
int animationIndex;
|
|
||||||
// Number of scheduled animations in [animations] array.
|
|
||||||
int length;
|
|
||||||
int flags;
|
|
||||||
AnimationDescription animations[ANIMATION_DESCRIPTION_LIST_CAPACITY];
|
|
||||||
} AnimationSequence;
|
|
||||||
|
|
||||||
typedef struct PathNode {
|
|
||||||
int tile;
|
|
||||||
int from;
|
|
||||||
// actual type is likely char
|
|
||||||
int rotation;
|
|
||||||
int field_C;
|
|
||||||
int field_10;
|
|
||||||
} PathNode;
|
|
||||||
|
|
||||||
typedef struct STRUCT_530014_28 {
|
typedef struct STRUCT_530014_28 {
|
||||||
int tile;
|
int tile;
|
||||||
int elevation;
|
int elevation;
|
||||||
|
@ -177,52 +123,15 @@ typedef struct STRUCT_530014_28 {
|
||||||
int y;
|
int y;
|
||||||
} STRUCT_530014_28;
|
} STRUCT_530014_28;
|
||||||
|
|
||||||
typedef struct STRUCT_530014 {
|
|
||||||
int flags; // flags
|
|
||||||
Object* obj;
|
|
||||||
int fid; // fid
|
|
||||||
int field_C;
|
|
||||||
int field_10;
|
|
||||||
int field_14; // animation speed?
|
|
||||||
int animationSequenceIndex;
|
|
||||||
int field_1C; // length of field_28
|
|
||||||
int field_20; // current index in field_28
|
|
||||||
int field_24;
|
|
||||||
union {
|
|
||||||
unsigned char rotations[3200];
|
|
||||||
STRUCT_530014_28 field_28[200];
|
|
||||||
};
|
|
||||||
} STRUCT_530014;
|
|
||||||
|
|
||||||
typedef Object* PathBuilderCallback(Object* object, int tile, int elevation);
|
typedef Object* PathBuilderCallback(Object* object, int tile, int elevation);
|
||||||
|
|
||||||
extern int _curr_sad;
|
|
||||||
extern int gAnimationSequenceCurrentIndex;
|
|
||||||
extern int _anim_in_init;
|
|
||||||
extern bool _anim_in_anim_stop;
|
|
||||||
extern bool _anim_in_bk;
|
|
||||||
extern int _lastDestination;
|
|
||||||
extern unsigned int _last_time_;
|
|
||||||
extern unsigned int _next_time;
|
|
||||||
|
|
||||||
extern STRUCT_530014 _sad[24];
|
|
||||||
extern PathNode gClosedPathNodeList[2000];
|
|
||||||
extern AnimationSequence gAnimationSequences[32];
|
|
||||||
extern unsigned char gPathfinderProcessedTiles[5000];
|
|
||||||
extern PathNode gOpenPathNodeList[2000];
|
|
||||||
extern int gAnimationDescriptionCurrentIndex;
|
|
||||||
extern Object* dword_56C7E0[100];
|
|
||||||
|
|
||||||
void animationInit();
|
void animationInit();
|
||||||
void animationReset();
|
void animationReset();
|
||||||
void animationExit();
|
void animationExit();
|
||||||
int reg_anim_begin(int a1);
|
int reg_anim_begin(int a1);
|
||||||
int _anim_free_slot(int a1);
|
|
||||||
int _register_priority(int a1);
|
int _register_priority(int a1);
|
||||||
int reg_anim_clear(Object* a1);
|
int reg_anim_clear(Object* a1);
|
||||||
int reg_anim_end();
|
int reg_anim_end();
|
||||||
void _anim_cleanup();
|
|
||||||
int _check_registry(Object* obj);
|
|
||||||
int animationIsBusy(Object* a1);
|
int animationIsBusy(Object* a1);
|
||||||
int reg_anim_obj_move_to_obj(Object* a1, Object* a2, int actionPoints, int delay);
|
int reg_anim_obj_move_to_obj(Object* a1, Object* a2, int actionPoints, int delay);
|
||||||
int reg_anim_obj_run_to_obj(Object* owner, Object* destination, int actionPoints, int delay);
|
int reg_anim_obj_run_to_obj(Object* owner, Object* destination, int actionPoints, int delay);
|
||||||
|
@ -247,37 +156,17 @@ int reg_anim_update_light(Object* obj, int fid, int a3);
|
||||||
int reg_anim_play_sfx(Object* obj, const char* a2, int a3);
|
int reg_anim_play_sfx(Object* obj, const char* a2, int a3);
|
||||||
int reg_anim_animate_forever(Object* obj, int a2, int a3);
|
int reg_anim_animate_forever(Object* obj, int a2, int a3);
|
||||||
int reg_anim_26(int a1, int a2);
|
int reg_anim_26(int a1, int a2);
|
||||||
int animationRunSequence(int a1);
|
|
||||||
int _anim_set_continue(int a1, int a2);
|
|
||||||
int _anim_set_end(int a1);
|
|
||||||
bool canUseDoor(Object* critter, Object* door);
|
|
||||||
int _make_path(Object* object, int from, int to, unsigned char* a4, int a5);
|
int _make_path(Object* object, int from, int to, unsigned char* a4, int a5);
|
||||||
int pathfinderFindPath(Object* object, int from, int to, unsigned char* rotations, int a5, PathBuilderCallback* callback);
|
int pathfinderFindPath(Object* object, int from, int to, unsigned char* rotations, int a5, PathBuilderCallback* callback);
|
||||||
int _idist(int a1, int a2, int a3, int a4);
|
|
||||||
int _tile_idistance(int tile1, int tile2);
|
|
||||||
int _make_straight_path(Object* a1, int from, int to, STRUCT_530014_28* pathNodes, Object** a5, int a6);
|
int _make_straight_path(Object* a1, int from, int to, STRUCT_530014_28* pathNodes, Object** a5, int a6);
|
||||||
int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4, Object** a5, int a6, Object* (*a7)(Object*, int, int));
|
int _make_straight_path_func(Object* a1, int from, int to, STRUCT_530014_28* a4, Object** a5, int a6, Object* (*a7)(Object*, int, int));
|
||||||
int animateMoveObjectToObject(Object* from, Object* to, int a3, int anim, int animationSequenceIndex);
|
|
||||||
int animateMoveObjectToTile(Object* obj, int tile_num, int elev, int a4, int anim, int animationSequenceIndex);
|
|
||||||
int _anim_move(Object* obj, int tile, int elev, int a3, int anim, int a5, int animationSequenceIndex);
|
|
||||||
int _anim_move_straight_to_tile(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex, int flags);
|
|
||||||
int _anim_move_on_stairs(Object* obj, int tile, int elevation, int anim, int animationSequenceIndex);
|
|
||||||
int _check_for_falling(Object* obj, int anim, int a3);
|
|
||||||
void _object_move(int index);
|
|
||||||
void _object_straight_move(int index);
|
|
||||||
int _anim_animate(Object* obj, int anim, int animationSequenceIndex, int flags);
|
|
||||||
void _object_animate();
|
void _object_animate();
|
||||||
void _object_anim_compact();
|
|
||||||
int _check_move(int* a1);
|
int _check_move(int* a1);
|
||||||
int _dude_move(int a1);
|
int _dude_move(int a1);
|
||||||
int _dude_run(int a1);
|
int _dude_run(int a1);
|
||||||
void _dude_fidget();
|
void _dude_fidget();
|
||||||
void _dude_stand(Object* obj, int rotation, int fid);
|
void _dude_stand(Object* obj, int rotation, int fid);
|
||||||
void _dude_standup(Object* a1);
|
void _dude_standup(Object* a1);
|
||||||
int actionRotate(Object* obj, int delta, int animationSequenceIndex);
|
|
||||||
int _anim_change_fid(Object* obj, int animationSequenceIndex, int fid);
|
|
||||||
void _anim_stop();
|
void _anim_stop();
|
||||||
int _check_gravity(int tile, int elevation);
|
|
||||||
unsigned int _compute_tpf(Object* object, int fid);
|
|
||||||
|
|
||||||
#endif /* ANIMATION_H */
|
#endif /* ANIMATION_H */
|
||||||
|
|
Loading…
Reference in New Issue