mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-26 19:55:44 +00:00
SLUDGE: Refactor save/load costume to Persona
This commit is contained in:
parent
53c79fdde9
commit
2cf79dc67c
@ -214,7 +214,7 @@ bool saveVariable(Variable *from, Common::WriteStream *stream) {
|
||||
return saveStackRef(from->varData.theStack, stream);
|
||||
|
||||
case SVT_COSTUME:
|
||||
g_sludge->_peopleMan->saveCostume(from->varData.costumeHandler, stream);
|
||||
from->varData.costumeHandler->save(stream);
|
||||
return false;
|
||||
|
||||
case SVT_ANIM:
|
||||
@ -253,7 +253,7 @@ bool loadVariable(Variable *to, Common::SeekableReadStream *stream) {
|
||||
to->varData.costumeHandler = new Persona;
|
||||
if (!checkNew(to->varData.costumeHandler))
|
||||
return false;
|
||||
g_sludge->_peopleMan->loadCostume(to->varData.costumeHandler, stream);
|
||||
to->varData.costumeHandler->load(stream);
|
||||
return true;
|
||||
|
||||
case SVT_ANIM:
|
||||
|
@ -158,6 +158,33 @@ bool PersonaAnimation::load(Common::SeekableReadStream *stream) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Persona::save(Common::WriteStream *stream) {
|
||||
int a;
|
||||
stream->writeUint16BE(numDirections);
|
||||
for (a = 0; a < numDirections * 3; a++) {
|
||||
if (!animation[a]->save(stream))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Persona::load(Common::SeekableReadStream *stream) {
|
||||
int a;
|
||||
numDirections = stream->readUint16BE();
|
||||
animation = new PersonaAnimation *[numDirections * 3];
|
||||
if (!checkNew(animation))
|
||||
return false;
|
||||
for (a = 0; a < numDirections * 3; a++) {
|
||||
animation[a] = new PersonaAnimation ;
|
||||
if (!checkNew(animation[a]))
|
||||
return false;
|
||||
|
||||
if (!animation[a]->load(stream))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
PeopleManager::PeopleManager(SludgeEngine *vm) {
|
||||
_vm = vm;
|
||||
_allPeople = nullptr;
|
||||
@ -971,33 +998,6 @@ void PeopleManager::removeOneCharacter(int i) {
|
||||
}
|
||||
}
|
||||
|
||||
bool PeopleManager::saveCostume(Persona *cossy, Common::WriteStream *stream) {
|
||||
int a;
|
||||
stream->writeUint16BE(cossy->numDirections);
|
||||
for (a = 0; a < cossy->numDirections * 3; a++) {
|
||||
if (!cossy->animation[a]->save(stream))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PeopleManager::loadCostume(Persona *cossy, Common::SeekableReadStream *stream) {
|
||||
int a;
|
||||
cossy->numDirections = stream->readUint16BE();
|
||||
cossy->animation = new PersonaAnimation *[cossy->numDirections * 3];
|
||||
if (!checkNew(cossy->animation))
|
||||
return false;
|
||||
for (a = 0; a < cossy->numDirections * 3; a++) {
|
||||
cossy->animation[a] = new PersonaAnimation ;
|
||||
if (!checkNew(cossy->animation[a]))
|
||||
return false;
|
||||
|
||||
if (!cossy->animation[a]->load(stream))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PeopleManager::savePeople(Common::WriteStream *stream) {
|
||||
OnScreenPerson *me = _allPeople;
|
||||
int countPeople = 0, a;
|
||||
@ -1018,7 +1018,7 @@ bool PeopleManager::savePeople(Common::WriteStream *stream) {
|
||||
stream->writeFloatLE(me->x);
|
||||
stream->writeFloatLE(me->y);
|
||||
|
||||
saveCostume(me->myPersona, stream);
|
||||
me->myPersona->save(stream);
|
||||
me->myAnim->save(stream);
|
||||
stream->writeByte(me->myAnim == me->lastUsedAnim);
|
||||
|
||||
@ -1094,7 +1094,7 @@ bool PeopleManager::loadPeople(Common::SeekableReadStream *stream) {
|
||||
me->x = stream->readFloatLE();
|
||||
me->y = stream->readFloatLE();
|
||||
|
||||
loadCostume(me->myPersona, stream);
|
||||
me->myPersona->load(stream);
|
||||
me->myAnim->load(stream);
|
||||
|
||||
me->lastUsedAnim = stream->readByte() ? me->myAnim : NULL;
|
||||
|
@ -65,6 +65,10 @@ struct PersonaAnimation {
|
||||
struct Persona {
|
||||
PersonaAnimation **animation;
|
||||
int numDirections;
|
||||
|
||||
// Save & load
|
||||
bool save(Common::WriteStream *stream);
|
||||
bool load(Common::SeekableReadStream *stream);
|
||||
};
|
||||
|
||||
struct OnScreenPerson {
|
||||
@ -135,8 +139,6 @@ public:
|
||||
// Loading and saving
|
||||
bool savePeople(Common::WriteStream *stream);
|
||||
bool loadPeople(Common::SeekableReadStream *stream);
|
||||
bool saveCostume(Persona *cossy, Common::WriteStream *stream);
|
||||
bool loadCostume(Persona *cossy, Common::SeekableReadStream *stream);
|
||||
|
||||
// Freeze
|
||||
void freeze(FrozenStuffStruct *frozenStuff);
|
||||
|
Loading…
Reference in New Issue
Block a user