started tile serialization
This commit is contained in:
@ -108,6 +108,16 @@ func FillColorRing(colorValue uint8, minGlow, maxGlow, step int) *cdeque {
|
||||
return c
|
||||
}
|
||||
|
||||
func DeviatedColorRing(colorValue uint8, minGlow, maxGlow int) *cdeque {
|
||||
q := make([]uint8, 0)
|
||||
color := int(colorValue)
|
||||
color = crng.Range(minGlow, maxGlow) + color
|
||||
q = append(q, colorValue)
|
||||
c := &cdeque{}
|
||||
c.PushBack(uint8(color))
|
||||
return c
|
||||
}
|
||||
|
||||
func (app Appearance) Type() string {
|
||||
return ecs.AppearanceComponent
|
||||
}
|
||||
@ -116,24 +126,24 @@ func (app *Appearance) MarshalJSON() ([]byte, error) {
|
||||
buffer := bytes.NewBufferString("{")
|
||||
//glyph
|
||||
buffer.WriteString(`"glyph":{`)
|
||||
switch app.Glyph.(type) {
|
||||
case PlainGlyphHolder:
|
||||
if _, ok := app.Glyph.(*PlainGlyphHolder); ok {
|
||||
buffer.WriteString(fmt.Sprintf(`"type":"plain", "chars":"%s"`, app.Glyph.GetGlyph()))
|
||||
break
|
||||
}
|
||||
//note the comma
|
||||
buffer.WriteString("},")
|
||||
|
||||
//color
|
||||
buffer.WriteString(`"color":{`)
|
||||
buffer.WriteString(getColorJson("fg", app.ColorSet.Fg) + ",")
|
||||
buffer.WriteString(getColorJson("bg", app.ColorSet.Fg) + ",")
|
||||
buffer.WriteString(getColorJson("darkfg", app.ColorSet.Fg) + ",")
|
||||
buffer.WriteString(getColorJson("darkbg", app.ColorSet.Fg))
|
||||
buffer.WriteString(getColorJson("bg", app.ColorSet.Bg) + ",")
|
||||
buffer.WriteString(getColorJson("darkfg", app.ColorSet.DarkFg) + ",")
|
||||
buffer.WriteString(getColorJson("darkbg", app.ColorSet.DarkBg))
|
||||
|
||||
buffer.WriteString("}")
|
||||
|
||||
buffer.WriteString("}")
|
||||
|
||||
fmt.Printf("\n\nbuffer: %s\n\n", buffer.String())
|
||||
|
||||
return buffer.Bytes(), nil
|
||||
}
|
||||
|
||||
@ -143,18 +153,45 @@ func (app *Appearance) UnmarshalJSON(buffer []byte) error {
|
||||
|
||||
func getColorJson(field string, holder ColorHolder) string {
|
||||
result := ""
|
||||
switch holder.(type) {
|
||||
case PlainColorHolder:
|
||||
result = fmt.Sprintf(`"plain":[%d,%d,%d,%d]`,
|
||||
holder.(PlainColorHolder).A,
|
||||
holder.(PlainColorHolder).R,
|
||||
holder.(PlainColorHolder).G,
|
||||
holder.(PlainColorHolder).B,
|
||||
if _, dch := holder.(*DanceColorHolder); dch {
|
||||
result = fmt.Sprintf(`{"dance":{`)
|
||||
result = result + detectRing("a", holder.(*DanceColorHolder).A) + ","
|
||||
result = result + detectRing("r", holder.(*DanceColorHolder).R) + ","
|
||||
result = result + detectRing("g", holder.(*DanceColorHolder).G) + ","
|
||||
result = result + detectRing("b", holder.(*DanceColorHolder).B)
|
||||
result = result + "}}"
|
||||
}
|
||||
if _, pch := holder.(*PlainColorHolder); pch {
|
||||
result = fmt.Sprintf(`{"plain":[%d,%d,%d,%d]}`,
|
||||
holder.(*PlainColorHolder).A,
|
||||
holder.(*PlainColorHolder).R,
|
||||
holder.(*PlainColorHolder).G,
|
||||
holder.(*PlainColorHolder).B,
|
||||
)
|
||||
break
|
||||
case DanceColorHolder:
|
||||
return "" //fixme!!!
|
||||
break
|
||||
}
|
||||
return fmt.Sprintf(`"%s":%s`, field, result)
|
||||
}
|
||||
|
||||
func detectRing(channel string, something interface{}) string {
|
||||
result := ""
|
||||
|
||||
switch something.(type) {
|
||||
case (int),(uint8):
|
||||
result += fmt.Sprintf(`"%s":{"plain":%d}`, channel, something)
|
||||
case (*cdeque):
|
||||
fmt.Printf("%v", something)
|
||||
if something.(*cdeque).Len() == 1 {
|
||||
//fixme right now we can not distinct plain and deviated
|
||||
result += fmt.Sprintf(`"%s":{"single":[%v]}`, channel, something.(*cdeque).Front())
|
||||
} else {
|
||||
result += fmt.Sprintf(`"%s":{"fill":[%v, %v, %v, %v]}`,
|
||||
channel,
|
||||
something.(*cdeque).Front(),
|
||||
something.(*cdeque).Next(),
|
||||
something.(*cdeque).Next(),
|
||||
something.(*cdeque).Next(),
|
||||
)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
Reference in New Issue
Block a user