-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathAnimationSetWriter.java
More file actions
124 lines (99 loc) · 4.07 KB
/
AnimationSetWriter.java
File metadata and controls
124 lines (99 loc) · 4.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
/*
* Copyright 2012 Samuel Taylor
*
* This file is part of darkFunction Editor
*
* darkFunction Editor is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* darkFunction Editor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with darkFunction Editor. If not, see <http://www.gnu.org/licenses/>.
*/
package dfEditor.io;
import dfEditor.*;
import java.io.File;
import dfEditor.animation.*;
import dfEditor.animation.AnimationCell.GraphicZOrderPair;
import com.generationjava.io.xml.*;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.FileWriter;
import java.util.ArrayList;
/**
* Interface between the editors and the file system.
* Also encapsulates the format.
*
* @author s4m20
*/
public class AnimationSetWriter
{
public AnimationSetWriter()
{
}
public void createAnimationSet(File aSaveFile, String aSpritesheetName, ArrayList<Animation> aAnimList)
{
try
{
BufferedWriter out = new BufferedWriter(new FileWriter(aSaveFile));
PrettyPrinterXmlWriter xmlwriter = new PrettyPrinterXmlWriter(new SimpleXmlWriter(out));
xmlwriter.writeXmlVersion();
String comment = "Generated by darkFunction Editor (www.darkfunction.com)";
xmlwriter.writeComment(comment);
xmlwriter.writeEntity("animations");
xmlwriter.writeAttribute("spriteSheet", aSpritesheetName);
xmlwriter.writeAttribute("ver", "1.2");
for (int i=0; i<aAnimList.size(); ++i)
{
writeAnimToXml(xmlwriter, aAnimList.get(i));
}
xmlwriter.endEntity();
xmlwriter.close();
System.err.println(out.toString());
out.close();
}
catch (IOException e)
{
}
}
private void writeAnimToXml(XmlWriter aXmlWriter, Animation aAnimation) throws IOException
{
aXmlWriter.writeEntity("anim");
aXmlWriter.writeAttribute("name", aAnimation.getName());
aXmlWriter.writeAttribute("loops", aAnimation.getLoops());
int backupIndex = aAnimation.getCurrentCellIndex();
aAnimation.setCurrentCellIndex(0);
AnimationCell cell = aAnimation.getCurrentCell();
while(cell != null)
{
aXmlWriter.writeEntity("cell");
aXmlWriter.writeAttribute("index", aAnimation.getCurrentCellIndex());
aXmlWriter.writeAttribute("delay", cell.getDelay());
for (GraphicZOrderPair pair : cell.getGraphicList())
{
SpriteGraphic graphic = (SpriteGraphic)pair.graphic;
CustomNode node = cell.nodeForGraphic(graphic);
aXmlWriter.writeEntity("spr");
aXmlWriter.writeAttribute("name", node.getFullPathName());
aXmlWriter.writeAttribute("x", graphic.getRect().x + graphic.getRect().width/2);
aXmlWriter.writeAttribute("y", graphic.getRect().y + graphic.getRect().height/2);
aXmlWriter.writeAttribute("z", pair.zOrder);
if (graphic.getAngle() != 0)
aXmlWriter.writeAttribute("angle", graphic.getAngle());
if (graphic.isFlippedV())
aXmlWriter.writeAttribute("flipV", graphic.isFlippedV() ? 1 : 0);
if (graphic.isFlippedH())
aXmlWriter.writeAttribute("flipH", graphic.isFlippedH() ? 1 : 0);
aXmlWriter.endEntity();
}
aXmlWriter.endEntity();
cell = aAnimation.getNextCell();
}
aXmlWriter.endEntity();
}
}