mirror of https://github.com/zeldaret/tmc.git
214 lines
6.5 KiB
C
214 lines
6.5 KiB
C
#include "entity.h"
|
|
#include "object.h"
|
|
|
|
void (*const gObjectFunctions[])(Entity*) = {
|
|
[GROUND_ITEM] = ItemOnGround,
|
|
[DEATH_FX] = DeathFx,
|
|
[SHOP_ITEM] = ItemForSale,
|
|
[BUTTON] = Button,
|
|
[MINISH_EMOTICON] = MinishEmoticon,
|
|
[POT] = Pot,
|
|
[EZLO_CAP] = EzloCap,
|
|
[PUSHED_BLOCK] = BlockPushed,
|
|
[LOCKED_DOOR] = LockedDoor,
|
|
[OBJECT_9] = Object9,
|
|
[OBJECT_A] = ObjectA,
|
|
[OBJECT_B] = ObjectB,
|
|
[CHEST_SPAWNER] = ChestSpawner,
|
|
[OBJECT_D] = ObjectD,
|
|
[OBJECT_E] = ObjectE,
|
|
[SPECIAL_FX] = SpecialFx,
|
|
[PLAYER_CLONE] = PlayerClone,
|
|
[OBJECT_11] = Object11,
|
|
[OBJECT_12] = Object12,
|
|
[RAILTRACK] = Railtrack,
|
|
[LILYPAD_LARGE] = LilypadLarge,
|
|
[OBJECT_15] = Object15,
|
|
[FLOATING_PLATFORM] = FloatingPlatform,
|
|
[OBJECT_17] = Object17,
|
|
[EVIL_SPIRIT] = EvilSpirit,
|
|
[HOUSE_DOOR_EXT] = HouseDoorExterior,
|
|
[RUPEE_OBJECT] = Rupee,
|
|
[GREAT_FAIRY] = GreatFairy,
|
|
[OBJECT_1C] = Object1C,
|
|
[OBJECT_1D] = Object1D,
|
|
[OBJECT_1E] = Object1E,
|
|
[OBJECT_1F] = Object1F,
|
|
[OBJECT_20] = Object20,
|
|
[OBJECT_21] = Object21,
|
|
[FIGURINE_DEVICE] = FigurineDevice,
|
|
[EYE_SWITCH] = EyeSwitch,
|
|
[PRESSURE_PLATE] = PressurePlate,
|
|
[BIG_BARREL] = BigBarrel,
|
|
[BARREL_INSIDE] = BarrelInside,
|
|
[PUSHABLE_STATUE] = PushableStatue,
|
|
[OBJECT_28] = Object28,
|
|
[AMBIENT_CLOUDS] = AmbientClouds,
|
|
[OBJECT_2A] = Object2A,
|
|
[OBJECT_2B] = Object2B,
|
|
[BEANSTALK] = Beanstalk,
|
|
[SMOKE] = Smoke,
|
|
[PUSHABLE_ROCK] = PushableRock,
|
|
[HITTABLE_LEVER] = HittableLever,
|
|
[OBJECT_30] = Object30,
|
|
[FROZEN_FLOWER] = FrozenFlower,
|
|
[PULLABLE_MUSHROOM] = PullableMushroom,
|
|
[BOLLARD] = Bollard,
|
|
[WARP_POINT] = WarpPoint,
|
|
[OBJECT_35] = Object35,
|
|
[OBJECT_36] = Object36,
|
|
[OBJECT_37] = Object37,
|
|
[JAR_PORTAL] = JarPortal,
|
|
[BOSS_DOOR] = BossDoor,
|
|
[OBJECT_3A] = Object3A,
|
|
[PORTAL_MUSHROOM_STALKS] = MacroMushromStalks,
|
|
[PORTAL_FALLING_PLAYER] = MacroPlayer,
|
|
[OBJECT_3D] = Object3D,
|
|
[OBJECT_3E] = Object3E,
|
|
[GIANT_LEAF] = GiantLeaf,
|
|
[FAIRY] = Fairy,
|
|
[LADDER_UP] = LadderUp,
|
|
[OBJECT_42] = Object42,
|
|
[OBJECT_43] = Object43,
|
|
[OBJECT_44] = Object44,
|
|
[OBJECT_45] = Object45,
|
|
[GIANT_BOOK_LADDER] = GiantBookLadder,
|
|
[HEART_CONTAINER] = HeartContainer,
|
|
[FILE_SCREEN_OBJECTS] = FileScreenObjects,
|
|
[OBJECT_49] = Object49,
|
|
[BACKGROUND_CLOUD] = BackgroundCloud,
|
|
[OBJECT_4B] = Object4B,
|
|
[PUSHABLE_FURNITURE] = PushableFurniture,
|
|
[FURNITURE] = Furniture,
|
|
[MINISH_SIZED_ENTRANCE] = MinishSizedEntrance,
|
|
[ARCHWAY] = Archway,
|
|
[GIANT_ROCK] = GiantRock,
|
|
[GIANT_ROCK2] = GiantRock2,
|
|
[OBJECT_52] = Object52,
|
|
[OBJECT_53] = Object53,
|
|
[PULLABLE_LEVER] = PullableLever,
|
|
[MINECART] = Minecart,
|
|
[THOUGHT_BUBBLE] = ThoughtBubble,
|
|
[HIDDEN_LADDER_DOWN] = HiddenLadderDown,
|
|
[GENTARI_CURTAIN] = GentariCurtain,
|
|
[LAVA_PLATFORM] = LavaPlatform,
|
|
[PAPER] = Paper,
|
|
[OBJECT_5B] = Object5B,
|
|
[MASK] = Mask,
|
|
[HOUSE_DOOR_INT] = HouseDoorInterior,
|
|
[WHIRLWIND] = Whirlwind,
|
|
[OBJECT_BLOCKING_STAIRS] = ObjectBlockingStairs,
|
|
[SWORDSMAN_NEWSLETTER] = SwordsmanNewsletter,
|
|
[OBJECT_61] = Object61,
|
|
[GIANT_TWIG] = GiantTwig,
|
|
[OBJECT_63] = Object63,
|
|
[OBJECT_64] = Object64,
|
|
[LADDER_HOLE] = LadderHoleInBookshelf,
|
|
[OBJECT_66] = Object66,
|
|
[OBJECT_67] = Object67,
|
|
[OBJECT_68] = Object68,
|
|
[OBJECT_69] = Object69,
|
|
[OBJECT_6A] = Object6A,
|
|
[CRENEL_BEAN_SPROUT] = CrenelBeanSprout,
|
|
[MINECART_DOOR] = MinecartDoor,
|
|
[OBJECT_ON_PILLAR] = ObjectOnPillar,
|
|
[MINERAL_WATER_SOURCE] = MineralWaterSource,
|
|
[MINISH_SIZED_ARCHWAY] = MinishSizedArchway,
|
|
[OBJECT_70] = Object70,
|
|
[PUSHABLE_GRAVE] = PushableGrave,
|
|
[STONE_TABLET] = StoneTablet,
|
|
[LILYPAD_SMALL] = LilypadSmall,
|
|
[OBJECT_74] = Object74,
|
|
[OBJECT_75] = Object75,
|
|
[OBJECT_76] = Object76,
|
|
[BELL] = Bell,
|
|
[HUGE_DECORATION] = MacroDecoration,
|
|
[OBJECT_79] = Object79,
|
|
[STEAM] = Steam,
|
|
[PUSHABLE_LEVER] = PushableLever,
|
|
[HUGE_SHOES] = MacroShoes,
|
|
[OBJECT_ON_BEETLE] = ObjectOnSpinyBeetle,
|
|
[OBJECT_7E] = Object7E,
|
|
[PICO_BLOOM] = PicoBloom,
|
|
[BOARD] = Board,
|
|
[OBJECT_81] = Object81,
|
|
[BIG_VORTEX] = BigVortex,
|
|
[BIG_PUSHABLE_LEVER] = BigPushableLever,
|
|
[SMALL_ICE_BLOCK] = SmallIceBlock,
|
|
[BIG_ICE_BLOCK] = BigIceBlock,
|
|
[OBJECT_86] = Object86,
|
|
[OCTOROK_BOSS_OBJECT] = OctorokBossObject,
|
|
[HUGE_BOOK] = MacroBook,
|
|
[MAZAAL_BOSS_OBJECT] = MazaalBossObject,
|
|
[CABIN_FURNITURE] = CabinFurniture,
|
|
[DOUBLE_BOOKSHELF] = DoubleBookshelf,
|
|
[BOOK] = Book,
|
|
[FIREPLACE] = Fireplace,
|
|
[OBJECT_8E] = Object8E,
|
|
[FROZEN_WATER_ELEMENT] = FrozenWaterElement,
|
|
[OBJECT_90] = Object90,
|
|
[FROZEN_OCTOROK] = FrozenOctorok,
|
|
[BAKER_OVEN] = BakerOven,
|
|
[LAMP] = Lamp,
|
|
[WIND_TRIBE_FLAG] = WindTribeFlag,
|
|
[BIRD] = Bird,
|
|
[OBJECT_96] = Object96,
|
|
[KEY_STEALING_TAKKURI] = KeyStealingTakkuri,
|
|
[OBJECT_98] = Object98,
|
|
[OBJECT_99] = Object99,
|
|
[HUGE_ACORN] = MacroAcorn,
|
|
[OBJECT_9B] = Object9B,
|
|
[TREE_HIDING_PORTAL] = TreeHidingPortal,
|
|
[LIGHTABLE_SWITCH] = LightableSwitch,
|
|
[TREE_THORNS] = TreeThorns,
|
|
[FAN] = Fan,
|
|
[ANGRY_STATUE] = AngryStatue,
|
|
[PALACE_ARCHWAY] = PalaceArchway,
|
|
[OBJECT_A2] = ObjectA2,
|
|
[CLOUD] = Cloud,
|
|
[MINISH_LIGHT] = MinishLight,
|
|
[FIREBALL_CHAIN] = FireballChain,
|
|
[OBJECT_A6] = ObjectA6,
|
|
[OBJECT_A7] = ObjectA7,
|
|
[OBJECT_A8] = ObjectA8,
|
|
[OBJECT_A9] = ObjectA9,
|
|
[WATERFALL_OPENING] = WaterfallOpening,
|
|
[OBJECT_AB] = ObjectAB,
|
|
[FOUR_ELEMENTS] = FourElements,
|
|
[OBJECT_AD] = ObjectAD,
|
|
[FLOATING_BLOCK] = FloatingBlock,
|
|
[OBJECT_AF] = ObjectAF,
|
|
[METAL_DOOR] = MetalDoor,
|
|
[JAIL_BARS] = JailBars,
|
|
[OBJECT_B2] = ObjectB2,
|
|
[OBJECT_B3] = ObjectB3,
|
|
[OBJECT_B4] = ObjectB4,
|
|
[OBJECT_B5] = ObjectB5,
|
|
[OBJECT_B6] = ObjectB6,
|
|
[WELL] = Well,
|
|
[WIND_TRIBE_TELEPORTER] = WindTribeTeleporter,
|
|
[CUCCO_MINIGAME] = ObjectB9,
|
|
[GYORG_BOSS_OBJECT] = GyorgBossObject,
|
|
[WINDCREST] = Windcrest,
|
|
[LIT_AREA] = LitArea,
|
|
[OBJECT_BD] = ObjectBD,
|
|
[PINWHEEL] = Pinwheel,
|
|
[OBJECT_BF] = ObjectBF,
|
|
[ENEMY_ITEM] = EnemyItem,
|
|
[OBJECT_C1] = ObjectC1,
|
|
};
|
|
|
|
void ObjectInit(Entity*);
|
|
|
|
void ObjectUpdate(Entity* this) {
|
|
if ((this->flags & ENT_DID_INIT) == 0 && this->action == 0)
|
|
ObjectInit(this);
|
|
if (this->iframes != 0)
|
|
this->iframes++;
|
|
if (!EntityIsDeleted(this)) {
|
|
gObjectFunctions[this->id](this);
|
|
this->bitfield &= ~0x80;
|
|
}
|
|
DrawEntity(this);
|
|
}
|