| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- package main
- import (
- "encoding/json"
- "encoding/xml"
- "fmt"
- "io/ioutil"
- "log"
- "os"
- "strconv"
- )
- type TextureAtlasXML struct {
- XMLName xml.Name `xml:"TextureAtlas"`
- Text string `xml:",chardata"`
- ImagePath string `xml:"imagePath,attr"`
- SubTexture []struct {
- Text string `xml:",chardata"`
- Name string `xml:"name,attr"`
- X string `xml:"x,attr"`
- Y string `xml:"y,attr"`
- Width string `xml:"width,attr"`
- Height string `xml:"height,attr"`
- } `xml:"SubTexture"`
- }
- type Frame struct {
- W int `json:"w"`
- H int `json:"h"`
- X int `json:"x"`
- Y int `json:"y"`
- }
- type Anchor struct {
- X float64 `json:"x"`
- Y float64 `json:"y"`
- }
- type Meta struct {
- Description string `json:"description"`
- }
- type FrameData struct {
- Filename string `json:"filename"`
- Frame Frame `json:"frame"`
- Anchor Anchor `json:"anchor"`
- }
- type AtlasData struct {
- Frames []FrameData `json:"frames"`
- Meta Meta `json:"meta"`
- }
- func main() {
- inputFile := os.Args[1]
- outputFile := os.Args[2]
- desc := ""
- if len(os.Args) == 2 {
- desc = os.Args[3]
- }
- content, err := ioutil.ReadFile(inputFile)
- if err != nil {
- log.Fatal(err)
- }
- xmlData := &TextureAtlasXML{}
- xml.Unmarshal(content, &xmlData)
- jsonData := AtlasData{
- Frames: []FrameData{},
- Meta: Meta{Description: desc},
- }
- for _, n := range xmlData.SubTexture {
- w, err := strconv.Atoi(n.Width)
- if err != nil {
- fmt.Println(err.Error())
- }
- h, err := strconv.Atoi(n.Height)
- if err != nil {
- fmt.Println(err.Error())
- }
- x, err := strconv.Atoi(n.X)
- if err != nil {
- fmt.Println(err.Error())
- }
- y, err := strconv.Atoi(n.Y)
- if err != nil {
- fmt.Println(err.Error())
- }
- nJsonData := FrameData{
- Filename: n.Name,
- Frame: Frame{
- W: w,
- H: h,
- X: x,
- Y: y,
- },
- Anchor: Anchor{X: 0.5, Y: 0.5},
- }
- jsonData.Frames = append(jsonData.Frames, nJsonData)
- }
- bytes, err := json.Marshal(jsonData)
- if err != nil {
- log.Fatal(err)
- }
- os.WriteFile(outputFile, bytes, 0644)
- }
|