Files
QtGameMaker/src/projectcontainer.cpp
T

387 lines
9.1 KiB
C++
Raw Normal View History

2022-01-09 06:42:13 +01:00
#include "projectcontainer.h"
template<> std::list<Sprite> &ProjectContainer::containerFor() { return sprites; }
template<> const std::list<Sprite> &ProjectContainer::containerFor() const { return sprites; }
template<> std::list<Sound> &ProjectContainer::containerFor() { return sounds; }
template<> const std::list<Sound> &ProjectContainer::containerFor() const { return sounds; }
template<> std::list<Background> &ProjectContainer::containerFor() { return backgrounds; }
template<> const std::list<Background> &ProjectContainer::containerFor() const { return backgrounds; }
template<> std::list<Path> &ProjectContainer::containerFor() { return paths; }
template<> const std::list<Path> &ProjectContainer::containerFor() const { return paths; }
template<> std::list<Script> &ProjectContainer::containerFor() { return scripts; }
template<> const std::list<Script> &ProjectContainer::containerFor() const { return scripts; }
template<> std::list<Font> &ProjectContainer::containerFor() { return fonts; }
template<> const std::list<Font> &ProjectContainer::containerFor() const { return fonts; }
template<> std::list<TimeLine> &ProjectContainer::containerFor() { return timeLines; }
template<> const std::list<TimeLine> &ProjectContainer::containerFor() const { return timeLines; }
template<> std::list<Object> &ProjectContainer::containerFor() { return objects; }
template<> const std::list<Object> &ProjectContainer::containerFor() const { return objects; }
template<> std::list<Room> &ProjectContainer::containerFor() { return rooms; }
template<> const std::list<Room> &ProjectContainer::containerFor() const { return rooms; }
template<typename T, std::size_t Tsize>
QDataStream &operator<<(QDataStream &ds, const std::array<T, Tsize> &array)
{
for (const auto &entry : array)
ds << entry;
return ds;
}
template<typename T, std::size_t Tsize>
QDataStream &operator>>(QDataStream &ds, std::array<T, Tsize> &array)
{
2022-01-15 01:52:55 +01:00
for (size_t i = 0; i < Tsize; i++)
ds >> array[i];
return ds;
}
template<typename T>
QDataStream &operator<<(QDataStream &ds, const std::list<T> &list)
{
{
int entries = list.size();
ds << entries;
}
for (const auto &entry : list)
ds << entry;
return ds;
}
template<typename T>
QDataStream &operator>>(QDataStream &ds, std::list<T> &list)
{
int entries;
ds >> entries;
for (int i = 0; i < entries; i++)
{
T entry;
ds >> entry;
list.emplace_back(std::move(entry));
}
return ds;
}
template<typename T>
QDataStream &operator<<(QDataStream &ds, const std::vector<T> &list)
{
{
int entries = list.size();
ds << entries;
}
for (const auto &entry : list)
ds << entry;
return ds;
}
template<typename T>
QDataStream &operator>>(QDataStream &ds, std::vector<T> &list)
{
int entries;
ds >> entries;
for (int i = 0; i < entries; i++)
{
T entry;
ds >> entry;
list.emplace_back(std::move(entry));
}
return ds;
}
2022-01-13 14:41:17 +01:00
template<typename Tkey, typename Tvalue>
QDataStream &operator<<(QDataStream &ds, const std::map<Tkey, Tvalue> &map)
{
{
int entries = map.size();
ds << entries;
}
for (auto iter = std::cbegin(map); iter != std::cend(map); iter++)
ds << iter->first << iter->second;
return ds;
}
template<typename Tkey, typename Tvalue>
QDataStream &operator>>(QDataStream &ds, std::map<Tkey, Tvalue> &map)
{
int entries;
ds >> entries;
for (int i = 0; i < entries; i++)
{
Tkey key;
Tvalue value;
ds >> key
>> value;
map[std::move(key)] = std::move(value);
}
return ds;
}
2022-01-15 01:52:55 +01:00
QDataStream &operator<<(QDataStream &ds, const GlobalGameSettings &globalGameSettings)
{
Q_UNUSED(globalGameSettings);
//ds << globalGameSettings.;
return ds;
}
QDataStream &operator>>(QDataStream &ds, GlobalGameSettings &globalGameSettings)
{
Q_UNUSED(globalGameSettings);
//ds >> globalGameSettings.;
return ds;
}
2022-01-09 06:42:13 +01:00
QDataStream &operator<<(QDataStream &ds, const Sprite &sprite)
{
2022-01-13 14:41:17 +01:00
ds << sprite.name
<< sprite.pixmaps
<< sprite.origin.x
<< sprite.origin.y
<< sprite.preciseCollisionChecking
<< sprite.separateCollisionMasks;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Sprite &sprite)
{
2022-01-13 14:41:17 +01:00
ds >> sprite.name
>> sprite.pixmaps
>> sprite.origin.x
>> sprite.origin.y
>> sprite.preciseCollisionChecking
>> sprite.separateCollisionMasks;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Sound &sound)
{
2022-01-13 14:41:17 +01:00
ds << sound.name
<< sound.type
<< sound.path
<< sound.effects.chorus
<< sound.effects.flanger
<< sound.effects.gargle
<< sound.effects.echo
<< sound.effects.reverb
<< sound.volume
<< sound.pan
<< sound.preload;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Sound &sound)
{
2022-01-13 14:41:17 +01:00
ds >> sound.name
>> sound.type
>> sound.path
>> sound.effects.chorus
>> sound.effects.flanger
>> sound.effects.gargle
>> sound.effects.echo
>> sound.effects.reverb
>> sound.volume
>> sound.pan
>> sound.preload;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Background &background)
{
2022-01-13 14:41:17 +01:00
ds << background.name
<< background.pixmap
<< background.tileset;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Background &background)
{
2022-01-13 14:41:17 +01:00
ds >> background.name
>> background.pixmap
>> background.tileset;
2022-01-09 06:42:13 +01:00
return ds;
}
2022-01-10 21:49:06 +01:00
QDataStream &operator<<(QDataStream &ds, const Path::Point &point)
{
2022-01-13 14:41:17 +01:00
ds << point.point
<< point.sp;
2022-01-10 21:49:06 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Path::Point &point)
{
2022-01-13 14:41:17 +01:00
ds >> point.point
>> point.sp;
2022-01-10 21:49:06 +01:00
return ds;
}
2022-01-09 06:42:13 +01:00
QDataStream &operator<<(QDataStream &ds, const Path &path)
{
2022-01-13 14:41:17 +01:00
ds << path.name
<< path.points
<< path.type
<< path.closed
2022-01-15 04:48:32 +01:00
<< path.precision
<< path.snapX
<< path.snapY
<< path.gridEnabled;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Path &path)
{
2022-01-13 14:41:17 +01:00
ds >> path.name
>> path.points
>> path.type
>> path.closed
2022-01-15 04:48:32 +01:00
>> path.precision
>> path.snapX
>> path.snapY
>> path.gridEnabled;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Script &script)
{
2022-01-13 14:41:17 +01:00
ds << script.name
<< script.script;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Script &script)
{
2022-01-13 14:41:17 +01:00
ds >> script.name
>> script.script;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Font &font)
{
2022-01-13 14:41:17 +01:00
ds << font.name
<< font.font;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, Font &font)
{
2022-01-13 14:41:17 +01:00
ds >> font.name
>> font.font;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Action &action)
{
ds << action.script;
ds << action.appliesTo;
return ds;
}
QDataStream &operator>>(QDataStream &ds, Action &action)
{
ds >> action.script;
ds >> action.appliesTo;
return ds;
}
QDataStream &operator<<(QDataStream &ds, const TimeLine &timeLine)
{
ds << timeLine.name
<< timeLine.moments;
return ds;
}
QDataStream &operator>>(QDataStream &ds, TimeLine &timeLine)
{
ds >> timeLine.name
>> timeLine.moments;
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Object &object)
{
2022-01-13 14:41:17 +01:00
ds << object.name
<< object.spriteName
<< object.visible
<< object.solid
<< object.depth
<< object.persistent
<< object.events;
return ds;
}
QDataStream &operator>>(QDataStream &ds, Object &object)
{
2022-01-13 14:41:17 +01:00
ds >> object.name
>> object.spriteName
>> object.visible
>> object.solid
>> object.depth
>> object.persistent
>> object.events;
return ds;
}
QDataStream &operator<<(QDataStream &ds, const Room &room)
{
2022-01-15 04:48:32 +01:00
ds << room.name
<< room.caption
<< room.width
<< room.height
<< room.speed
<< room.persistent
<< room.creationCode
<< room.snapX
<< room.snapY
<< room.gridEnabled
<< room.isometricGrid;
return ds;
}
QDataStream &operator>>(QDataStream &ds, Room &room)
{
2022-01-15 04:48:32 +01:00
ds >> room.name
>> room.caption
>> room.width
>> room.height
>> room.speed
>> room.persistent
>> room.creationCode
>> room.snapX
>> room.snapY
>> room.gridEnabled
>> room.isometricGrid;
return ds;
}
2022-01-09 06:42:13 +01:00
QDataStream &operator<<(QDataStream &ds, const ProjectContainer &project)
{
2022-01-15 01:52:55 +01:00
ds << project.globalGameSettings
<< project.sprites
2022-01-13 14:41:17 +01:00
<< project.sounds
<< project.backgrounds
<< project.paths
<< project.scripts
<< project.fonts
<< project.timeLines
<< project.objects
<< project.rooms;
2022-01-09 06:42:13 +01:00
return ds;
}
QDataStream &operator>>(QDataStream &ds, ProjectContainer &project)
{
2022-01-15 01:52:55 +01:00
ds >> project.globalGameSettings
>> project.sprites
2022-01-13 14:41:17 +01:00
>> project.sounds
>> project.backgrounds
>> project.paths
>> project.scripts
>> project.fonts
>> project.timeLines
>> project.objects
>> project.rooms;
2022-01-09 06:42:13 +01:00
return ds;
}