]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/PartyLayout.cpp
added type description of PartyLayout
[l2e.git] / src / battle / PartyLayout.cpp
index 6389327528bd77df1e4c233147b2d5ad51609d93..ad0a54877c6b3c53e9266ea76cdeaa5c869cd2e4 100644 (file)
@@ -7,6 +7,44 @@
 
 #include "PartyLayout.h"
 
+#include "../loader/TypeDescription.h"
+
+using geometry::Vector;
+using loader::FieldDescription;
+using loader::TypeDescription;
+using std::vector;
+
 namespace battle {
 
+Vector<int> PartyLayout::CalculatePosition(int index, int width, int height) const {
+       assert(index >= 0 && index < numPositions);
+       return Vector<int>(
+                       positions[index].X() * width / 255,
+                       positions[index].Y() * height / 223
+                       );
+}
+
+void PartyLayout::CalculatePositions(int width, int height, vector<Vector<int> > &dest) const {
+       dest.clear();
+       dest.reserve(numPositions);
+       for (int i(0); i < numPositions; ++i) {
+               dest.push_back(Vector<int>(
+                               positions[i].X() * width / 255,
+                               positions[i].Y() * height / 223
+                               ));
+       }
+}
+
+
+void PartyLayout::CreateTypeDescription() {
+       PartyLayout p;
+       TypeDescription &td(TypeDescription::CreateOrGet("PartyLayout"));
+
+       td.SetSize(sizeof(PartyLayout));
+
+       int vectorId(TypeDescription::GetTypeId("Vector"));
+
+       td.AddField("positions", FieldDescription(((char *)&p.positions) - ((char *)&p), vectorId, true, true));
+}
+
 }