isle/LEGO1/legoobjectfactory.cpp
2023-12-26 14:42:53 -05:00

138 lines
3.8 KiB
C++

#include "legoobjectfactory.h"
#include "decomp.h"
#include "LegoModelPresenter.h"
#include "LegoTexturePresenter.h"
#include "LegoPhonemePresenter.h"
#include "LegoFlcTexturePresenter.h"
#include "LegoEntityPresenter.h"
#include "LegoActorPresenter.h"
#include "LegoWorldPresenter.h"
#include "LegoWorld.h"
#include "LegoPalettePresenter.h"
#include "LegoPathPresenter.h"
#include "LegoAnimPresenter.h"
#include "LegoLoopingAnimPresenter.h"
#include "LegoLocomotionAnimPresenter.h"
#include "LegoHideAnimPresenter.h"
#include "LegoPartPresenter.h"
#include "LegoCarBuildAnimPresenter.h"
#include "LegoActionControlPresenter.h"
#include "MxVideoPresenter.h"
#include "LegoLoadCacheSoundPresenter.h"
#include "Lego3DWavePresenter.h"
#include "LegoActor.h"
#include "LegoPathActor.h"
//#include "LegoRaceCar.h"
#include "LegoJetski.h"
#include "JetskiRace.h"
#include "LegoEntity.h"
#include "LegoCarRaceActor.h"
#include "LegoJetskiRaceActor.h"
#include "LegoCarBuild.h"
#include "Infocenter.h"
#include "LegoAnimActor.h"
#include "MxControlPresenter.h"
#include "RegistrationBook.h"
#include "HistoryBook.h"
#include "ElevatorBottom.h"
#include "InfocenterDoor.h"
#include "Score.h"
#include "ScoreState.h"
#include "Hospital.h"
#include "Isle.h"
#include "Police.h"
#include "GasStation.h"
//#include "LegoAct2.h"
#include "LegoAct2State.h"
#include "CarRace.h"
//#include "LegoRaceCarBuildState.h"
//#include "LegoCopterBuildState.h"
//#include "LegoDuneCarBuildState.h"
//#include "LegoJetskiBuildState.h"
#include "HospitalState.h"
#include "InfocenterState.h"
#include "PoliceState.h"
#include "GasStationState.h"
#include "SkateBoard.h"
#include "Helicopter.h"
#include "HelicopterState.h"
#include "DuneBuggy.h"
#include "Pizza.h"
#include "PizzaMissionState.h"
//#include "Act2Actor.h"
#include "Act2Brick.h"
//#include "Act2GenActor.h"
#include "Act2PoliceStation.h"
#include "Act3.h"
#include "Act3State.h"
#include "Doors.h"
#include "LegoAnimMMPresenter.h"
#include "RaceCar.h"
#include "Jetski.h"
#include "Bike.h"
#include "Motorcycle.h"
#include "Ambulance.h"
#include "AmbulanceMissionState.h"
#include "TowTrack.h"
#include "TowTrackMissionState.h"
//#include "Act3Cop.h"
//#include "Act3Brickster.h"
#include "Act3Shark.h"
#include "BumpBouy.h"
#include "Act3Actor.h"
#include "JetskiRaceState.h"
#include "CarRaceState.h"
#include "Act1State.h"
#include "Pizzeria.h"
#include "PizzeriaState.h"
#include "InfoCenterEntity.h"
#include "HospitalEntity.h"
#include "GasStationEntity.h"
#include "PoliceEntity.h"
#include "BeachHouseEntity.h"
#include "RaceStandsEntity.h"
#include "JukeBoxEntity.h"
#include "RadioState.h"
//#include "CaveEntity.h"
//#include "JailEntity.h"
#include "MxCompositeMediaPresenter.h"
#include "Jukebox.h"
#include "JukeBoxState.h"
//#include "RaceSkel.h"
#include "AnimState.h"
// TODO: Uncomment once we have all the relevant types ready
// DECOMP_SIZE_ASSERT(LegoObjectFactory, 0x1c8);
// FUNCTION: LEGO1 0x10006e40
LegoObjectFactory::LegoObjectFactory()
{
#define X(V) this->m_id##V = MxAtomId(#V, LookupMode_Exact);
FOR_LEGOOBJECTFACTORY_OBJECTS(X)
#undef X
}
// FUNCTION: LEGO1 0x10009a90
MxCore* LegoObjectFactory::Create(const char* p_name)
{
MxAtomId atom(p_name, LookupMode_Exact);
#define X(V) \
if (this->m_id##V == atom) { \
return new V; \
} \
else
FOR_LEGOOBJECTFACTORY_OBJECTS(X)
#undef X
{
return MxObjectFactory::Create(p_name);
}
}
// FUNCTION: LEGO1 0x1000fb30
void LegoObjectFactory::Destroy(MxCore* p_object)
{
delete p_object;
}