Serialize.cpp 737 B

1234567891011121314151617181920212223242526272829303132333435
  1. #include "Serialize.h"
  2. #include "Sprite.h"
  3. #include "TextActor.h"
  4. #include "ColorRectSprite.h"
  5. #include "ClipRectActor.h"
  6. #include "ProgressBar.h"
  7. namespace oxygine
  8. {
  9. //#define S(s) #s
  10. //#define SS(s) ##s
  11. #define CREATE(T) if (!strcmp(#T, type)) return new T
  12. spActor creator::create(const char *type) const
  13. {
  14. CREATE(Sprite);
  15. CREATE(TextActor);
  16. CREATE(Actor);
  17. CREATE(ProgressBar);
  18. CREATE(ColorRectSprite);
  19. CREATE(ClipRectActor);
  20. return 0;
  21. }
  22. spActor deserializedata::deser(pugi::xml_node node, const creator* factory)
  23. {
  24. deserializedata d;
  25. d.node = node;
  26. d.factory = factory;
  27. const char *name = node.name();
  28. spActor actor = factory->create(name);
  29. actor->deserialize(&d);
  30. return actor;
  31. }
  32. }