Document villa furniture (#1076)

This commit is contained in:
CharlesFolz4
2026-04-19 14:23:50 -04:00
committed by GitHub
parent 9fb4f6754c
commit 85a21e9c8e
44 changed files with 834 additions and 782 deletions

View File

@@ -117,7 +117,7 @@ metang_generators = {
'tutor_locations': {'type': 'enum', 'tag': 'TutorLocation'},
'vars_flags': {'type': 'enum', 'tag': 'VarFlag'},
'versions': {'type': 'enum', 'tag': 'Version'},
'villa_furnitures': {'type': 'enum', 'tag': 'VillaFurniture'},
'villa_furniture_type': {'type': 'enum', 'tag': 'VillaFurnitureType'},
'mart_specialties_id': {'type': 'enum', 'tag': 'MartSpecialtiesID'},
'mart_decor_id': {'type': 'enum', 'tag': 'MartDecorID'},
'mart_seal_id': {'type': 'enum', 'tag': 'MartSealID'},

View File

@@ -25,7 +25,8 @@
#include "narc.h"
#include "sys_task_manager.h"
#define MAP_OBJECT_COORD_TO_FX32(coord) ((coord << 4) * FX32_ONE) + (MAP_OBJECT_TILE_SIZE >> 1)
#define MAP_OBJECT_COORD_CENTER_TO_FX32(coord) ((coord << 4) * FX32_ONE) + (MAP_OBJECT_TILE_SIZE >> 1)
#define MAP_OBJECT_COORD_EDGE_TO_FX32(coord) ((coord << 4) * FX32_ONE)
typedef struct MapObjectSave {
u32 status;

View File

@@ -1,11 +0,0 @@
#ifndef POKEPLATINUM_OV5_021F8370_H
#define POKEPLATINUM_OV5_021F8370_H
#include "field/field_system_decl.h"
void Villa_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void Villa_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL Villa_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
BOOL ov5_021F8410(FieldSystem *fieldSystem, const int param1, const int param2, const int param3);
#endif // POKEPLATINUM_OV5_021F8370_H

View File

@@ -0,0 +1,15 @@
#ifndef POKEPLATINUM_VILLA_FURNITURE_H
#define POKEPLATINUM_VILLA_FURNITURE_H
#include "field/field_system_decl.h"
typedef struct VillaPersistedData {
int dummy;
} VillaPersistedData;
void Villa_DynamicMapFeaturesInit(FieldSystem *fieldSystem);
void Villa_DynamicMapFeaturesFree(FieldSystem *fieldSystem);
BOOL Villa_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding);
BOOL FieldSystem_TrySetVillaFurnitureScript(FieldSystem *fieldSystem, const int param1, const int param2, const int direction);
#endif // POKEPLATINUM_VILLA_FURNITURE_H

View File

@@ -1,8 +0,0 @@
#ifndef POKEPLATINUM_STRUCT_02071C34_H
#define POKEPLATINUM_STRUCT_02071C34_H
typedef struct {
int unk_00;
} UnkStruct_02071C34;
#endif // POKEPLATINUM_STRUCT_02071C34_H

View File

@@ -6,7 +6,7 @@
#include "generated/giratina_shadow_animations.h"
#include "generated/map_headers.h"
#include "generated/pokemon_contest_types.h"
#include "generated/villa_furnitures.h"
#include "generated/villa_furniture_type.h"
#include "vars_flags.h"
@@ -67,7 +67,7 @@ BOOL SystemFlag_HandleForceBikingInGate(VarsFlags *varsFlags, enum HandleFlagOp
BOOL SystemFlag_HandleJournalAcquired(VarsFlags *varsFlags, enum HandleFlagOp op);
BOOL SystemFlag_HandleFirstArrivalToZone(VarsFlags *varsFlags, enum HandleFlagOp op, u32 firstArrival);
void SystemFlag_SetConnectedToWiFi(VarsFlags *varsFlags);
BOOL SystemFlag_HandleOwnsVillaFurniture(VarsFlags *varsFlags, enum HandleFlagOp op, enum VillaFurniture furniture);
BOOL SystemFlag_HandleOwnsVillaFurniture(VarsFlags *varsFlags, enum HandleFlagOp op, enum VillaFurnitureType furniture);
void SystemFlag_ClearVillaVisitorInside(VarsFlags *varsFlags);
void SystemFlag_ClearVillaVisitorOutside(VarsFlags *varsFlags);
BOOL SystemFlag_HandleGiratinaAnimation(VarsFlags *varsFlags, enum HandleFlagOp op, enum GiratinaShadowAnimation anim);

View File

@@ -552,7 +552,7 @@ Overlay overlay5
Object main.nef.p/src_overlay005_ov5_021F61BC.c.o
Object main.nef.p/src_overlay005_ov5_021F6454.c.o
Object main.nef.p/src_overlay005_scrcmd_move_tutor.c.o
Object main.nef.p/src_overlay005_ov5_021F8370.c.o
Object main.nef.p/src_overlay005_villa_furniture.c.o
Object main.nef.p/src_overlay005_dist_world_surf_mount_renderer.c.o
}

View File

@@ -1,25 +1,25 @@
{
"mapPropModels": [
"prop_model_078_nsbmd",
"prop_model_559_nsbmd",
"prop_model_560_nsbmd",
"prop_model_561_nsbmd",
"prop_model_562_nsbmd",
"prop_model_563_nsbmd",
"prop_model_564_nsbmd",
"prop_model_565_nsbmd",
"prop_model_566_nsbmd",
"prop_model_567_nsbmd",
"prop_model_568_nsbmd",
"prop_model_569_nsbmd",
"prop_model_570_nsbmd",
"prop_model_571_nsbmd",
"prop_model_572_nsbmd",
"prop_model_573_nsbmd",
"prop_model_574_nsbmd",
"prop_model_575_nsbmd",
"prop_model_576_nsbmd",
"prop_model_577_nsbmd",
"prop_model_578_nsbmd"
"villa_furniture_table_nsbmd",
"villa_furniture_big_sofa_nsbmd",
"villa_furniture_small_sofa_nsbmd",
"villa_furniture_bed_nsbmd",
"villa_furniture_night_table_nsbmd",
"villa_furniture_tv_nsbmd",
"villa_furniture_audio_system_nsbmd",
"villa_furniture_bookshelf_nsbmd",
"villa_furniture_rack_nsbmd",
"villa_furniture_houseplant_nsbmd",
"villa_furniture_pc_desk_nsbmd",
"villa_furniture_music_box_nsbmd",
"villa_furniture_pokemon_bust_nsbmd",
"villa_furniture_pokemon_bust_silver_nsbmd",
"villa_furniture_piano_nsbmd",
"villa_furniture_guest_set_nsbmd",
"villa_furniture_wall_clock_nsbmd",
"villa_furniture_masterpiece_nsbmd",
"villa_furniture_tea_set_nsbmd",
"villa_furniture_chandelier_nsbmd"
]
}

View File

@@ -557,26 +557,26 @@ prop_model_555.nsbmd
prop_model_556.nsbmd
prop_model_557.nsbmd
prop_model_558.nsbmd
prop_model_559.nsbmd
prop_model_560.nsbmd
prop_model_561.nsbmd
prop_model_562.nsbmd
prop_model_563.nsbmd
prop_model_564.nsbmd
prop_model_565.nsbmd
prop_model_566.nsbmd
prop_model_567.nsbmd
prop_model_568.nsbmd
prop_model_569.nsbmd
prop_model_570.nsbmd
prop_model_571.nsbmd
prop_model_572.nsbmd
prop_model_573.nsbmd
prop_model_574.nsbmd
prop_model_575.nsbmd
prop_model_576.nsbmd
prop_model_577.nsbmd
prop_model_578.nsbmd
villa_furniture_table.nsbmd
villa_furniture_big_sofa.nsbmd
villa_furniture_small_sofa.nsbmd
villa_furniture_bed.nsbmd
villa_furniture_night_table.nsbmd
villa_furniture_tv.nsbmd
villa_furniture_audio_system.nsbmd
villa_furniture_bookshelf.nsbmd
villa_furniture_rack.nsbmd
villa_furniture_houseplant.nsbmd
villa_furniture_pc_desk.nsbmd
villa_furniture_music_box.nsbmd
villa_furniture_pokemon_bust.nsbmd
villa_furniture_pokemon_bust_silver.nsbmd
villa_furniture_piano.nsbmd
villa_furniture_guest_set.nsbmd
villa_furniture_wall_clock.nsbmd
villa_furniture_masterpiece.nsbmd
villa_furniture_tea_set.nsbmd
villa_furniture_chandelier.nsbmd
prop_model_579.nsbmd
prop_model_580.nsbmd
prop_model_581.nsbmd

View File

@@ -558,26 +558,26 @@ map_prop_model_files = copy_gen.process(files(
'prop_model_556.nsbmd',
'prop_model_557.nsbmd',
'prop_model_558.nsbmd',
'prop_model_559.nsbmd',
'prop_model_560.nsbmd',
'prop_model_561.nsbmd',
'prop_model_562.nsbmd',
'prop_model_563.nsbmd',
'prop_model_564.nsbmd',
'prop_model_565.nsbmd',
'prop_model_566.nsbmd',
'prop_model_567.nsbmd',
'prop_model_568.nsbmd',
'prop_model_569.nsbmd',
'prop_model_570.nsbmd',
'prop_model_571.nsbmd',
'prop_model_572.nsbmd',
'prop_model_573.nsbmd',
'prop_model_574.nsbmd',
'prop_model_575.nsbmd',
'prop_model_576.nsbmd',
'prop_model_577.nsbmd',
'prop_model_578.nsbmd',
'villa_furniture_table.nsbmd',
'villa_furniture_big_sofa.nsbmd',
'villa_furniture_small_sofa.nsbmd',
'villa_furniture_bed.nsbmd',
'villa_furniture_night_table.nsbmd',
'villa_furniture_tv.nsbmd',
'villa_furniture_audio_system.nsbmd',
'villa_furniture_bookshelf.nsbmd',
'villa_furniture_rack.nsbmd',
'villa_furniture_houseplant.nsbmd',
'villa_furniture_pc_desk.nsbmd',
'villa_furniture_music_box.nsbmd',
'villa_furniture_pokemon_bust.nsbmd',
'villa_furniture_pokemon_bust_silver.nsbmd',
'villa_furniture_piano.nsbmd',
'villa_furniture_guest_set.nsbmd',
'villa_furniture_wall_clock.nsbmd',
'villa_furniture_masterpiece.nsbmd',
'villa_furniture_tea_set.nsbmd',
'villa_furniture_chandelier.nsbmd',
'prop_model_579.nsbmd',
'prop_model_580.nsbmd',
'prop_model_581.nsbmd',

View File

Before

Width:  |  Height:  |  Size: 7.3 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

Before

Width:  |  Height:  |  Size: 7.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.9 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

View File

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.8 KiB

View File

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -22,26 +22,26 @@
ScriptEntry _0B5C
ScriptEntry _0BBC
ScriptEntry _0C24
ScriptEntry _0C88
ScriptEntry _0C99
ScriptEntry _0CAA
ScriptEntry _0CBB
ScriptEntry _0CCC
ScriptEntry _0CDD
ScriptEntry _0CEE
ScriptEntry _0D03
ScriptEntry _0D14
ScriptEntry _0D30
ScriptEntry _0D41
ScriptEntry _0D55
ScriptEntry _0DD1
ScriptEntry _0DE2
ScriptEntry _0DF3
ScriptEntry _0E08
ScriptEntry _0E19
ScriptEntry _0E2A
ScriptEntry _0E3B
ScriptEntry _0E4C
ScriptEntry Villa_Furniture_Table
ScriptEntry Villa_Furniture_BigSofa
ScriptEntry Villa_Furniture_SmallSofa
ScriptEntry Villa_Furniture_Bed
ScriptEntry Villa_Furniture_NightTable
ScriptEntry Villa_Furniture_TVDummy
ScriptEntry Villa_Furniture_AudioSystem
ScriptEntry Villa_Furniture_Bookshelf
ScriptEntry Villa_Furniture_Rack
ScriptEntry Villa_Furniture_Houseplant
ScriptEntry Villa_Furniture_PCDesk
ScriptEntry Villa_Furniture_MusicBox
ScriptEntry Villa_Furniture_PokemonBust
ScriptEntry Villa_Furniture_PokemonBustSilver
ScriptEntry Villa_Furniture_Piano
ScriptEntry Villa_Furniture_GuestSet
ScriptEntry Villa_Furniture_WallClock
ScriptEntry Villa_Furniture_Masterpiece
ScriptEntry Villa_Furniture_TeaSet
ScriptEntry Villa_Furniture_Chandelier
ScriptEntry _0E65
ScriptEntry _0EB4
ScriptEntry _15F3
@@ -184,23 +184,23 @@ _029C:
End
_02F3:
Message 15
Message pl_msg_00000602_00015
Return
_02F8:
Message 16
Message pl_msg_00000602_00016
Return
_02FD:
Message 17
Message pl_msg_00000602_00017
Return
_0302:
Message 18
Message pl_msg_00000602_00018
Return
_0307:
Message 19
Message pl_msg_00000602_00019
Return
_030C:
@@ -247,43 +247,43 @@ _03E0:
Return
_0400:
Message 20
Message pl_msg_00000602_00020
Return
_0405:
Message 25
Message pl_msg_00000602_00025
Return
_040A:
Message 21
Message pl_msg_00000602_00021
Return
_040F:
Message 26
Message pl_msg_00000602_00026
Return
_0414:
Message 22
Message pl_msg_00000602_00022
Return
_0419:
Message 27
Message pl_msg_00000602_00027
Return
_041E:
Message 23
Message pl_msg_00000602_00023
Return
_0423:
Message 28
Message pl_msg_00000602_00028
Return
_0428:
Message 24
Message pl_msg_00000602_00024
Return
_042D:
Message 29
Message pl_msg_00000602_00029
Return
_0432:
@@ -299,23 +299,23 @@ _0432:
End
_0483:
Message 30
Message pl_msg_00000602_00030
Return
_0488:
Message 31
Message pl_msg_00000602_00031
Return
_048D:
Message 32
Message pl_msg_00000602_00032
Return
_0492:
Message 33
Message pl_msg_00000602_00033
Return
_0497:
Message 34
Message pl_msg_00000602_00034
Return
_049C:
@@ -333,23 +333,23 @@ _049C:
End
_04F3:
Message 35
Message pl_msg_00000602_00035
Return
_04F8:
Message 36
Message pl_msg_00000602_00036
Return
_04FD:
Message 37
Message pl_msg_00000602_00037
Return
_0502:
Message 38
Message pl_msg_00000602_00038
Return
_0507:
Message 39
Message pl_msg_00000602_00039
Return
_050C:
@@ -365,23 +365,23 @@ _050C:
End
_055D:
Message 40
Message pl_msg_00000602_00040
Return
_0562:
Message 41
Message pl_msg_00000602_00041
Return
_0567:
Message 42
Message pl_msg_00000602_00042
Return
_056C:
Message 43
Message pl_msg_00000602_00043
Return
_0571:
Message 44
Message pl_msg_00000602_00044
Return
_0576:
@@ -397,23 +397,23 @@ _0576:
End
_05C7:
Message 45
Message pl_msg_00000602_00045
Return
_05CC:
Message 46
Message pl_msg_00000602_00046
Return
_05D1:
Message 47
Message pl_msg_00000602_00047
Return
_05D6:
Message 48
Message pl_msg_00000602_00048
Return
_05DB:
Message 49
Message pl_msg_00000602_00049
Return
_05E0:
@@ -429,23 +429,23 @@ _05E0:
End
_0631:
Message 50
Message pl_msg_00000602_00050
Return
_0636:
Message 51
Message pl_msg_00000602_00051
Return
_063B:
Message 52
Message pl_msg_00000602_00052
Return
_0640:
Message 53
Message pl_msg_00000602_00053
Return
_0645:
Message 54
Message pl_msg_00000602_00054
Return
_064A:
@@ -463,23 +463,23 @@ _064A:
End
_06AB:
Message 55
Message pl_msg_00000602_00055
Return
_06B0:
Message 56
Message pl_msg_00000602_00056
Return
_06B5:
Message 57
Message pl_msg_00000602_00057
Return
_06BA:
Message 58
Message pl_msg_00000602_00058
Return
_06BF:
Message 59
Message pl_msg_00000602_00059
Return
_06C4:
@@ -496,24 +496,24 @@ _06C4:
_0715:
BufferRivalName 0
Message 60
Message pl_msg_00000602_00060
Return
_071D:
Message 61
Message pl_msg_00000602_00061
Return
_0722:
BufferRivalName 0
Message 62
Message pl_msg_00000602_00062
Return
_072A:
Message 63
Message pl_msg_00000602_00063
Return
_072F:
Message 64
Message pl_msg_00000602_00064
Return
_0734:
@@ -529,23 +529,23 @@ _0734:
End
_0785:
Message 65
Message pl_msg_00000602_00065
Return
_078A:
Message 66
Message pl_msg_00000602_00066
Return
_078F:
Message 67
Message pl_msg_00000602_00067
Return
_0794:
Message 68
Message pl_msg_00000602_00068
Return
_0799:
Message 69
Message pl_msg_00000602_00069
Return
_079E:
@@ -562,23 +562,23 @@ _079E:
End
_07FC:
Message 70
Message pl_msg_00000602_00070
Return
_0801:
Message 71
Message pl_msg_00000602_00071
Return
_0806:
Message 72
Message pl_msg_00000602_00072
Return
_080B:
Message 73
Message pl_msg_00000602_00073
Return
_0810:
Message 74
Message pl_msg_00000602_00074
Return
_0815:
@@ -595,23 +595,23 @@ _0815:
End
_0873:
Message 75
Message pl_msg_00000602_00075
Return
_0878:
Message 76
Message pl_msg_00000602_00076
Return
_087D:
Message 77
Message pl_msg_00000602_00077
Return
_0882:
Message 78
Message pl_msg_00000602_00078
Return
_0887:
Message 79
Message pl_msg_00000602_00079
Return
_088C:
@@ -627,33 +627,33 @@ _088C:
_08DB:
FacePlayer
Message 86
Message pl_msg_00000602_00086
Return
_08E2:
FacePlayer
Message 88
Message pl_msg_00000602_00088
Return
_08E9:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 89
Message pl_msg_00000602_00089
Return
_0900:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 90
Message pl_msg_00000602_00090
Return
_0917:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 91
Message pl_msg_00000602_00091
Return
.balign 4, 0
@@ -680,23 +680,23 @@ _0944:
End
_0995:
Message 80
Message pl_msg_00000602_00080
Return
_099A:
Message 81
Message pl_msg_00000602_00081
Return
_099F:
Message 82
Message pl_msg_00000602_00082
Return
_09A4:
Message 83
Message pl_msg_00000602_00083
Return
_09A9:
Message 84
Message pl_msg_00000602_00084
Return
_09AE:
@@ -712,33 +712,33 @@ _09AE:
_09FD:
FacePlayer
Message 85
Message pl_msg_00000602_00085
Return
_0A04:
FacePlayer
Message 87
Message pl_msg_00000602_00087
Return
_0A0B:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 89
Message pl_msg_00000602_00089
Return
_0A22:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 90
Message pl_msg_00000602_00090
Return
_0A39:
ApplyMovement 11, _0930
ApplyMovement 13, _093C
WaitMovement
Message 91
Message pl_msg_00000602_00091
Return
_0A50:
@@ -757,24 +757,24 @@ _0A50:
End
_0AB4:
Message 92
Message pl_msg_00000602_00092
Return
_0AB9:
Message 93
Message pl_msg_00000602_00093
Return
_0ABE:
Message 94
Message pl_msg_00000602_00094
Return
_0AC3:
Message 95
Message pl_msg_00000602_00095
Return
_0AC8:
GoToIfUnset FLAG_VILLA_FURNITURE_TEA_SET, _0AB4
Message 96
Message pl_msg_00000602_00096
Return
.balign 4, 0
@@ -915,94 +915,94 @@ _0C78:
WalkOnSpotNormalWest
EndMovement
_0C88:
Villa_Furniture_Table:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 99
GoTo _0E5D
Message Villa_Text_Table
GoTo Villa_Furniture_End
End
_0C99:
Villa_Furniture_BigSofa:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 100
GoTo _0E5D
Message Villa_Text_BigSofa
GoTo Villa_Furniture_End
End
_0CAA:
Villa_Furniture_SmallSofa:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 101
GoTo _0E5D
Message Villa_Text_SmallSofa
GoTo Villa_Furniture_End
End
_0CBB:
Villa_Furniture_Bed:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 102
GoTo _0E5D
Message Villa_Text_Bed
GoTo Villa_Furniture_End
End
_0CCC:
Villa_Furniture_NightTable:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 103
GoTo _0E5D
Message Villa_Text_NightTable
GoTo Villa_Furniture_End
End
_0CDD:
Villa_Furniture_TVDummy:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 104
GoTo _0E5D
Message Villa_Text_TV
GoTo Villa_Furniture_End
End
_0CEE:
Villa_Furniture_AudioSystem:
PlaySE SEQ_SE_CONFIRM
LockAll
PlayMusic SEQ_PL_AUDIO
Message 105
GoTo _0E5D
Message Villa_Text_AudioSystem
GoTo Villa_Furniture_End
End
_0D03:
Villa_Furniture_Bookshelf:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 106
GoTo _0E5D
Message Villa_Text_Bookshelf
GoTo Villa_Furniture_End
End
_0D14:
Villa_Furniture_Rack:
PlaySE SEQ_SE_CONFIRM
LockAll
GoToIfSet FLAG_VILLA_FURNITURE_MUSIC_BOX, _0D63
Message 107
GoTo _0E5D
Message Villa_Text_Rack
GoTo Villa_Furniture_End
End
_0D30:
Villa_Furniture_Houseplant:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 108
GoTo _0E5D
Message Villa_Text_Houseplant
GoTo Villa_Furniture_End
End
_0D41:
Villa_Furniture_PCDesk:
PlaySE SEQ_SE_CONFIRM
LockAll
BufferPlayerName 0
Message 109
GoTo _0E5D
Message Villa_Text_PCDesk
GoTo Villa_Furniture_End
End
_0D55:
Villa_Furniture_MusicBox:
PlaySE SEQ_SE_CONFIRM
LockAll
GoTo _0D63
End
_0D63:
Message 110
Message Villa_Text_MusicBox
GoTo _0D6E
End
@@ -1032,67 +1032,67 @@ _0DC2:
End
Villa_Unused:
Message 118
Message Villa_Text_Chandelier
Return
_0DD1:
Villa_Furniture_PokemonBust:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 111
GoTo _0E5D
Message Villa_Text_PokemonBust
GoTo Villa_Furniture_End
End
_0DE2:
Villa_Furniture_PokemonBustSilver:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 112
GoTo _0E5D
Message Villa_Text_PokemonBustSilver
GoTo Villa_Furniture_End
End
_0DF3:
Villa_Furniture_Piano:
PlaySE SEQ_SE_CONFIRM
LockAll
PlayMusic SEQ_PL_PIANO
Message 113
GoTo _0E5D
Message Villa_Text_Piano
GoTo Villa_Furniture_End
End
_0E08:
Villa_Furniture_GuestSet:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 114
GoTo _0E5D
Message Villa_Text_GuestSet
GoTo Villa_Furniture_End
End
_0E19:
Villa_Furniture_WallClock:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 115
GoTo _0E5D
Message Villa_Text_WallClock
GoTo Villa_Furniture_End
End
_0E2A:
Villa_Furniture_Masterpiece:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 116
GoTo _0E5D
Message Villa_Text_Masterpiece
GoTo Villa_Furniture_End
End
_0E3B:
Villa_Furniture_TeaSet:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 117
GoTo _0E5D
Message Villa_Text_TeaSet
GoTo Villa_Furniture_End
End
_0E4C:
Villa_Furniture_Chandelier:
PlaySE SEQ_SE_CONFIRM
LockAll
Message 118
GoTo _0E5D
Message Villa_Text_Chandelier
GoTo Villa_Furniture_End
End
_0E5D:
Villa_Furniture_End:
WaitButton
CloseMessage
ReleaseAll
@@ -1329,12 +1329,12 @@ _12BF:
End
_12FC:
Message 10
Message pl_msg_00000602_00010
GoTo _1312
End
_1307:
Message 11
Message pl_msg_00000602_00011
GoTo _1312
End
@@ -1359,7 +1359,7 @@ _1332:
SetVar VAR_RESORT_VILLA_VISITOR, 2
BufferRivalName 0
BufferPlayerName 1
Message 12
Message pl_msg_00000602_00012
CloseMessage
Return
@@ -1384,7 +1384,7 @@ _1390:
SetVar VAR_RESORT_VILLA_VISITOR, 5
BufferRivalName 0
BufferPlayerName 1
Message 13
Message pl_msg_00000602_00013
CloseMessage
Return
@@ -1410,7 +1410,7 @@ _13EE:
SetFlag FLAG_VILLA_VISITOR_OUTSIDE
BufferRivalName 0
BufferPlayerName 1
Message 14
Message pl_msg_00000602_00014
CloseMessage
Return

View File

@@ -1025,134 +1025,134 @@
"garbage": 25
},
{
"id": "pl_msg_00000602_00099",
"id": "Villa_Text_Table",
"en_US": [
"The tables subtle curves accentuate\n",
"its distinctive presence."
]
},
{
"id": "pl_msg_00000602_00100",
"id": "Villa_Text_BigSofa",
"en_US": [
"A big sofa with a wonderful sense\n",
"of presence."
]
},
{
"id": "pl_msg_00000602_00101",
"id": "Villa_Text_SmallSofa",
"en_US": [
"A smaller sofa with a wonderful sense\n",
"of presence."
]
},
{
"id": "pl_msg_00000602_00102",
"id": "Villa_Text_Bed",
"en_US": [
"A canopied bed for deep, relaxing\n",
"sleep."
]
},
{
"id": "pl_msg_00000602_00103",
"id": "Villa_Text_NightTable",
"en_US": "A small night table for the bedside."
},
{
"id": "pl_msg_00000602_00104",
"id": "Villa_Text_TV",
"en_US": "A TV featuring the latest technology."
},
{
"id": "pl_msg_00000602_00105",
"id": "Villa_Text_AudioSystem",
"en_US": [
"An audio system that maximally draws\n",
"out the charms of music."
]
},
{
"id": "pl_msg_00000602_00106",
"id": "Villa_Text_Bookshelf",
"en_US": [
"The shelves are lined with books left\n",
"by Prof. Rowan."
]
},
{
"id": "pl_msg_00000602_00107",
"id": "Villa_Text_Rack",
"en_US": [
"An attractive rack that looks good with\n",
"or without things on it."
]
},
{
"id": "pl_msg_00000602_00108",
"id": "Villa_Text_Houseplant",
"en_US": [
"All houseplants give off the fragrance\n",
"of life."
]
},
{
"id": "pl_msg_00000602_00109",
"id": "Villa_Text_PCDesk",
"en_US": [
"A thin-bodied PC made for the design\n",
"conscious."
]
},
{
"id": "pl_msg_00000602_00110",
"id": "Villa_Text_MusicBox",
"en_US": [
"A handmade music box with a soothing\n",
"melody."
]
},
{
"id": "pl_msg_00000602_00111",
"id": "Villa_Text_PokemonBust",
"en_US": [
"An almost lifelike Pokémon statue.\n",
"It would be nice to have a pair."
]
},
{
"id": "pl_msg_00000602_00112",
"id": "Villa_Text_PokemonBustSilver",
"en_US": [
"An almost lifelike Pokémon statue.\n",
"It would be nice to have a pair."
]
},
{
"id": "pl_msg_00000602_00113",
"id": "Villa_Text_Piano",
"en_US": [
"Even playing a simple scale will tell you\n",
"this is a special piano."
]
},
{
"id": "pl_msg_00000602_00114",
"id": "Villa_Text_GuestSet",
"en_US": [
"A guest set that exemplifies the\n",
"meaning of comfort."
]
},
{
"id": "pl_msg_00000602_00115",
"id": "Villa_Text_WallClock",
"en_US": [
"A clock that teaches the beauty of\n",
"precisely marking time."
]
},
{
"id": "pl_msg_00000602_00116",
"id": "Villa_Text_Masterpiece",
"en_US": [
"A breathtaking masterpiece that no\n",
"words can ever do justice."
]
},
{
"id": "pl_msg_00000602_00117",
"id": "Villa_Text_TeaSet",
"en_US": [
"An exquisitely designed tea set for\n",
"luxuriantly elegant times."
]
},
{
"id": "pl_msg_00000602_00118",
"id": "Villa_Text_Chandelier",
"en_US": [
"Light makes the glass gleam, and the\n",
"glass dazzlingly reflects the light."

View File

@@ -7,7 +7,7 @@
#include "generated/map_headers.h"
#include "field/field_system.h"
#include "overlay005/ov5_021F8370.h"
#include "overlay005/villa_furniture.h"
#include "overlay006/great_marsh_tram.h"
#include "overlay008/ov8_02249960.h"
#include "overlay009/ov9_02249960.h"

View File

@@ -987,8 +987,8 @@ void VecFx32_StepDirection(int dir, VecFx32 *vec, fx32 val)
void VecFx32_SetPosFromMapCoords(int x, int z, VecFx32 *outVec)
{
outVec->x = MAP_OBJECT_COORD_TO_FX32(x);
outVec->z = MAP_OBJECT_COORD_TO_FX32(z);
outVec->x = MAP_OBJECT_COORD_CENTER_TO_FX32(x);
outVec->z = MAP_OBJECT_COORD_CENTER_TO_FX32(z);
}
void sub_02064464(MapObject *mapObj)

View File

@@ -443,7 +443,7 @@ pokeplatinum_c = files(
'overlay005/ov5_021F61BC.c',
'overlay005/ov5_021F6454.c',
'overlay005/scrcmd_move_tutor.c',
'overlay005/ov5_021F8370.c',
'overlay005/villa_furniture.c',
'overlay005/dist_world_surf_mount_renderer.c',
'overlay005/ov5_021FAF40.c',
'overlay005/field_effect_renderer.c',

View File

@@ -20,7 +20,7 @@
#include "overlay005/ov5_021E1154.h"
#include "overlay005/ov5_021EA714.h"
#include "overlay005/ov5_021EF4BC.h"
#include "overlay005/ov5_021F8370.h"
#include "overlay005/villa_furniture.h"
#include "overlay005/vs_seeker.h"
#include "overlay006/repel_step_update.h"
#include "overlay006/wild_encounters.h"
@@ -310,7 +310,7 @@ BOOL FieldInput_Process(const FieldInput *input, FieldSystem *fieldSystem)
Field_Step(fieldSystem, &playerX, &playerZ);
if (ov5_021F8410(fieldSystem, playerX, playerZ, playerDir) == TRUE) {
if (FieldSystem_TrySetVillaFurnitureScript(fieldSystem, playerX, playerZ, playerDir) == TRUE) {
return TRUE;
}
}

View File

@@ -1,487 +0,0 @@
#include "overlay005/ov5_021F8370.h"
#include <nitro.h>
#include <string.h>
#include "constants/field/dynamic_map_features.h"
#include "struct_defs/struct_02071C34.h"
#include "field/field_system.h"
#include "field/field_system_sub2_t.h"
#include "overlay005/map_prop.h"
#include "field_system.h"
#include "heap.h"
#include "persisted_map_features.h"
#include "savedata_misc.h"
#include "script_manager.h"
#include "system_flags.h"
#include "vars_flags.h"
typedef struct UnkStruct_ov5_021F8480_t UnkStruct_ov5_021F8480;
typedef struct {
s16 unk_00;
s16 unk_02;
s16 unk_04;
s16 unk_06;
} UnkStruct_ov5_021F83D4;
typedef struct {
u16 furniture;
u16 unk_02;
VecFx32 unk_04;
UnkStruct_ov5_021F83D4 unk_10;
} UnkStruct_ov5_0220192C;
typedef struct {
u32 unk_00;
} UnkStruct_ov5_022018DC;
typedef struct {
u16 unk_00;
u16 unk_02;
u32 unk_04;
MapProp *unk_08;
} UnkStruct_ov5_021F8480_sub1;
struct UnkStruct_ov5_021F8480_t {
FieldSystem *fieldSystem;
UnkStruct_02071C34 *unk_04;
UnkStruct_ov5_021F8480_sub1 unk_08[23];
};
static void ov5_021F8480(UnkStruct_ov5_021F8480 *param0, const enum VillaFurniture furniture);
static BOOL FieldSystem_OwnsVillaFurniture(FieldSystem *fieldSystem, enum VillaFurniture furniture);
static BOOL ov5_021F851C(int param0, int param1, const UnkStruct_ov5_0220192C *param2, FieldSystem *fieldSystem);
static const UnkStruct_ov5_0220192C Unk_ov5_0220192C[23];
static const u32 Unk_ov5_0220188C[20];
static const UnkStruct_ov5_022018DC Unk_ov5_022018DC[20];
void Villa_DynamicMapFeaturesInit(FieldSystem *fieldSystem)
{
int v0;
PersistedMapFeatures *v1 = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem));
UnkStruct_02071C34 *v2 = PersistedMapFeatures_GetBuffer(v1, DYNAMIC_MAP_FEATURES_VILLA);
UnkStruct_ov5_021F8480 *v3 = Heap_Alloc(HEAP_ID_FIELD1, sizeof(UnkStruct_ov5_021F8480));
memset(v3, 0, sizeof(UnkStruct_ov5_021F8480));
v3->fieldSystem = fieldSystem;
v3->unk_04 = v2;
fieldSystem->unk_04->dynamicMapFeaturesData = v3;
{
for (int i = 0; i < VILLA_FURNITURE_MAX; i++) {
if (FieldSystem_OwnsVillaFurniture(fieldSystem, i) == TRUE) {
ov5_021F8480(v3, i);
}
}
}
}
void Villa_DynamicMapFeaturesFree(FieldSystem *fieldSystem)
{
UnkStruct_ov5_021F8480 *v0 = fieldSystem->unk_04->dynamicMapFeaturesData;
Heap_Free(v0);
fieldSystem->unk_04->dynamicMapFeaturesData = NULL;
}
BOOL Villa_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding)
{
int v0;
const UnkStruct_ov5_021F83D4 *v1;
const UnkStruct_ov5_0220192C *v2 = Unk_ov5_0220192C;
for (v0 = 0; v0 < 23; v0++, v2++) {
if (ov5_021F851C(tileX, tileZ, v2, fieldSystem) == 1) {
*isColliding = 1;
return 1;
}
}
*isColliding = 0;
return 0;
}
BOOL ov5_021F8410(FieldSystem *fieldSystem, const int param1, const int param2, const int param3)
{
PersistedMapFeatures *v0 = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem));
if (PersistedMapFeatures_GetID(v0) == DYNAMIC_MAP_FEATURES_VILLA) {
int v1;
const UnkStruct_ov5_021F83D4 *v2;
const UnkStruct_ov5_0220192C *v3 = Unk_ov5_0220192C;
for (v1 = 0; v1 < 23; v1++, v3++) {
if (ov5_021F851C(param1, param2, v3, fieldSystem) == 1) {
const UnkStruct_ov5_022018DC *v4 = &Unk_ov5_022018DC[v3->furniture];
if (v4->unk_00 == 10100) {
if (param3 != 0) {
continue;
}
}
ScriptManager_Set(fieldSystem, v4->unk_00, NULL);
return 1;
}
}
}
return 0;
}
static void ov5_021F8480(UnkStruct_ov5_021F8480 *param0, const enum VillaFurniture furniture)
{
int v0, v1;
UnkStruct_ov5_021F8480_sub1 *v2;
VecFx32 v3 = { 0, 0, 0 };
int v4 = Unk_ov5_0220188C[furniture];
const UnkStruct_ov5_0220192C *v5 = Unk_ov5_0220192C;
FieldSystem *fieldSystem = param0->fieldSystem;
for (v0 = 0; v0 < 23; v0++, v5++) {
if (v5->furniture == furniture) {
v1 = 0;
v2 = param0->unk_08;
do {
if (v2->unk_00 == 0) {
v2->unk_00 = 1;
v2->unk_04 = v4;
v2->unk_02 = MapPropManager_LoadOne(fieldSystem->mapPropManager, fieldSystem->areaDataManager, v4, &v5->unk_04, &v3, fieldSystem->mapPropAnimMan);
v2->unk_08 = MapPropManager_FindLoadedPropByModelID(fieldSystem->mapPropManager, v4);
break;
}
v1++;
v2++;
} while (v1 < 23);
}
}
}
static BOOL FieldSystem_OwnsVillaFurniture(FieldSystem *fieldSystem, enum VillaFurniture furniture)
{
return SystemFlag_HandleOwnsVillaFurniture(SaveData_GetVarsFlags(fieldSystem->saveData), HANDLE_FLAG_CHECK, furniture);
}
static BOOL ov5_021F851C(int param0, int param1, const UnkStruct_ov5_0220192C *param2, FieldSystem *fieldSystem)
{
const UnkStruct_ov5_021F83D4 *v0 = &param2->unk_10;
if ((param2->unk_02 == 1) && (FieldSystem_OwnsVillaFurniture(fieldSystem, param2->furniture) == TRUE)) {
if ((param1 >= v0->unk_02) && (param1 <= v0->unk_06) && (param0 >= v0->unk_00) && (param0 <= v0->unk_04)) {
return 1;
}
}
return 0;
}
static const UnkStruct_ov5_0220192C Unk_ov5_0220192C[23] = {
{
0x0,
0x1,
{ (((0xc << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), ((0x7 << 4) * FX32_ONE) },
{
0xB,
0x5,
0xD,
0x8,
},
},
{
0x1,
0x1,
{ ((0xf << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), ((0x7 << 4) * FX32_ONE) },
{
0xE,
0x5,
0xf,
0x8,
},
},
{
0x2,
0x1,
{ (((0xd << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0xa << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0xB,
0x9,
0xD,
0xA,
},
},
{
0x3,
0x1,
{ (((0x12 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), ((0x8 << 4) * FX32_ONE) },
{
0x12,
0x6,
0x14,
0x9,
},
},
{
0x4,
0x1,
{ (((0x14 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x7 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x11,
0x6,
0x11,
0x7,
},
},
{
0x5,
0x1,
{ ((0xc << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0xB,
0x3,
0xC,
0x3,
},
},
{
0x6,
0x1,
{ (((0xe << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0xD,
0x3,
0xf,
0x3,
},
},
{
0x7,
0x1,
{ ((0x11 << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x10,
0x3,
0x11,
0x3,
},
},
{
0x8,
0x1,
{ ((0x13 << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x12,
0x3,
0x13,
0x3,
},
},
{
0x9,
0x1,
{ (((0x1 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x1,
0x3,
0x1,
0x3,
},
},
{
0x9,
0x1,
{ (((0x14 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x14,
0x3,
0x14,
0x3,
},
},
{
0x9,
0x1,
{ (((0x1 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0xb << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x1,
0xB,
0x1,
0xB,
},
},
{
0x9,
0x1,
{ (((0x14 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0xb << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x14,
0xB,
0x14,
0xB,
},
},
{
0xA,
0x1,
{ ((0x2 << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), (((0x8 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x1,
0x7,
0x2,
0x9,
},
},
{
0xB,
0x0,
{ (((0x12 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x0,
0x0,
0x0,
0x0,
},
},
{
0xC,
0x1,
{ (((0x2 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x2,
0x3,
0x2,
0x3,
},
},
{
0xD,
0x1,
{ (((0x6 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x3 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x6,
0x3,
0x6,
0x3,
},
},
{
0xE,
0x1,
{ (((0x2 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x5 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x1,
0x4,
0x2,
0x6,
},
},
{
0xF,
0x1,
{ ((0x6 << 4) * FX32_ONE), ((0 << 4) * FX32_ONE), ((0xa << 4) * FX32_ONE) },
{
0x4,
0x9,
0x7,
0xA,
},
},
{
0x10,
0x0,
{ (((0xb << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x1 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x0,
0x0,
0x0,
0x0,
},
},
{
0x11,
0x0,
{ (((0x8 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x1 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x0,
0x0,
0x0,
0x0,
},
},
{
0x12,
0x0,
{ (((0x6 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0xa << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x0,
0x0,
0x0,
0x0,
},
},
{
0x13,
0x0,
{ (((0x7 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)), ((0 << 4) * FX32_ONE), (((0x6 << 4) * FX32_ONE) + ((16 * FX32_ONE) >> 1)) },
{
0x0,
0x0,
0x0,
0x0,
},
},
};
static const u32 Unk_ov5_0220188C[20] = {
0x22F,
0x230,
0x231,
0x232,
0x233,
0x234,
0x235,
0x236,
0x237,
0x238,
0x239,
0x23A,
0x23B,
0x23C,
0x23D,
0x23E,
0x23F,
0x240,
0x241,
0x242
};
static const UnkStruct_ov5_022018DC Unk_ov5_022018DC[20] = {
{ 0x15 },
{ 0x16 },
{ 0x17 },
{ 0x18 },
{ 0x19 },
{ 0x2774 },
{ 0x1B },
{ 0x1C },
{ 0x1D },
{ 0x1E },
{ 0x1F },
{ 0x20 },
{ 0x21 },
{ 0x22 },
{ 0x23 },
{ 0x24 },
{ 0x25 },
{ 0x26 },
{ 0x27 },
{ 0x28 }
};

View File

@@ -98,8 +98,8 @@ OverworldAnimManager *SurfMountRenderer_HandleSurfBegin(MapObject *surfMountMapO
if (!syncPos) {
FieldSystem *fieldSystem = MapObject_FieldSystem(surfMountMapObj);
mapObjPos.x = MAP_OBJECT_COORD_TO_FX32(tileX);
mapObjPos.z = MAP_OBJECT_COORD_TO_FX32(tileZ);
mapObjPos.x = MAP_OBJECT_COORD_CENTER_TO_FX32(tileX);
mapObjPos.z = MAP_OBJECT_COORD_CENTER_TO_FX32(tileZ);
MapObject_RecalculatePositionHeight(fieldSystem, &mapObjPos);
} else {
VecFx32 spritePosOffset = { MAP_OBJECT_BASE_POS_OFFSET_X, MAP_OBJECT_BASE_POS_OFFSET_Y, MAP_OBJECT_BASE_POS_OFFSET_Z };

View File

@@ -0,0 +1,542 @@
#include "overlay005/villa_furniture.h"
#include <nitro.h>
#include <string.h>
#include "constants/field/dynamic_map_features.h"
#include "field/field_system.h"
#include "field/field_system_sub2_t.h"
#include "overlay005/map_prop.h"
#include "field_system.h"
#include "heap.h"
#include "map_object.h"
#include "persisted_map_features.h"
#include "savedata_misc.h"
#include "script_manager.h"
#include "system_flags.h"
#include "vars_flags.h"
#include "res/field/props/models/prop_models.naix"
#define FURNITURE_SLOTS 23
#define COLLISION_BOUNDS_NONE { 0, 0, 0, 0 }
typedef struct FurnitureCollisionBoundingBox {
s16 left;
s16 top;
s16 right;
s16 bottom;
} FurnitureCollisionBoundingBox;
typedef struct VillaFurniture {
u16 furnitureType;
u16 isCollisionEnabled;
VecFx32 position;
FurnitureCollisionBoundingBox collisionBounds;
} VillaFurniture;
typedef struct VillaFurnitureProp {
u16 isLoaded;
u16 propIdx;
u32 modelID;
MapProp *mapProp;
} VillaFurnitureProp;
typedef struct VillaDynamicMapData {
FieldSystem *fieldSystem;
VillaPersistedData *persistedData;
VillaFurnitureProp furnitureProps[FURNITURE_SLOTS];
} VillaDynamicMapData;
static void LoadFurniturePropModel(VillaDynamicMapData *villaDynamicData, const enum VillaFurnitureType furnitureType);
static BOOL FieldSystem_OwnsVillaFurniture(FieldSystem *fieldSystem, enum VillaFurnitureType furnitureType);
static BOOL CheckFurnitureCollision(int tileX, int tileZ, const VillaFurniture *furniture, FieldSystem *fieldSystem);
static const VillaFurniture sVillaFurnitures[FURNITURE_SLOTS];
static const u32 sVillaFurnitureModelIDs[VILLA_FURNITURE_MAX];
static const u32 sVillaFurnitureScriptIDs[VILLA_FURNITURE_MAX];
void Villa_DynamicMapFeaturesInit(FieldSystem *fieldSystem)
{
PersistedMapFeatures *persistedDatas = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem));
VillaPersistedData *villaPersistedData = PersistedMapFeatures_GetBuffer(persistedDatas, DYNAMIC_MAP_FEATURES_VILLA);
VillaDynamicMapData *villaDynamicData = Heap_Alloc(HEAP_ID_FIELD1, sizeof(VillaDynamicMapData));
memset(villaDynamicData, 0, sizeof(VillaDynamicMapData));
villaDynamicData->fieldSystem = fieldSystem;
villaDynamicData->persistedData = villaPersistedData;
fieldSystem->unk_04->dynamicMapFeaturesData = villaDynamicData;
for (int i = 0; i < VILLA_FURNITURE_MAX; i++) {
if (FieldSystem_OwnsVillaFurniture(fieldSystem, i) == TRUE) {
LoadFurniturePropModel(villaDynamicData, i);
}
}
}
void Villa_DynamicMapFeaturesFree(FieldSystem *fieldSystem)
{
VillaDynamicMapData *villaDynamicData = fieldSystem->unk_04->dynamicMapFeaturesData;
Heap_Free(villaDynamicData);
fieldSystem->unk_04->dynamicMapFeaturesData = NULL;
}
BOOL Villa_DynamicMapFeaturesCheckCollision(FieldSystem *fieldSystem, const int tileX, const int tileZ, const fx32 height, BOOL *isColliding)
{
int i;
const VillaFurniture *furniture = sVillaFurnitures;
for (i = 0; i < FURNITURE_SLOTS; i++, furniture++) {
if (CheckFurnitureCollision(tileX, tileZ, furniture, fieldSystem) == TRUE) {
*isColliding = TRUE;
return TRUE;
}
}
*isColliding = FALSE;
return FALSE;
}
BOOL FieldSystem_TrySetVillaFurnitureScript(FieldSystem *fieldSystem, const int tileX, const int tileZ, const int direction)
{
PersistedMapFeatures *persistedDatas = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem));
if (PersistedMapFeatures_GetID(persistedDatas) == DYNAMIC_MAP_FEATURES_VILLA) {
int i;
const VillaFurniture *furniture = sVillaFurnitures;
for (i = 0; i < FURNITURE_SLOTS; i++, furniture++) {
if (CheckFurnitureCollision(tileX, tileZ, furniture, fieldSystem) == TRUE) {
u32 furnitureScript = sVillaFurnitureScriptIDs[furniture->furnitureType];
if (furnitureScript == SCRIPT_ID_OFFSET_TV_BROADCAST && direction != DIR_NORTH) {
continue;
}
ScriptManager_Set(fieldSystem, furnitureScript, NULL);
return TRUE;
}
}
}
return FALSE;
}
static void LoadFurniturePropModel(VillaDynamicMapData *villaDynamicData, const enum VillaFurnitureType furnitureType)
{
VillaFurnitureProp *furnitureProp;
VecFx32 rotation = { 0, 0, 0 };
int modelID = sVillaFurnitureModelIDs[furnitureType];
const VillaFurniture *furniture = sVillaFurnitures;
FieldSystem *fieldSystem = villaDynamicData->fieldSystem;
for (int i = 0; i < FURNITURE_SLOTS; i++, furniture++) {
if (furniture->furnitureType == furnitureType) {
furnitureProp = villaDynamicData->furnitureProps;
for (int j = 0; j < FURNITURE_SLOTS; j++) {
if (!furnitureProp->isLoaded) {
furnitureProp->isLoaded = TRUE;
furnitureProp->modelID = modelID;
furnitureProp->propIdx = MapPropManager_LoadOne(fieldSystem->mapPropManager, fieldSystem->areaDataManager, modelID, &furniture->position, &rotation, fieldSystem->mapPropAnimMan);
furnitureProp->mapProp = MapPropManager_FindLoadedPropByModelID(fieldSystem->mapPropManager, modelID);
break;
}
furnitureProp++;
}
}
}
}
static BOOL FieldSystem_OwnsVillaFurniture(FieldSystem *fieldSystem, enum VillaFurnitureType furnitureType)
{
return SystemFlag_HandleOwnsVillaFurniture(SaveData_GetVarsFlags(fieldSystem->saveData), HANDLE_FLAG_CHECK, furnitureType);
}
static BOOL CheckFurnitureCollision(int tileX, int tileZ, const VillaFurniture *furniture, FieldSystem *fieldSystem)
{
const FurnitureCollisionBoundingBox *collisionBounds = &furniture->collisionBounds;
if (furniture->isCollisionEnabled == TRUE && FieldSystem_OwnsVillaFurniture(fieldSystem, furniture->furnitureType) == TRUE) {
if (tileZ >= collisionBounds->top && tileZ <= collisionBounds->bottom && tileX >= collisionBounds->left && tileX <= collisionBounds->right) {
return TRUE;
}
}
return FALSE;
}
static const VillaFurniture sVillaFurnitures[FURNITURE_SLOTS] = {
{
.furnitureType = VILLA_FURNITURE_TABLE,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(12),
.y = 0,
.z = MAP_OBJECT_COORD_EDGE_TO_FX32(7),
},
.collisionBounds = {
.left = 11,
.top = 5,
.right = 13,
.bottom = 8,
},
},
{
.furnitureType = VILLA_FURNITURE_BIG_SOFA,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(15),
.y = 0,
.z = MAP_OBJECT_COORD_EDGE_TO_FX32(7),
},
.collisionBounds = {
.left = 14,
.top = 5,
.right = 15,
.bottom = 8,
},
},
{
.furnitureType = VILLA_FURNITURE_SMALL_SOFA,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(13),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(10),
},
.collisionBounds = {
.left = 11,
.top = 9,
.right = 13,
.bottom = 10,
},
},
{
.furnitureType = VILLA_FURNITURE_BED,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(18),
.y = 0,
.z = MAP_OBJECT_COORD_EDGE_TO_FX32(8),
},
.collisionBounds = {
.left = 18,
.top = 6,
.right = 20,
.bottom = 9,
},
},
{
.furnitureType = VILLA_FURNITURE_NIGHT_TABLE,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(20),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(7),
},
.collisionBounds = {
.left = 17,
.top = 6,
.right = 17,
.bottom = 7,
},
},
{
.furnitureType = VILLA_FURNITURE_TV,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(12),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 11,
.top = 3,
.right = 12,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_AUDIO_SYSTEM,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(14),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 13,
.top = 3,
.right = 15,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_BOOKSHELF,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(17),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 16,
.top = 3,
.right = 17,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_RACK,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(19),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 18,
.top = 3,
.right = 19,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_HOUSEPLANT,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(1),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 1,
.top = 3,
.right = 1,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_HOUSEPLANT,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(20),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 20,
.top = 3,
.right = 20,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_HOUSEPLANT,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(1),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(11),
},
.collisionBounds = {
.left = 1,
.top = 11,
.right = 1,
.bottom = 11,
},
},
{
.furnitureType = VILLA_FURNITURE_HOUSEPLANT,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(20),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(11),
},
.collisionBounds = {
.left = 20,
.top = 11,
.right = 20,
.bottom = 11,
},
},
{
.furnitureType = VILLA_FURNITURE_PC_DESK,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(2),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(8),
},
.collisionBounds = {
.left = 1,
.top = 7,
.right = 2,
.bottom = 9,
},
},
{
.furnitureType = VILLA_FURNITURE_MUSIC_BOX,
.isCollisionEnabled = FALSE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(18),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = COLLISION_BOUNDS_NONE,
},
{
.furnitureType = VILLA_FURNITURE_POKEMON_BUST,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(2),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 2,
.top = 3,
.right = 2,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_POKEMON_BUST_SILVER,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(6),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(3),
},
.collisionBounds = {
.left = 6,
.top = 3,
.right = 6,
.bottom = 3,
},
},
{
.furnitureType = VILLA_FURNITURE_PIANO,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(2),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(5),
},
.collisionBounds = {
.left = 1,
.top = 4,
.right = 2,
.bottom = 6,
},
},
{
.furnitureType = VILLA_FURNITURE_GUEST_SET,
.isCollisionEnabled = TRUE,
.position = {
.x = MAP_OBJECT_COORD_EDGE_TO_FX32(6),
.y = 0,
.z = MAP_OBJECT_COORD_EDGE_TO_FX32(10),
},
.collisionBounds = {
.left = 4,
.top = 9,
.right = 7,
.bottom = 10,
},
},
{
.furnitureType = VILLA_FURNITURE_WALL_CLOCK,
.isCollisionEnabled = FALSE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(11),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(1),
},
.collisionBounds = COLLISION_BOUNDS_NONE,
},
{
.furnitureType = VILLA_FURNITURE_MASTERPIECE,
.isCollisionEnabled = FALSE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(8),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(1),
},
.collisionBounds = COLLISION_BOUNDS_NONE,
},
{
.furnitureType = VILLA_FURNITURE_TEA_SET,
.isCollisionEnabled = FALSE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(6),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(10),
},
.collisionBounds = COLLISION_BOUNDS_NONE,
},
{
.furnitureType = VILLA_FURNITURE_CHANDELIER,
.isCollisionEnabled = FALSE,
.position = {
.x = MAP_OBJECT_COORD_CENTER_TO_FX32(7),
.y = 0,
.z = MAP_OBJECT_COORD_CENTER_TO_FX32(6),
},
.collisionBounds = COLLISION_BOUNDS_NONE,
},
};
static const u32 sVillaFurnitureModelIDs[VILLA_FURNITURE_MAX] = {
[VILLA_FURNITURE_TABLE] = villa_furniture_table_nsbmd,
[VILLA_FURNITURE_BIG_SOFA] = villa_furniture_big_sofa_nsbmd,
[VILLA_FURNITURE_SMALL_SOFA] = villa_furniture_small_sofa_nsbmd,
[VILLA_FURNITURE_BED] = villa_furniture_bed_nsbmd,
[VILLA_FURNITURE_NIGHT_TABLE] = villa_furniture_night_table_nsbmd,
[VILLA_FURNITURE_TV] = villa_furniture_tv_nsbmd,
[VILLA_FURNITURE_AUDIO_SYSTEM] = villa_furniture_audio_system_nsbmd,
[VILLA_FURNITURE_BOOKSHELF] = villa_furniture_bookshelf_nsbmd,
[VILLA_FURNITURE_RACK] = villa_furniture_rack_nsbmd,
[VILLA_FURNITURE_HOUSEPLANT] = villa_furniture_houseplant_nsbmd,
[VILLA_FURNITURE_PC_DESK] = villa_furniture_pc_desk_nsbmd,
[VILLA_FURNITURE_MUSIC_BOX] = villa_furniture_music_box_nsbmd,
[VILLA_FURNITURE_POKEMON_BUST] = villa_furniture_pokemon_bust_nsbmd,
[VILLA_FURNITURE_POKEMON_BUST_SILVER] = villa_furniture_pokemon_bust_silver_nsbmd,
[VILLA_FURNITURE_PIANO] = villa_furniture_piano_nsbmd,
[VILLA_FURNITURE_GUEST_SET] = villa_furniture_guest_set_nsbmd,
[VILLA_FURNITURE_WALL_CLOCK] = villa_furniture_wall_clock_nsbmd,
[VILLA_FURNITURE_MASTERPIECE] = villa_furniture_masterpiece_nsbmd,
[VILLA_FURNITURE_TEA_SET] = villa_furniture_tea_set_nsbmd,
[VILLA_FURNITURE_CHANDELIER] = villa_furniture_chandelier_nsbmd,
};
// TODO: generate script IDs and replace magic numbers with generated script IDs
static const u32 sVillaFurnitureScriptIDs[VILLA_FURNITURE_MAX] = {
[VILLA_FURNITURE_TABLE] = 0x15,
[VILLA_FURNITURE_BIG_SOFA] = 0x16,
[VILLA_FURNITURE_SMALL_SOFA] = 0x17,
[VILLA_FURNITURE_BED] = 0x18,
[VILLA_FURNITURE_NIGHT_TABLE] = 0x19,
[VILLA_FURNITURE_TV] = SCRIPT_ID_OFFSET_TV_BROADCAST,
[VILLA_FURNITURE_AUDIO_SYSTEM] = 0x1B,
[VILLA_FURNITURE_BOOKSHELF] = 0x1C,
[VILLA_FURNITURE_RACK] = 0x1D,
[VILLA_FURNITURE_HOUSEPLANT] = 0x1E,
[VILLA_FURNITURE_PC_DESK] = 0x1F,
[VILLA_FURNITURE_MUSIC_BOX] = 0x20,
[VILLA_FURNITURE_POKEMON_BUST] = 0x21,
[VILLA_FURNITURE_POKEMON_BUST_SILVER] = 0x22,
[VILLA_FURNITURE_PIANO] = 0x23,
[VILLA_FURNITURE_GUEST_SET] = 0x24,
[VILLA_FURNITURE_WALL_CLOCK] = 0x25,
[VILLA_FURNITURE_MASTERPIECE] = 0x26,
[VILLA_FURNITURE_TEA_SET] = 0x27,
[VILLA_FURNITURE_CHANDELIER] = 0x28
};

View File

@@ -2232,14 +2232,14 @@ static const u32 sEternaGymClockModelIds[2] = {
static const VecFx32 sEternaGymClockHandsCenter[2] = {
{
MAP_OBJECT_COORD_TO_FX32(ETERNA_CLOCK_CENTER_X),
MAP_OBJECT_COORD_CENTER_TO_FX32(ETERNA_CLOCK_CENTER_X),
FX32_ONE * 12,
MAP_OBJECT_COORD_TO_FX32(ETERNA_CLOCK_CENTER_Z),
MAP_OBJECT_COORD_CENTER_TO_FX32(ETERNA_CLOCK_CENTER_Z),
},
{
MAP_OBJECT_COORD_TO_FX32(ETERNA_CLOCK_CENTER_X),
MAP_OBJECT_COORD_CENTER_TO_FX32(ETERNA_CLOCK_CENTER_X),
FX32_ONE * 13,
MAP_OBJECT_COORD_TO_FX32(ETERNA_CLOCK_CENTER_Z),
MAP_OBJECT_COORD_CENTER_TO_FX32(ETERNA_CLOCK_CENTER_Z),
}
};

View File

@@ -3717,7 +3717,7 @@ static BOOL DistWorldPlatformProp_AnimInit(OverworldAnimManager *animMan, void *
}
VecFx32_SetPosFromMapCoords(ghostPropTemplate->tileX, ghostPropTemplate->tileZ, &platformProp->initialPos);
platformProp->initialPos.y = MAP_OBJECT_COORD_TO_FX32(ghostPropTemplate->tileY);
platformProp->initialPos.y = MAP_OBJECT_COORD_CENTER_TO_FX32(ghostPropTemplate->tileY);
const VecFx32 *initialPosOffset = &sPropInitialPosOffsetByKind[ghostPropTemplate->propKind];
platformProp->initialPos.x += initialPosOffset->x;
@@ -3884,7 +3884,7 @@ static BOOL DistWorldObstacleProp_AnimInit(OverworldAnimManager *animMan, void *
}
VecFx32_SetPosFromMapCoords(ghostPropTemplate->tileX, ghostPropTemplate->tileZ, &obstacleProp->pos);
obstacleProp->pos.y = MAP_OBJECT_COORD_TO_FX32(ghostPropTemplate->tileY);
obstacleProp->pos.y = MAP_OBJECT_COORD_CENTER_TO_FX32(ghostPropTemplate->tileY);
const VecFx32 *initialPosOffset = &sPropInitialPosOffsetByKind[ghostPropTemplate->propKind];
obstacleProp->pos.x += initialPosOffset->x;
@@ -6323,7 +6323,7 @@ static int DistWorldMovingPlatformProp_AnimInit(OverworldAnimManager *animMan, v
}
VecFx32_SetPosFromMapCoords(userData->tileX, userData->tileZ, &movingPlatformProp->pos);
movingPlatformProp->pos.y = MAP_OBJECT_COORD_TO_FX32(userData->tileY);
movingPlatformProp->pos.y = MAP_OBJECT_COORD_CENTER_TO_FX32(userData->tileY);
const VecFx32 *initialPosOffset = &sPropInitialPosOffsetByKind[userData->propKind];
movingPlatformProp->pos.x += initialPosOffset->x;
@@ -7209,7 +7209,7 @@ static BOOL DistWorldSimpleProp_AnimInit(OverworldAnimManager *animMan, void *co
}
VecFx32_SetPosFromMapCoords(simplePropTemplate->tileX, simplePropTemplate->tileZ, &simpleProp->pos);
simpleProp->pos.y = MAP_OBJECT_COORD_TO_FX32(simplePropTemplate->tileY);
simpleProp->pos.y = MAP_OBJECT_COORD_CENTER_TO_FX32(simplePropTemplate->tileY);
const VecFx32 *initialPosOffset = &sPropInitialPosOffsetByKind[simplePropTemplate->propKind];
simpleProp->pos.x += initialPosOffset->x;

View File

@@ -10,10 +10,10 @@
#include "struct_defs/struct_02071B6C.h"
#include "struct_defs/struct_02071BF8.h"
#include "struct_defs/struct_02071C18.h"
#include "struct_defs/struct_02071C34.h"
#include "field/field_system.h"
#include "field/field_system_sub2_t.h"
#include "overlay005/villa_furniture.h"
#include "overlay006/great_marsh_tram.h"
#include "overlay008/ov8_02249960.h"
#include "overlay009/ov9_02249960.h"
@@ -137,8 +137,8 @@ void PersistedMapFeatures_InitForVilla(FieldSystem *fieldSystem)
PersistedMapFeatures *persistedMapFeatures = MiscSaveBlock_GetPersistedMapFeatures(FieldSystem_GetSaveData(fieldSystem));
PersistedMapFeatures_InitWithID(persistedMapFeatures, DYNAMIC_MAP_FEATURES_VILLA);
UnkStruct_02071C34 *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_VILLA);
memset(data, 0, sizeof(UnkStruct_02071C34));
VillaPersistedData *data = PersistedMapFeatures_GetBuffer(persistedMapFeatures, DYNAMIC_MAP_FEATURES_VILLA);
memset(data, 0, sizeof(VillaPersistedData));
}
void PersistedMapFeatures_InitForDistortionWorld(FieldSystem *fieldSystem)

View File

@@ -490,7 +490,7 @@ void SystemFlag_SetConnectedToWiFi(VarsFlags *varsFlags)
SetFlag(varsFlags, FLAG_CONNECTED_TO_WIFI);
}
BOOL SystemFlag_HandleOwnsVillaFurniture(VarsFlags *varsFlags, enum HandleFlagOp op, enum VillaFurniture furniture)
BOOL SystemFlag_HandleOwnsVillaFurniture(VarsFlags *varsFlags, enum HandleFlagOp op, enum VillaFurnitureType furniture)
{
GF_ASSERT(furniture < VILLA_FURNITURE_MAX);
return HandleFlag(varsFlags, op, FLAG_VILLA_FURNITURE_START + furniture);