Skip to content

Commit

Permalink
refactor: move all source go files into core folder
Browse files Browse the repository at this point in the history
  • Loading branch information
jeamon committed Apr 28, 2024
1 parent b5fdfad commit ce23fcf
Show file tree
Hide file tree
Showing 8 changed files with 170 additions and 160 deletions.
66 changes: 35 additions & 31 deletions assets.go → core/assets.go
Original file line number Diff line number Diff line change
@@ -1,83 +1,87 @@
package main
package core

import (
"embed"
"fmt"
"log"
"path"
"path/filepath"
"strings"

rl "github.com/gen2brain/raylib-go/raylib"
)

//go:embed assets/*/*.png
//go:embed assets/*/*/*.png
//go:embed assets/*/*/*/*.png
var pictures embed.FS
var (
PicturesFs embed.FS
SoundsFs embed.FS
)

//go:embed assets/sounds/*/*.wav
var sounds embed.FS
func checkerr(err error) {
if err != nil {
log.Fatal(err)
}
}

func isWav(path string) bool {
return filepath.Ext(path) == ".wav"
}

func loadPictures(dir string, m *[]item) {
entries, err := pictures.ReadDir(dir)
entries, err := PicturesFs.ReadDir(dir)
checkerr(err)
for _, e := range entries {
name, _, found := strings.Cut(e.Name(), "_")
if !found {
name = strings.TrimSuffix(name, ".png")
}
imgBytes, err := pictures.ReadFile(path.Join(dir, e.Name()))
imgBytes, err := PicturesFs.ReadFile(path.Join(dir, e.Name()))
checkerr(err)
rImg := rl.LoadImageFromMemory(".png", imgBytes, int32(len(imgBytes)))
*m = append(*m, item{name, rl.LoadTextureFromImage(rImg)})
}
}

func loadFaces(faces map[string]rl.Texture2D) {
imgByte, err := pictures.ReadFile("assets/faces/up.png")
imgByte, err := PicturesFs.ReadFile("assets/faces/up.png")
checkerr(err)
faces["up"] = rl.LoadTextureFromImage(rl.LoadImageFromMemory(".png", imgByte, int32(len(imgByte))))

imgByte, err = pictures.ReadFile("assets/faces/down.png")
imgByte, err = PicturesFs.ReadFile("assets/faces/down.png")
checkerr(err)
faces["down"] = rl.LoadTextureFromImage(rl.LoadImageFromMemory(".png", imgByte, int32(len(imgByte))))

imgByte, err = pictures.ReadFile("assets/faces/left.png")
imgByte, err = PicturesFs.ReadFile("assets/faces/left.png")
checkerr(err)
faces["left"] = rl.LoadTextureFromImage(rl.LoadImageFromMemory(".png", imgByte, int32(len(imgByte))))

imgByte, err = pictures.ReadFile("assets/faces/right.png")
imgByte, err = PicturesFs.ReadFile("assets/faces/right.png")
checkerr(err)
faces["right"] = rl.LoadTextureFromImage(rl.LoadImageFromMemory(".png", imgByte, int32(len(imgByte))))
}

func getImageFromPictures(path string) *rl.Image {
imgByte, err := pictures.ReadFile(path)
imgByte, err := PicturesFs.ReadFile(path)
checkerr(err)
return rl.LoadImageFromMemory(".png", imgByte, int32(len(imgByte)))
}

func loadSounds(dir string, m map[string]rl.Sound) {
entries, err := sounds.ReadDir(dir)
entries, err := SoundsFs.ReadDir(dir)
checkerr(err)
for _, e := range entries {
if !isWav(e.Name()) {
continue
}
name := strings.TrimSuffix(e.Name(), ".wav")
wavBytes, err := sounds.ReadFile(path.Join(dir, e.Name()))
wavBytes, err := SoundsFs.ReadFile(path.Join(dir, e.Name()))
checkerr(err)
rWav := rl.LoadWaveFromMemory(".wav", wavBytes, int32(len(wavBytes)))
m[name] = rl.LoadSoundFromWave(rWav)
}
}

// loadAssets - Load resources
func (g *Game) loadAssets() {
// LoadAssets - Load resources
func (g *Game) LoadAssets() {
// load pictures
loadPictures("assets/foods/fruits", &g.fruits)
loadPictures("assets/foods/vegetables", &g.vegetables)
Expand All @@ -90,39 +94,39 @@ func (g *Game) loadAssets() {
loadSounds("assets/sounds/fruits", g.sounds)
loadSounds("assets/sounds/vegetables", g.sounds)
loadSounds("assets/sounds/donuts", g.sounds)
loadSounds("assets/sounds/actions", g.actions)
loadSounds("assets/sounds/actions", g.Actions)

// load boy 4D sprites idle and run positions
var rImg *rl.Image
for i := 0; i <= 5; i++ {
rImg = getImageFromPictures(fmt.Sprintf("assets/boy/idle/back/%d.png", i+1))
g.sprite.idle[Back] = append(g.sprite.idle[Back], rl.LoadTextureFromImage(rImg))
g.Sprite.idle[Back] = append(g.Sprite.idle[Back], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/idle/front/%d.png", i+1))
g.sprite.idle[Front] = append(g.sprite.idle[Front], rl.LoadTextureFromImage(rImg))
g.Sprite.idle[Front] = append(g.Sprite.idle[Front], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/idle/left/%d.png", i+1))
g.sprite.idle[Left] = append(g.sprite.idle[Left], rl.LoadTextureFromImage(rImg))
g.Sprite.idle[Left] = append(g.Sprite.idle[Left], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/idle/right/%d.png", i+1))
g.sprite.idle[Right] = append(g.sprite.idle[Right], rl.LoadTextureFromImage(rImg))
g.Sprite.idle[Right] = append(g.Sprite.idle[Right], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/run/back/%d.png", i+1))
g.sprite.run[Back] = append(g.sprite.run[Back], rl.LoadTextureFromImage(rImg))
g.Sprite.run[Back] = append(g.Sprite.run[Back], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/run/front/%d.png", i+1))
g.sprite.run[Front] = append(g.sprite.run[Front], rl.LoadTextureFromImage(rImg))
g.Sprite.run[Front] = append(g.Sprite.run[Front], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/run/left/%d.png", i+1))
g.sprite.run[Left] = append(g.sprite.run[Left], rl.LoadTextureFromImage(rImg))
g.Sprite.run[Left] = append(g.Sprite.run[Left], rl.LoadTextureFromImage(rImg))

rImg = getImageFromPictures(fmt.Sprintf("assets/boy/run/right/%d.png", i+1))
g.sprite.run[Right] = append(g.sprite.run[Right], rl.LoadTextureFromImage(rImg))
g.Sprite.run[Right] = append(g.Sprite.run[Right], rl.LoadTextureFromImage(rImg))
}
}

// Unload - Unload resources
func (g *Game) unload() {
func (g *Game) Unload() {
for _, fruit := range g.fruits {
rl.UnloadTexture(fruit.picture)
}
Expand All @@ -143,13 +147,13 @@ func (g *Game) unload() {
rl.UnloadTexture(face)
}

for _, rtxt := range g.sprite.idle {
for _, rtxt := range g.Sprite.idle {
for _, txt := range rtxt {
rl.UnloadTexture(txt)
}
}

for _, rtxt := range g.sprite.run {
for _, rtxt := range g.Sprite.run {
for _, txt := range rtxt {
rl.UnloadTexture(txt)
}
Expand All @@ -159,7 +163,7 @@ func (g *Game) unload() {
rl.UnloadSound(s)
}

for _, s := range g.actions {
for _, s := range g.Actions {
rl.UnloadSound(s)
}

Expand Down
40 changes: 21 additions & 19 deletions controls.go → core/controls.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package main
package core

import (
rl "github.com/gen2brain/raylib-go/raylib"
Expand All @@ -14,46 +14,48 @@ const (
NN gamepadkey = 20
)

func (g *Game) controls() {
const gamepadID int32 = 0 // gamepad to track

func (g *Game) Controls() {
if rl.IsKeyDown(rl.KeyRight) || gamePadButtonPressed() == RT {
g.sprite.face = Right
if g.sprite.position.X+g.sprite.speed <= (float32(screenW) - spriteW) {
g.sprite.position.X += g.sprite.speed
g.Sprite.face = Right
if g.Sprite.position.X+g.Sprite.speed <= (float32(ScreenW) - spriteW) {
g.Sprite.position.X += g.Sprite.speed
}
g.sprite.moving = true
g.Sprite.Moving = true
g.update()
}

if rl.IsKeyDown(rl.KeyLeft) || gamePadButtonPressed() == LT {
g.sprite.face = Left
if g.sprite.position.X-g.sprite.speed >= 0 {
g.sprite.position.X -= g.sprite.speed
g.Sprite.face = Left
if g.Sprite.position.X-g.Sprite.speed >= 0 {
g.Sprite.position.X -= g.Sprite.speed
}
g.sprite.moving = true
g.Sprite.Moving = true
g.update()
}

if rl.IsKeyDown(rl.KeyUp) || gamePadButtonPressed() == UP {
g.sprite.face = Back
if g.sprite.position.Y-g.sprite.speed >= 0 {
g.sprite.position.Y -= g.sprite.speed
g.Sprite.face = Back
if g.Sprite.position.Y-g.Sprite.speed >= 0 {
g.Sprite.position.Y -= g.Sprite.speed
}
g.sprite.moving = true
g.Sprite.Moving = true
g.update()
}

if rl.IsKeyDown(rl.KeyDown) || gamePadButtonPressed() == DN {
g.sprite.face = Front
if g.sprite.position.Y+g.sprite.speed <= float32(screenH)-spriteH {
g.sprite.position.Y += g.sprite.speed
g.Sprite.face = Front
if g.Sprite.position.Y+g.Sprite.speed <= float32(ScreenH)-spriteH {
g.Sprite.position.Y += g.Sprite.speed
}
g.sprite.moving = true
g.Sprite.Moving = true
g.update()
}
}

func gamePadButtonPressed() gamepadkey {
if rl.IsGamepadAvailable(gamepad) {
if rl.IsGamepadAvailable(gamepadID) {
switch rl.GetGamepadButtonPressed() {
case rl.GamepadButtonLeftFaceRight, rl.GamepadButtonRightFaceRight:
return RT
Expand Down
6 changes: 3 additions & 3 deletions enemies.go → core/enemies.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package main
package core

import (
"math"
Expand Down Expand Up @@ -27,10 +27,10 @@ func (b *ball) draw() {
func (b *ball) update() {
b.position.X += b.speedX
b.position.Y += b.speedY
if b.position.Y <= 0 || b.position.Y+float32(b.picture.Height) >= float32(screenH) {
if b.position.Y <= 0 || b.position.Y+float32(b.picture.Height) >= float32(ScreenH) {
b.speedY *= -1
}
if b.position.X <= 0 || b.position.X+float32(b.picture.Width) >= float32(screenW) {
if b.position.X <= 0 || b.position.X+float32(b.picture.Width) >= float32(ScreenW) {
b.speedX *= -1
}
}
Expand Down
15 changes: 12 additions & 3 deletions food.go → core/food.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,20 @@
package main
package core

import (
"time"

rl "github.com/gen2brain/raylib-go/raylib"
)

type kind uint8

const (
V kind = 0 // veggie item
F kind = 1 // fruit item
D kind = 2 // donut item
L kind = 3 // life item
)

// Food type
type Food struct {
picture rl.Texture2D
Expand All @@ -18,8 +27,8 @@ type Food struct {

func (f *Food) randomize(items *[]item) {
f.position = rl.NewVector2(
float32(rl.GetRandomValue(1, (screenW/cellsize)-2))*cellsize,
float32(rl.GetRandomValue(1, (screenH/cellsize)-2))*cellsize,
float32(rl.GetRandomValue(1, (ScreenW/cellsize)-2))*cellsize,
float32(rl.GetRandomValue(1, (ScreenH/cellsize)-2))*cellsize,
)
item := (*items)[rl.GetRandomValue(0, int32(len(*items)-1))]
f.picture = item.picture
Expand Down
Loading

0 comments on commit ce23fcf

Please sign in to comment.