mirror of https://github.com/OpenRCT2/OpenRCT2.git
Implemented object unload.
Refactored calls to the function. No need to pass the object type.
This commit is contained in:
parent
7527a74d7d
commit
ab7e1da84e
|
@ -151,7 +151,7 @@ void editor_convert_save_to_scenario()
|
|||
|
||||
rct_stex_entry* stex = g_stexEntries[0];
|
||||
if ((int)stex != 0xFFFFFFFF) {
|
||||
object_unload(0, &object_entry_groups[OBJECT_TYPE_SCENARIO_TEXT].entries[0]);
|
||||
object_unload((rct_object_entry*)&object_entry_groups[OBJECT_TYPE_SCENARIO_TEXT].entries[0]);
|
||||
reset_loaded_objects();
|
||||
|
||||
format_string(s6Info->details, STR_NO_DETAILS_YET, NULL);
|
||||
|
@ -501,7 +501,7 @@ static int editor_read_s6(const char *path)
|
|||
|
||||
rct_stex_entry* stex = g_stexEntries[0];
|
||||
if ((int)stex != 0xFFFFFFFF) {
|
||||
object_unload(0, &object_entry_groups[OBJECT_TYPE_SCENARIO_TEXT].entries[0]);
|
||||
object_unload((rct_object_entry*)&object_entry_groups[OBJECT_TYPE_SCENARIO_TEXT].entries[0]);
|
||||
reset_loaded_objects();
|
||||
|
||||
format_string(s6Info->details, STR_NO_DETAILS_YET, NULL);
|
||||
|
|
14
src/object.c
14
src/object.c
|
@ -333,9 +333,19 @@ int object_load_packed(FILE *file)
|
|||
*
|
||||
* rct2: 0x006A9CAF
|
||||
*/
|
||||
void object_unload(int groupIndex, rct_object_entry_extended *entry)
|
||||
void object_unload(rct_object_entry *entry)
|
||||
{
|
||||
RCT2_CALLPROC_X(0x006A9CAF, 0, groupIndex, 0, 0, 0, 0, (int)entry);
|
||||
uint8 object_type, object_index;
|
||||
if (!find_object_in_entry_group(entry, &object_type, &object_index)){
|
||||
return;
|
||||
}
|
||||
|
||||
uint8* chunk = object_entry_groups[object_type].chunks[object_index];
|
||||
|
||||
object_paint(object_type, 1, 0, 0, 0, (int)chunk, 0, 0);
|
||||
|
||||
rct2_free(chunk);
|
||||
object_entry_groups[object_type].chunks[object_index] = (char*)-1;
|
||||
}
|
||||
|
||||
int object_entry_compare(const rct_object_entry *a, const rct_object_entry *b)
|
||||
|
|
|
@ -101,7 +101,7 @@ void object_unload_all();
|
|||
int check_object_entry(rct_object_entry *entry);
|
||||
int object_load(int groupIndex, rct_object_entry *entry, int* chunk_size);
|
||||
int object_load_file(int groupIndex, const rct_object_entry *entry, int* chunkSize, const rct_object_entry *installedObject);
|
||||
void object_unload(int groupIndex, rct_object_entry_extended *entry);
|
||||
void object_unload(rct_object_entry *entry);
|
||||
int object_get_scenario_text(rct_object_entry *entry);
|
||||
void object_free_scenario_text();
|
||||
int object_get_length(rct_object_entry *entry);
|
||||
|
|
|
@ -576,7 +576,7 @@ void object_unload_all()
|
|||
for (i = 0; i < OBJECT_ENTRY_GROUP_COUNT; i++)
|
||||
for (j = 0; j < object_entry_group_counts[i]; j++)
|
||||
if (object_entry_groups[i].chunks[j] != (uint8*)0xFFFFFFFF)
|
||||
object_unload(j, &object_entry_groups[i].entries[j]);
|
||||
object_unload((rct_object_entry*)&object_entry_groups[i].entries[j]);
|
||||
|
||||
reset_loaded_objects();
|
||||
}
|
||||
|
@ -727,7 +727,7 @@ static uint32 install_object_entry(rct_object_entry* entry, rct_object_entry* in
|
|||
log_error("Incorrect number of vanilla RCT2 objects.");
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_ORIGINAL_RCT2_OBJECT_COUNT, uint32)--;
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_OBJECT_LIST_NO_ITEMS, uint32)--;
|
||||
object_unload(objectType, (rct_object_entry_extended*)entry);
|
||||
object_unload(entry);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
@ -788,7 +788,7 @@ static uint32 install_object_entry(rct_object_entry* entry, rct_object_entry* in
|
|||
|
||||
uint32 size_of_object = installed_entry_pointer - (uint8*)installed_entry;
|
||||
|
||||
object_unload(objectType, (rct_object_entry_extended*)entry);
|
||||
object_unload(entry);
|
||||
|
||||
return size_of_object;
|
||||
}
|
||||
|
|
|
@ -608,7 +608,7 @@ void unload_unselected_objects(){
|
|||
for (int i = RCT2_GLOBAL(RCT2_ADDRESS_OBJECT_LIST_NO_ITEMS, uint32); i > 0; --i){
|
||||
if (!(*selection_flags & OBJECT_SELECTION_FLAG_SELECTED)){
|
||||
remove_selected_objects_from_research(installedObject);
|
||||
object_unload(0, (rct_object_entry_extended*)installedObject);
|
||||
object_unload(installedObject);
|
||||
}
|
||||
selection_flags++;
|
||||
installedObject = object_get_next(installedObject);
|
||||
|
|
Loading…
Reference in New Issue