Use palettized images
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
package conv
|
package conv
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"image"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten"
|
"github.com/hajimehoshi/ebiten"
|
||||||
|
|
||||||
"code.ur.gs/lupine/ordoor/internal/data"
|
"code.ur.gs/lupine/ordoor/internal/data"
|
||||||
@@ -41,29 +43,23 @@ func ConvertObject(rawObj *data.Object, name string) (*Object, error) {
|
|||||||
for i, rawSpr := range rawObj.Sprites {
|
for i, rawSpr := range rawObj.Sprites {
|
||||||
w := int(rawSpr.Width)
|
w := int(rawSpr.Width)
|
||||||
h := int(rawSpr.Height)
|
h := int(rawSpr.Height)
|
||||||
data := spriteToData(name, i, rawSpr)
|
stdImage := spriteToImage(rawSpr)
|
||||||
|
ebitenImage, err := ebiten.NewImageFromImage(stdImage, ebiten.FilterDefault)
|
||||||
image, err := ebiten.NewImage(w, h, ebiten.FilterDefault)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
_ = image.ReplacePixels(data)
|
|
||||||
|
|
||||||
out.Sprites[i] = &Sprite{Width: w, Height: h, Image: image}
|
out.Sprites[i] = &Sprite{Width: w, Height: h, Image: ebitenImage}
|
||||||
}
|
}
|
||||||
|
|
||||||
return out, nil
|
return out, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func spriteToData(name string, idx int, sprite *data.Sprite) []byte {
|
func spriteToImage(sprite *data.Sprite) image.Image {
|
||||||
width := int(sprite.Width)
|
return &image.Paletted{
|
||||||
height := int(sprite.Height)
|
Pix: sprite.Data,
|
||||||
out := make([]byte, 0, 4*width*height)
|
Stride: int(sprite.Width),
|
||||||
|
Rect: image.Rect(0, 0, int(sprite.Width), int(sprite.Height)),
|
||||||
for _, palette := range sprite.Data {
|
Palette: data.ColorPalette,
|
||||||
color := data.ColorPalette[int(palette)]
|
|
||||||
out = append(out, color.R, color.G, color.B, color.A)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return out
|
|
||||||
}
|
}
|
||||||
|
@@ -5,7 +5,7 @@ import "image/color"
|
|||||||
var (
|
var (
|
||||||
Transparent = color.RGBA{R: 0, G: 0, B: 0, A: 0}
|
Transparent = color.RGBA{R: 0, G: 0, B: 0, A: 0}
|
||||||
|
|
||||||
ColorPalette = []color.RGBA{
|
ColorPalette = color.Palette{
|
||||||
Transparent,
|
Transparent,
|
||||||
color.RGBA{R: 128, G: 0, B: 0, A: 255},
|
color.RGBA{R: 128, G: 0, B: 0, A: 255},
|
||||||
color.RGBA{R: 0, G: 128, B: 0, A: 255},
|
color.RGBA{R: 0, G: 128, B: 0, A: 255},
|
||||||
|
Reference in New Issue
Block a user