baadly slowdown verison
This commit is contained in:
parent
8dd242b242
commit
e0bab00a23
141
cmd/game/main.go
141
cmd/game/main.go
@ -23,15 +23,15 @@ func init() {
|
||||
type GameState struct {
|
||||
mainfunc chan func()
|
||||
exit chan struct{}
|
||||
input chan string
|
||||
//input chan string
|
||||
rawInput chan int
|
||||
}
|
||||
|
||||
var State = GameState{
|
||||
mainfunc: make(chan func()),
|
||||
exit: make(chan struct{}, 1),
|
||||
input: make(chan string, 5),
|
||||
rawInput: make(chan int, 5),
|
||||
//input: make(chan string, 5),
|
||||
rawInput: make(chan int, 1),
|
||||
}
|
||||
|
||||
func main() {
|
||||
@ -78,50 +78,50 @@ func mainLoop(ctx util.ClientCtx) {
|
||||
|
||||
baseLayer := mainwindow.AddLayer(0, "white")
|
||||
//bgLayer := mainwindow.AddLayer(1, "white")
|
||||
menuLayer := mainwindow.AddLayer(2, "white")
|
||||
//menuLayer := mainwindow.AddLayer(2, "white")
|
||||
|
||||
initRender := func() {
|
||||
//fixme!!
|
||||
baseLayer.WithColor("white").NewWindow(3, 0, 17, 6).NoBorder()
|
||||
baseLayer.WithColor("grey").NewWindow(22, 0, 38, 6).Splash()
|
||||
baseLayer.WithColor("blue").NewWindow(3, 8, 57, 6).NoBorder()
|
||||
menuLayer.WithColor("#99de7c26").NewWindow(50, 1, 10, 10).Splash()
|
||||
menuLayer.WithColor("#aa26edca").NewWindow(0, 5, 40, 20).DoubleBordered("Testing with long title")
|
||||
blt.PrintExt(1, 6, 40, 19, 1, `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Odio morbi quis commodo odio aenean sed. Egestas sed sed risus pretium quam vulputate dignissim suspendisse in. Viverra nam libero justo laoreet sit amet cursus sit. Sed egestas egestas fringilla phasellus faucibus. Ultrices neque ornare aenean euismod elementum nisi quis eleifend. Eget lorem dolor sed viverra ipsum nunc aliquet bibendum. Egestas maecenas pharetra convallis posuere morbi. In hac habitasse platea dictumst quisque. Aenean vel elit scelerisque mauris pellentesque pulvinar.
|
||||
|
||||
Enim diam vulputate ut pharetra sit amet. Vestibulum mattis ullamcorper velit sed. Ultrices dui sapien eget mi. Phasellus vestibulum lorem sed risus ultricies tristique. Dignissim sodales ut eu sem integer vitae. Donec massa sapien faucibus et molestie ac. Turpis nunc eget lorem dolor sed viverra ipsum. Lectus urna duis convallis convallis tellus id interdum velit. Neque vitae tempus quam pellentesque nec nam aliquam. Ornare suspendisse sed nisi lacus sed viverra tellus in hac. Orci a scelerisque purus semper eget duis at tellus. Est ullamcorper eget nulla facilisi etiam dignissim diam. Ipsum dolor sit amet consectetur adipiscing elit. Sed egestas egestas fringilla phasellus. Eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar. Malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi. Pretium quam vulputate dignissim suspendisse in est. Sit amet tellus cras adipiscing. Viverra accumsan in nisl nisi scelerisque.
|
||||
|
||||
Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Convallis tellus id interdum velit. Enim nunc faucibus a pellentesque. Tincidunt augue interdum velit euismod in pellentesque massa placerat duis. Leo duis ut diam quam nulla porttitor massa id. Eu feugiat pretium nibh ipsum consequat nisl. Eget est lorem ipsum dolor sit amet. Et sollicitudin ac orci phasellus egestas. Donec adipiscing tristique risus nec. Et molestie ac feugiat sed. Ante in nibh mauris cursus mattis molestie a iaculis at. Neque laoreet suspendisse interdum consectetur. Vitae et leo duis ut diam quam nulla. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra. Ornare lectus sit amet est placerat in egestas erat.
|
||||
|
||||
Cursus in hac habitasse platea. Aliquet risus feugiat in ante metus dictum. Maecenas sed enim ut sem viverra aliquet eget sit. Vitae aliquet nec ullamcorper sit amet risus nullam. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. Sed tempus urna et pharetra pharetra massa massa ultricies. Est ultricies integer quis auctor. Volutpat est velit egestas dui id ornare arcu. Eget nunc lobortis mattis aliquam faucibus purus. Erat nam at lectus urna duis.
|
||||
|
||||
Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementum sagittis vitae et leo duis ut diam. Elementum curabitur vitae nunc sed velit dignissim. Auctor elit sed vulputate mi sit. Consectetur adipiscing elit ut aliquam purus. Feugiat vivamus at augue eget arcu. Duis ut diam quam nulla porttitor massa id neque. Pharetra magna ac placerat vestibulum lectus mauris ultrices. Non sodales neque sodales ut etiam. Massa ultricies mi quis hendrerit dolor. Est sit amet facilisis magna etiam. Ornare suspendisse sed nisi lacus sed viverra tellus in.
|
||||
`)
|
||||
|
||||
menuLayer.WithColor("red").PutWithBackground(20, 40, "Ы", "#aa1257d4")
|
||||
menuLayer.WithColor("white").PutWithBackground(21, 40, "Щ", "#cd31ed12")
|
||||
menuLayer.WithColor("yellow").PutWithBackground(22, 40, "Ц", "#efcccccc")
|
||||
|
||||
menuLayer.WithColor("red").PutWithBackground(39, 1, "Ы", "#aa1257d4")
|
||||
menuLayer.WithColor("white").PutWithBackground(40, 1, "Щ", "#cd31ed12")
|
||||
menuLayer.WithColor("yellow").PutWithBackground(41, 1, "Ц", "#efcccccc")
|
||||
|
||||
//bgLayer.WithColor("#cc242424").NewWindow(45, 5, 40, 40).Splash()
|
||||
//menuLayer.WithColor("#ffdede89").NewWindow(45, 5, 40, 40).DoubleBordered("Transparent BG window test")
|
||||
//blt.PrintExt(46, 6, 40, 39, 1, `Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Convallis tellus id interdum velit. Enim nunc faucibus a pellentesque. Tincidunt augue interdum velit euismod in pellentesque massa placerat duis. Leo duis ut diam quam nulla porttitor massa id. Eu feugiat pretium nibh ipsum consequat nisl. Eget est lorem ipsum dolor sit amet. Et sollicitudin ac orci phasellus egestas. Donec adipiscing tristique risus nec. Et molestie ac feugiat sed. Ante in nibh mauris cursus mattis molestie a iaculis at. Neque laoreet suspendisse interdum consectetur. Vitae et leo duis ut diam quam nulla. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra. Ornare lectus sit amet est placerat in egestas erat.
|
||||
// initRender := func() {
|
||||
// //fixme!!
|
||||
// baseLayer.WithColor("white").NewWindow(3, 0, 17, 6).NoBorder()
|
||||
// baseLayer.WithColor("grey").NewWindow(22, 0, 38, 6).Splash()
|
||||
// baseLayer.WithColor("blue").NewWindow(3, 8, 57, 6).NoBorder()
|
||||
// menuLayer.WithColor("#99de7c26").NewWindow(50, 1, 10, 10).Splash()
|
||||
// menuLayer.WithColor("#aa26edca").NewWindow(0, 5, 40, 20).DoubleBordered("Testing with long title")
|
||||
// blt.PrintExt(1, 6, 40, 19, 1, `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Odio morbi quis commodo odio aenean sed. Egestas sed sed risus pretium quam vulputate dignissim suspendisse in. Viverra nam libero justo laoreet sit amet cursus sit. Sed egestas egestas fringilla phasellus faucibus. Ultrices neque ornare aenean euismod elementum nisi quis eleifend. Eget lorem dolor sed viverra ipsum nunc aliquet bibendum. Egestas maecenas pharetra convallis posuere morbi. In hac habitasse platea dictumst quisque. Aenean vel elit scelerisque mauris pellentesque pulvinar.
|
||||
//
|
||||
//Cursus in hac habitasse platea. Aliquet risus feugiat in ante metus dictum. Maecenas sed enim ut sem viverra aliquet eget sit. [color=orange]Vitae[/color] aliquet nec ullamcorper sit amet risus nullam. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. Sed tempus urna et pharetra pharetra massa massa ultricies. Est ultricies integer quis auctor. Volutpat est velit egestas dui id ornare arcu. Eget nunc lobortis mattis aliquam faucibus purus. Erat nam at lectus urna duis.
|
||||
//Enim diam vulputate ut pharetra sit amet. Vestibulum mattis ullamcorper velit sed. Ultrices dui sapien eget mi. Phasellus vestibulum lorem sed risus ultricies tristique. Dignissim sodales ut eu sem integer vitae. Donec massa sapien faucibus et molestie ac. Turpis nunc eget lorem dolor sed viverra ipsum. Lectus urna duis convallis convallis tellus id interdum velit. Neque vitae tempus quam pellentesque nec nam aliquam. Ornare suspendisse sed nisi lacus sed viverra tellus in hac. Orci a scelerisque purus semper eget duis at tellus. Est ullamcorper eget nulla facilisi etiam dignissim diam. Ipsum dolor sit amet consectetur adipiscing elit. Sed egestas egestas fringilla phasellus. Eget velit aliquet sagittis id consectetur purus ut faucibus pulvinar. Malesuada fames ac turpis egestas maecenas pharetra convallis posuere morbi. Pretium quam vulputate dignissim suspendisse in est. Sit amet tellus cras adipiscing. Viverra accumsan in nisl nisi scelerisque.
|
||||
//
|
||||
//Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Convallis tellus id interdum velit. Enim nunc faucibus a pellentesque. Tincidunt augue interdum velit euismod in pellentesque massa placerat duis. Leo duis ut diam quam nulla porttitor massa id. Eu feugiat pretium nibh ipsum consequat nisl. Eget est lorem ipsum dolor sit amet. Et sollicitudin ac orci phasellus egestas. Donec adipiscing tristique risus nec. Et molestie ac feugiat sed. Ante in nibh mauris cursus mattis molestie a iaculis at. Neque laoreet suspendisse interdum consectetur. Vitae et leo duis ut diam quam nulla. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra. Ornare lectus sit amet est placerat in egestas erat.
|
||||
//
|
||||
//Cursus in hac habitasse platea. Aliquet risus feugiat in ante metus dictum. Maecenas sed enim ut sem viverra aliquet eget sit. Vitae aliquet nec ullamcorper sit amet risus nullam. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. Sed tempus urna et pharetra pharetra massa massa ultricies. Est ultricies integer quis auctor. Volutpat est velit egestas dui id ornare arcu. Eget nunc lobortis mattis aliquam faucibus purus. Erat nam at lectus urna duis.
|
||||
//
|
||||
//Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementum sagittis vitae et leo duis ut diam. Elementum curabitur vitae nunc sed velit dignissim. Auctor elit sed vulputate mi sit. Consectetur adipiscing elit ut aliquam purus. Feugiat vivamus at augue eget arcu. Duis ut diam quam nulla porttitor massa id neque. Pharetra magna ac placerat vestibulum lectus mauris ultrices. Non sodales neque sodales ut etiam. Massa ultricies mi quis hendrerit dolor. Est sit amet facilisis magna etiam. Ornare suspendisse sed nisi lacus sed viverra tellus in.
|
||||
//`)
|
||||
//
|
||||
// menuLayer.WithColor("red").PutWithBackground(20, 40, "Ы", "#aa1257d4")
|
||||
// menuLayer.WithColor("white").PutWithBackground(21, 40, "Щ", "#cd31ed12")
|
||||
// menuLayer.WithColor("yellow").PutWithBackground(22, 40, "Ц", "#efcccccc")
|
||||
//
|
||||
// menuLayer.WithColor("red").PutWithBackground(39, 1, "Ы", "#aa1257d4")
|
||||
// menuLayer.WithColor("white").PutWithBackground(40, 1, "Щ", "#cd31ed12")
|
||||
// menuLayer.WithColor("yellow").PutWithBackground(41, 1, "Ц", "#efcccccc")
|
||||
//
|
||||
// //bgLayer.WithColor("#cc242424").NewWindow(45, 5, 40, 40).Splash()
|
||||
// //menuLayer.WithColor("#ffdede89").NewWindow(45, 5, 40, 40).DoubleBordered("Transparent BG window test")
|
||||
// //blt.PrintExt(46, 6, 40, 39, 1, `Lorem mollis aliquam ut porttitor leo a diam sollicitudin tempor. Convallis tellus id interdum velit. Enim nunc faucibus a pellentesque. Tincidunt augue interdum velit euismod in pellentesque massa placerat duis. Leo duis ut diam quam nulla porttitor massa id. Eu feugiat pretium nibh ipsum consequat nisl. Eget est lorem ipsum dolor sit amet. Et sollicitudin ac orci phasellus egestas. Donec adipiscing tristique risus nec. Et molestie ac feugiat sed. Ante in nibh mauris cursus mattis molestie a iaculis at. Neque laoreet suspendisse interdum consectetur. Vitae et leo duis ut diam quam nulla. Sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra. Ornare lectus sit amet est placerat in egestas erat.
|
||||
////
|
||||
////Cursus in hac habitasse platea. Aliquet risus feugiat in ante metus dictum. Maecenas sed enim ut sem viverra aliquet eget sit. [color=orange]Vitae[/color] aliquet nec ullamcorper sit amet risus nullam. Scelerisque fermentum dui faucibus in ornare quam viverra orci sagittis. Sed tempus urna et pharetra pharetra massa massa ultricies. Est ultricies integer quis auctor. Volutpat est velit egestas dui id ornare arcu. Eget nunc lobortis mattis aliquam faucibus purus. Erat nam at lectus urna duis.
|
||||
////
|
||||
////Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementum sagittis vitae et leo duis ut diam. Elementum curabitur vitae nunc sed velit dignissim. Auctor elit sed vulputate mi sit. Consectetur adipiscing elit ut aliquam purus. Feugiat vivamus at augue eget arcu. Duis ut diam quam nulla porttitor massa id neque. Pharetra magna ac placerat vestibulum lectus mauris ultrices. Non sodales neque sodales ut etiam. Massa ultricies mi quis hendrerit dolor. Est sit amet facilisis magna etiam. Ornare suspendisse sed nisi lacus sed viverra tellus in.
|
||||
////`)
|
||||
//
|
||||
// baseLayer.Print(1, 1, "Hello, [font=bold]world[/font]!")
|
||||
// baseLayer.Print(1, 4, "Testing line-[color=orange]spacing[/color]")
|
||||
//
|
||||
// blt.Refresh()
|
||||
// }
|
||||
|
||||
baseLayer.Print(1, 1, "Hello, [font=bold]world[/font]!")
|
||||
baseLayer.Print(1, 4, "Testing line-[color=orange]spacing[/color]")
|
||||
|
||||
blt.Refresh()
|
||||
}
|
||||
|
||||
State.Do(initRender)
|
||||
//State.Do(initRender)
|
||||
|
||||
level := gamemap.NewLevel(ctx, "test", 1)
|
||||
level = mapgens.DefaultGen(level)
|
||||
@ -130,20 +130,45 @@ Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementu
|
||||
vp.Render()
|
||||
})
|
||||
|
||||
d2, _ := time.ParseDuration("16ms")
|
||||
|
||||
fpsTicker := time.NewTicker(d2)
|
||||
d2, _ := time.ParseDuration("25ms")
|
||||
//
|
||||
//fpsTicker := time.NewTicker(d2)
|
||||
fpsCount := 0
|
||||
var modifiers = []int{blt.TK_SHIFT, blt.TK_ALT, blt.TK_CONTROL}
|
||||
|
||||
//main loop!
|
||||
for {
|
||||
// не оставляйте default в бесконесчном select {} - сожрет всё CPU
|
||||
startTick := time.Now()
|
||||
select {
|
||||
case key := <-State.input:
|
||||
switch key {
|
||||
case keycode := <-State.rawInput:
|
||||
if keycode == blt.TK_CLOSE {
|
||||
ctx.Logger().Warn().Msg("exiting on window close...")
|
||||
//State.exit <- struct{}{}
|
||||
ctx.Logger().Warn().Msg("...done")
|
||||
}
|
||||
var pressed = ""
|
||||
var isModifier, _ = util.InArray(keycode, modifiers)
|
||||
if !isModifier {
|
||||
|
||||
pressed = ui.Scancodemap[keycode]
|
||||
|
||||
if blt.Check(blt.TK_SHIFT) != 0 {
|
||||
pressed = "Shift+" + pressed
|
||||
}
|
||||
if blt.Check(blt.TK_ALT) != 0 {
|
||||
pressed = "Alt+" + pressed
|
||||
}
|
||||
if blt.Check(blt.TK_CONTROL) != 0 {
|
||||
pressed = "Ctrl+" + pressed
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
switch pressed {
|
||||
case "F10":
|
||||
State.Do(func(){
|
||||
blt.Set("window: size=100x47; font: ./resources/fonts-ttf/UbuntuMono-R.ttf, size=11;")
|
||||
return
|
||||
})
|
||||
case "Ctrl+q":
|
||||
fallthrough
|
||||
@ -155,26 +180,19 @@ Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementu
|
||||
default:
|
||||
State.Do(func(){
|
||||
baseLayer.ClearArea(0, 3, 40, 1)
|
||||
baseLayer.Print(1, 3, "Key: "+key)
|
||||
baseLayer.Print(1, 3, "Key: "+ pressed)
|
||||
baseLayer.Print(1, 4, "█")
|
||||
return
|
||||
})
|
||||
}
|
||||
case <- fpsTicker.C:
|
||||
default:
|
||||
|
||||
fpsCount++
|
||||
State.Do(func() {
|
||||
var key, keycode = ui.ReadKey(ctx)
|
||||
var _, keycode = ui.ReadKey()
|
||||
if keycode == blt.TK_NONE {
|
||||
return
|
||||
}
|
||||
if keycode == blt.TK_CLOSE {
|
||||
ctx.Logger().Warn().Msg("exiting on window close...")
|
||||
State.exit <- struct{}{}
|
||||
ctx.Logger().Warn().Msg("...done")
|
||||
return
|
||||
}
|
||||
_ = key
|
||||
State.input <- key
|
||||
State.rawInput <- keycode
|
||||
//time.Sleep(d2)
|
||||
})
|
||||
//animate terrain 5 times slower than fps
|
||||
@ -188,7 +206,10 @@ Sed euismod nisi porta lorem mollis aliquam ut porttitor leo. Ut tellus elementu
|
||||
//update screen
|
||||
State.Do(func() {
|
||||
blt.Refresh()
|
||||
time.Sleep(d2) //Костыль для убирания 100% CPU
|
||||
diff := d2.Nanoseconds() - time.Since(startTick).Nanoseconds()
|
||||
if diff > 0 {
|
||||
time.Sleep(time.Duration(diff / 2)) //Костыль для убирания 100% CPU
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ import (
|
||||
|
||||
var modifiers = []int{blt.TK_SHIFT, blt.TK_ALT, blt.TK_CONTROL}
|
||||
|
||||
func ReadKey(ctx util.ClientCtx) (string, int) {
|
||||
func ReadKey() (string, int) {
|
||||
if !blt.HasInput() {
|
||||
return "", blt.TK_NONE
|
||||
}
|
||||
@ -27,7 +27,7 @@ func ReadKey(ctx util.ClientCtx) (string, int) {
|
||||
if blt.Check(blt.TK_CONTROL) != 0 {
|
||||
pressed = "Ctrl+" + pressed
|
||||
}
|
||||
ctx.Logger().Debug().Msg(pressed)
|
||||
//ctx.Logger().Debug().Msg(pressed)
|
||||
}
|
||||
|
||||
return pressed, key
|
||||
|
Loading…
x
Reference in New Issue
Block a user