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