removed test code, and restructured to use as library
This commit is contained in:
parent
5449d06392
commit
d01ce82106
|
@ -1,5 +0,0 @@
|
|||
set CGO_ENABLED=1
|
||||
set CC=x86_64-w64-mingw32-gcc
|
||||
set GOOS=windows
|
||||
set GOARCH=amd64
|
||||
go build -tags static -ldflags "-s -w"
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.4 KiB |
BIN
go.aseprite
BIN
go.aseprite
Binary file not shown.
156
main.go
156
main.go
|
@ -1,156 +0,0 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"fmt"
|
||||
. "git.danitheskunk.com/squishy/blooblib/src"
|
||||
"git.danitheskunk.com/squishy/blooblib/src/color"
|
||||
"github.com/veandco/go-sdl2/sdl"
|
||||
"time"
|
||||
)
|
||||
|
||||
const Width = 640
|
||||
const Height = 360
|
||||
|
||||
//test
|
||||
|
||||
func main() {
|
||||
_ = sdl.Init(sdl.INIT_EVERYTHING)
|
||||
defer sdl.Quit()
|
||||
|
||||
scale := 3
|
||||
|
||||
window, _ := sdl.CreateWindow(
|
||||
"test",
|
||||
sdl.WINDOWPOS_CENTERED,
|
||||
sdl.WINDOWPOS_CENTERED,
|
||||
int32(Width*scale),
|
||||
int32(Height*scale),
|
||||
sdl.WINDOW_SHOWN,
|
||||
)
|
||||
surface, _ := window.GetSurface()
|
||||
//data := unsafe.Slice((*uint32)(surface.Data()), Width*Height)
|
||||
windowImage := NewImageFromPointer(surface.Data(), Vec2i{X: Width * scale, Y: Height * scale})
|
||||
screen := NewImage(Vec2i{X: Width, Y: Height})
|
||||
screen.Alpha = false
|
||||
//sprite := NewImage(Vec2i{X: 32, Y: 32})
|
||||
//sprite.Clear(0xabcdef)
|
||||
fmt.Printf("%d\n", surface.Format.BitsPerPixel)
|
||||
println("\n"[0])
|
||||
|
||||
tiles := LoadImage("go.png").MakeTileset(Vec2i{X: 16, Y: 16})
|
||||
tilemap := NewTilemap(Vec2i{X: 40, Y: 23}, tiles)
|
||||
tilemap.Clear(16)
|
||||
for y := 0; y < 19; y += 1 {
|
||||
for x := 0; x < 19; x += 1 {
|
||||
tilemap.Set(Vec2i{X: 10 + x, Y: 1 + y}, 3)
|
||||
}
|
||||
//tilemap.Set(Vec2i{X: 9, Y: 1 + y}, 17)
|
||||
tilemap.Set(Vec2i{X: 10, Y: 1 + y}, 11)
|
||||
tilemap.Set(Vec2i{X: 28, Y: 1 + y}, 12)
|
||||
}
|
||||
|
||||
for x := 0; x < 19; x += 1 {
|
||||
//tilemap.Set(Vec2i{X: 10 + x, Y: 0}, 18)
|
||||
tilemap.Set(Vec2i{X: 10 + x, Y: 1}, 9)
|
||||
tilemap.Set(Vec2i{X: 10 + x, Y: 19}, 10)
|
||||
tilemap.Set(Vec2i{X: 10 + x, Y: 20}, 17)
|
||||
tilemap.Set(Vec2i{X: 10 + x, Y: 21}, 18)
|
||||
}
|
||||
|
||||
for y := 0; y < 21; y += 1 {
|
||||
tilemap.Set(Vec2i{X: 29, Y: 1 + y}, 19)
|
||||
}
|
||||
tilemap.Set(Vec2i{X: 10, Y: 21}, 20)
|
||||
tilemap.Set(Vec2i{X: 29, Y: 1}, 21)
|
||||
|
||||
tilemap.Set(Vec2i{X: 10, Y: 1}, 5)
|
||||
tilemap.Set(Vec2i{X: 28, Y: 1}, 6)
|
||||
tilemap.Set(Vec2i{X: 10, Y: 19}, 7)
|
||||
tilemap.Set(Vec2i{X: 28, Y: 19}, 8)
|
||||
|
||||
tilemap.Set(Vec2i{X: 13, Y: 4}, 4)
|
||||
tilemap.Set(Vec2i{X: 25, Y: 4}, 4)
|
||||
tilemap.Set(Vec2i{X: 13, Y: 16}, 4)
|
||||
tilemap.Set(Vec2i{X: 25, Y: 16}, 4)
|
||||
tilemap.Set(Vec2i{X: 13, Y: 10}, 4)
|
||||
tilemap.Set(Vec2i{X: 13, Y: 16}, 4)
|
||||
tilemap.Set(Vec2i{X: 25, Y: 10}, 4)
|
||||
tilemap.Set(Vec2i{X: 25, Y: 16}, 4)
|
||||
tilemap.Set(Vec2i{X: 19, Y: 4}, 4)
|
||||
tilemap.Set(Vec2i{X: 19, Y: 10}, 4)
|
||||
tilemap.Set(Vec2i{X: 19, Y: 16}, 4)
|
||||
|
||||
_ = window.UpdateSurface()
|
||||
|
||||
lastSecond := time.Now()
|
||||
framesSinceLastSecond := 0
|
||||
|
||||
targetFPS := 60
|
||||
frameDuration := time.Second / time.Duration(targetFPS)
|
||||
lastFrame := lastSecond
|
||||
|
||||
running := true
|
||||
tick := 0
|
||||
for running {
|
||||
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
|
||||
switch event.(type) {
|
||||
case *sdl.QuitEvent:
|
||||
running = false
|
||||
break
|
||||
}
|
||||
}
|
||||
now := time.Now()
|
||||
delta := now.Sub(lastSecond)
|
||||
//println(delta.Seconds())
|
||||
//println(now.Second())
|
||||
if delta.Seconds() >= 1.0 {
|
||||
fmt.Printf("FPS: %5d | mspf: %f\n", framesSinceLastSecond, 1000.0/float32(framesSinceLastSecond))
|
||||
framesSinceLastSecond = 0
|
||||
lastSecond = lastSecond.Add(time.Second)
|
||||
}
|
||||
|
||||
delta2 := now.Sub(lastFrame)
|
||||
if delta2 >= frameDuration {
|
||||
|
||||
//t := (float64(tick)) / 1000
|
||||
screen.Clear(0x123456)
|
||||
screen.DrawTextOutline(
|
||||
// "Hello World, this is a test,\nand now for another line :)",
|
||||
// "Hello World, this is a test",
|
||||
// "Vigilance, deathtouch, haste\n\nQuesting Beast can't be blocked by creatures\nwith power 2 or less.\n\nCombat damage that would be dealt by\ncreatures you control can't be prevented.\n\nWhenever Questing Beast deals combat damage\nto an opponent, it deals that much damage to\ntarget planeswalker that player controls.",
|
||||
"Lorem ipsum dolor sit amet,\n"+
|
||||
"consectetur adipiscing elit,\n"+
|
||||
"sed do eiusmod tempor incididunt\n"+
|
||||
"ut labore et dolore magna aliqua.\n"+
|
||||
"Ut enim ad minim veniam, quis\n"+
|
||||
"nostrud exercitation ullamco\n"+
|
||||
"laboris nisi ut aliquip ex ea\n"+
|
||||
"commodo consequat. Duis aute\n"+
|
||||
"irure dolor in reprehenderit in\n"+
|
||||
"voluptate velit esse cillum dolore\n"+
|
||||
"eu fugiat nulla pariatur.\n"+
|
||||
"Excepteur sint occaecat cupidatat\n"+
|
||||
"non proident, sunt in culpa qui\n"+
|
||||
"officia deserunt mollit anim id\n"+
|
||||
"est laborum.",
|
||||
DefaultFont,
|
||||
Vec2i{X: 10, Y: 10},
|
||||
0xffdddd,
|
||||
color.Black,
|
||||
// 50,
|
||||
// 3.0,
|
||||
// float64(tick) / 60.0,
|
||||
)
|
||||
screen.DrawTilemap(tilemap, Vec2i{})
|
||||
screen.Draw(tilemap.Tileset[2], Vec2i{X: 16 * 25, Y: 16 * 4})
|
||||
screen.Draw(tilemap.Tileset[1], Vec2i{X: 16 * 13, Y: 16 * 16})
|
||||
windowImage.DrawUpscale(screen)
|
||||
//windowImage.Draw(screen, Vec2i{})
|
||||
tick += 1
|
||||
framesSinceLastSecond += 1
|
||||
lastFrame = lastFrame.Add(frameDuration)
|
||||
}
|
||||
_ = window.UpdateSurface()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,85 @@
|
|||
package bloob
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/veandco/go-sdl2/sdl"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Runnable interface {
|
||||
Init(settings *Settings)
|
||||
Render(screen *Image)
|
||||
Update()
|
||||
}
|
||||
|
||||
type Settings struct {
|
||||
WindowSize Vec2i
|
||||
Scale int
|
||||
TargetFps int
|
||||
Title string
|
||||
}
|
||||
|
||||
func Run(game Runnable) {
|
||||
_ = sdl.Init(sdl.INIT_EVERYTHING)
|
||||
defer sdl.Quit()
|
||||
|
||||
settings := Settings{
|
||||
WindowSize: Vec2i{X: 640, Y: 360},
|
||||
Scale: 3,
|
||||
TargetFps: 60,
|
||||
Title: "Blooblib",
|
||||
}
|
||||
|
||||
game.Init(&settings)
|
||||
|
||||
window, _ := sdl.CreateWindow(
|
||||
settings.Title,
|
||||
sdl.WINDOWPOS_CENTERED,
|
||||
sdl.WINDOWPOS_CENTERED,
|
||||
int32(settings.WindowSize.X*settings.Scale),
|
||||
int32(settings.WindowSize.Y*settings.Scale),
|
||||
sdl.WINDOW_SHOWN,
|
||||
)
|
||||
surface, _ := window.GetSurface()
|
||||
windowImage := NewImageFromPointer(surface.Data(), MulScalar(settings.WindowSize, settings.Scale))
|
||||
screen := NewImage(settings.WindowSize)
|
||||
screen.Alpha = false
|
||||
|
||||
_ = window.UpdateSurface()
|
||||
|
||||
lastSecond := time.Now()
|
||||
framesSinceLastSecond := 0
|
||||
|
||||
targetFPS := 60
|
||||
frameDuration := time.Second / time.Duration(targetFPS)
|
||||
lastFrame := lastSecond
|
||||
|
||||
running := true
|
||||
for running {
|
||||
for event := sdl.PollEvent(); event != nil; event = sdl.PollEvent() {
|
||||
switch event.(type) {
|
||||
case *sdl.QuitEvent:
|
||||
running = false
|
||||
break
|
||||
}
|
||||
}
|
||||
now := time.Now()
|
||||
delta := now.Sub(lastSecond)
|
||||
if delta.Seconds() >= 1.0 {
|
||||
fmt.Printf("FPS: %5d | mspf: %f\n", framesSinceLastSecond, 1000.0/float32(framesSinceLastSecond))
|
||||
framesSinceLastSecond = 0
|
||||
lastSecond = lastSecond.Add(time.Second)
|
||||
}
|
||||
|
||||
delta2 := now.Sub(lastFrame)
|
||||
if delta2 >= frameDuration {
|
||||
game.Update()
|
||||
game.Render(screen)
|
||||
windowImage.DrawUpscale(screen)
|
||||
framesSinceLastSecond += 1
|
||||
lastFrame = lastFrame.Add(frameDuration)
|
||||
}
|
||||
_ = window.UpdateSurface()
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue