You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
1.9 KiB
82 lines
1.9 KiB
package main |
|
|
|
import ( |
|
"image" |
|
_ "image/png" |
|
|
|
"github.com/hajimehoshi/ebiten/v2" |
|
) |
|
|
|
var ojasDungeonSS *OjasDungeonSpriteSheet |
|
|
|
// OjasDungeonSpriteSheet represents a collection of sprite images. |
|
type OjasDungeonSpriteSheet struct { |
|
Grass11 *ebiten.Image |
|
Grass12 *ebiten.Image |
|
Grass13 *ebiten.Image |
|
Grass14 *ebiten.Image |
|
Grass15 *ebiten.Image |
|
Grass16 *ebiten.Image |
|
Grass21 *ebiten.Image |
|
Grass31 *ebiten.Image |
|
Grass41 *ebiten.Image |
|
Grass42 *ebiten.Image |
|
Grass51 *ebiten.Image |
|
Grass61 *ebiten.Image |
|
Grass71 *ebiten.Image |
|
Grass81 *ebiten.Image |
|
Grass82 *ebiten.Image |
|
Grass91 *ebiten.Image |
|
Soul1 *ebiten.Image |
|
Wall1 *ebiten.Image |
|
Vent1 *ebiten.Image |
|
Door11 *ebiten.Image |
|
Door12 *ebiten.Image |
|
} |
|
|
|
// LoadOjasDungeonSpriteSheet loads the embedded PlayerSpriteSheet. |
|
func LoadOjasDungeonSpriteSheet() (*OjasDungeonSpriteSheet, error) { |
|
tileSize := 32 |
|
|
|
f, err := assetsFS.Open("assets/ojas-dungeon/dungeon-tileset-1.png") |
|
if err != nil { |
|
return nil, err |
|
} |
|
img, _, err := image.Decode(f) |
|
if err != nil { |
|
return nil, err |
|
} |
|
|
|
sheet := ebiten.NewImageFromImage(img) |
|
|
|
// spriteAt returns a sprite at the provided coordinates. |
|
spriteAt := func(x, y int) *ebiten.Image { |
|
return sheet.SubImage(image.Rect(x*tileSize, (y+1)*tileSize, (x+1)*tileSize, y*tileSize)).(*ebiten.Image) |
|
} |
|
|
|
// Populate spritesheet. |
|
s := &OjasDungeonSpriteSheet{} |
|
s.Grass11 = spriteAt(7, 7) |
|
s.Grass12 = spriteAt(8, 7) |
|
s.Grass13 = spriteAt(9, 7) |
|
s.Grass14 = spriteAt(10, 7) |
|
s.Grass15 = spriteAt(11, 7) |
|
s.Grass16 = spriteAt(12, 7) |
|
s.Grass21 = spriteAt(10, 8) |
|
s.Grass31 = spriteAt(10, 9) |
|
s.Grass41 = spriteAt(15, 9) |
|
s.Grass42 = spriteAt(10, 10) |
|
s.Grass51 = spriteAt(10, 11) |
|
s.Grass61 = spriteAt(10, 12) |
|
s.Grass71 = spriteAt(10, 13) |
|
s.Grass81 = spriteAt(14, 11) |
|
s.Grass82 = spriteAt(10, 14) |
|
s.Grass91 = spriteAt(10, 15) |
|
s.Soul1 = spriteAt(8, 11) |
|
s.Wall1 = spriteAt(7, 5) |
|
s.Vent1 = spriteAt(9, 13) |
|
s.Door11 = spriteAt(3, 6) |
|
s.Door12 = spriteAt(3, 7) |
|
|
|
return s, nil |
|
}
|
|
|