changed help system

master
Pixdigit 5 years ago
parent a0fbe14464
commit c3258d7899

@ -4,8 +4,6 @@ import (
"github.com/veandco/go-sdl2/sdl"
)
var renderer *sdl.Renderer
func main() {
sdl.Init(sdl.INIT_EVERYTHING)
@ -15,7 +13,7 @@ func main() {
window, _ := sdl.CreateWindow("AlienSignal", sdl.WINDOWPOS_UNDEFINED, sdl.WINDOWPOS_UNDEFINED, 0, 0, windowFlags)
windowSizeX, windowSizeY := window.GetSize()
renderer, _ = sdl.CreateRenderer(window, -1, sdl.RENDERER_PRESENTVSYNC)
renderer, _ := sdl.CreateRenderer(window, -1, sdl.RENDERER_PRESENTVSYNC)
sdl.SetHint(sdl.HINT_RENDER_SCALE_QUALITY, "2");
xScale = float32(windowSizeX) / 1920
yScale = float32(windowSizeY) / 1080
@ -38,6 +36,8 @@ func main() {
level5(renderer)
case 6:
level6(renderer)
case 7:
level7(renderer)
default:
gameState = 0
}

@ -33,7 +33,18 @@ func ResetHandlers() {
make([]KeypressHandler, 0),
make([]QuitHandler, 0),
}
tries = 0
RegisterKeypressHandler(
func(scancode sdl.Scancode){
if scancode == sdl.SCANCODE_F1 {
helpFunc(false)
}
if scancode == sdl.SCANCODE_F12 {
helpFunc(true)
}
},
)
tries = -1
helpFunc(false)
}
func UpdateEvents() {

@ -6,42 +6,42 @@ import (
)
var hints map[int]string
var hints []string
var tries int
var solution string
var helpText string
var smallFont *ttf.Font
func init() {
hints = map[int]string{}
hints = []string{}
ttf.Init()
smallFont, _ = ttf.OpenFont("./assets/josefin-sans/JosefinSans-Regular.ttf", 70)
}
func helpFunc(solution bool) {
if !solution {
func helpFunc(shoudSolution bool) {
if tries < 0 {
helpText = ""
tries++
} else if tries < len(hints){
helpText = hints[tries]
tries++
} else {
tries = 0
}
if shoudSolution {
helpText = solution
tries = -1
}
}
func BlitHelp() {
var helpIndex int
var found bool
var helpText string
for helpIndex = tries; helpIndex != 0 && !found; helpIndex-- {
helpText, found = hints[helpIndex]
}
if found {
width, height, _ := smallFont.SizeUTF8(helpText)
func BlitHelp(renderer *sdl.Renderer) {
width, height, _ := smallFont.SizeUTF8(helpText)
textSurf, _ := smallFont.RenderUTF8Blended(helpText, sdl.Color{20, 20, 0, 255})
defer textSurf.Free()
textSurf, _ := smallFont.RenderUTF8Blended(helpText, sdl.Color{20, 20, 0, 255})
defer textSurf.Free()
textText, _ := renderer.CreateTextureFromSurface(textSurf)
defer textText.Destroy()
textText, _ := renderer.CreateTextureFromSurface(textSurf)
defer textText.Destroy()
renderer.Copy(textText, nil, &sdl.Rect{200, 200, int32(width), int32(height)})
}
renderer.Copy(textText, nil, &sdl.Rect{200, 200, int32(width), int32(height)})
}

@ -77,8 +77,6 @@ func (k *keyField) keyListener(scancode sdl.Scancode) {
if len(k.enteredChar) > 0 {
k.enteredChar = k.enteredChar[:len(k.enteredChar) - 1]
}
} else if scancode == sdl.SCANCODE_F1 {
k.onFailure(true)
} else if scancode == sdl.SCANCODE_RETURN {
if strings.Join(k.enteredChar, "") == k.passwd {
k.onSuccess()

@ -12,14 +12,13 @@ func level1(renderer *sdl.Renderer) {
buttonConf := [][]int{
[]int{1},
}
solution := "a"
hints = map[int]string{
-1 : "The solution is \"" + solution + "\"",
3 : "Think binary",
5 : "This represents a letter",
8 : "on = 1",
12: "The Alphabet begins with \"a\"",
15: "If you really have no clue press f1",
answer := "a"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Think binary",
"This represents a letter",
"on = 1",
"The Alphabet begins with \"a\"",
}
buttons := []button{}
@ -33,7 +32,7 @@ func level1(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -45,7 +44,7 @@ func level1(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -12,11 +12,11 @@ func level2(renderer *sdl.Renderer) {
buttonConf := [][]int{
[]int{0, 1},
}
solution := "a"
hints = map[int]string{
5 : "Think about numbers",
10 : "Remember 03 = 3",
-1 : "The solution is \"" + solution + "\"",
answer := "a"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Think about numbers",
"Remember 03 = 3",
}
buttons := []button{}
@ -30,7 +30,7 @@ func level2(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -42,7 +42,7 @@ func level2(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -12,11 +12,11 @@ func level3(renderer *sdl.Renderer) {
buttonConf := [][]int{
[]int{0, 0, 1},
}
solution := "a"
hints = map[int]string{
5 : "Leading zeros don't change the number",
10: "Just like last time: 006 = 6",
-1 : "The solution is \"" + solution + "\"",
answer := "a"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Leading zeros don't change the number",
"Just like last time: 006 = 6",
}
buttons := []button{}
@ -30,7 +30,7 @@ func level3(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -42,7 +42,7 @@ func level3(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -13,12 +13,12 @@ func level4(renderer *sdl.Renderer) {
[]int{0, 1, 0},
}
solution := "b"
hints = map[int]string{
5 : "Think about what the number 15 really means",
9 : "It means 1 * 10^1 + 5 * 10^0",
12 : "Binary ist just the same: 10 = 1 * 2^1 + 0 * 2 ^ 0",
-1 : "The solution is \"" + solution + "\"",
answer := "b"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Think about what the number 15 really means",
"It means 1 * 10^1 + 5 * 10^0",
"Binary ist just the same: 10 = 1 * 2^1 + 0 * 2 ^ 0",
}
@ -34,7 +34,7 @@ func level4(renderer *sdl.Renderer) {
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -45,7 +45,7 @@ func level4(renderer *sdl.Renderer) {
b.Blit(renderer)
}
BlitHelp()
BlitHelp(renderer)
key1.Blit(renderer)
renderer.Present()
sdl.Delay(15)

@ -13,11 +13,11 @@ func level5(renderer *sdl.Renderer) {
[]int{0, 1, 1},
}
solution := "c"
hints = map[int]string{
5 : "Do you REALLY need help?",
8 : "Alrighty then: 1 * 2 + 1 * 1",
-1 : "The solution is \"" + solution + "\"",
answer := "c"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Do you REALLY need help?",
"Alrighty then: 1 * 2 + 1 * 1",
}
buttons := []button{}
@ -31,7 +31,7 @@ func level5(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){print("success"); levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -43,7 +43,7 @@ func level5(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -12,12 +12,12 @@ func level6(renderer *sdl.Renderer) {
buttonConf := [][]int{
[]int{1, 0, 1},
}
solution := "e"
hints = map[int]string{
5 : "WHOOO one number more",
7 : "…",
8 : "2^2 + 2^0",
-1 : "The solution is \"" + solution + "\"",
answer := "e"
solution = "The solution is \"" + answer + "\""
hints = []string{
"WHOOO one number more",
"…",
"2^2 + 2^0",
}
buttons := []button{}
@ -31,7 +31,7 @@ func level6(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -43,7 +43,7 @@ func level6(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -13,12 +13,12 @@ func level7(renderer *sdl.Renderer) {
[]int{0, 0, 1, 0 ,0, 0},
[]int{0, 0, 1, 0, 0, 1},
}
solution := "hi"
hints = map[int]string{
5 : "Do not miscount",
10 : "TWO lines … TWO characters",
15 : "Take a pencil and write a list for all letters",
-1 : "The solution is \"" + solution + "\"",
answer := "hi"
solution = "The solution is \"" + answer + "\""
hints = []string{
"Do not miscount",
"TWO lines … TWO characters",
"Take a pencil and write a list for all letters",
}
buttons := []button{}
@ -32,7 +32,7 @@ func level7(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -44,7 +44,7 @@ func level7(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -12,10 +12,10 @@ func level_(renderer *sdl.Renderer) {
buttonConf := [][]int{
[]int{},
}
solution := ""
hints = map[int]string{
0 : "",
-1 : "The solution is \"" + solution + "\"",
answer := ""
solution = "The solution is \"" + answer + "\""
hints = []string{
"",
}
buttons := []button{}
@ -29,7 +29,7 @@ func level_(renderer *sdl.Renderer) {
buttons = append(buttons, butt)
}
}
key1 := createKeyField(solution, func(){levelState++; running = false}, helpFunc)
key1 := createKeyField(answer, func(){levelState++; running = false}, func(_ bool){})
for running {
UpdateEvents()
@ -41,7 +41,7 @@ func level_(renderer *sdl.Renderer) {
}
key1.Blit(renderer)
BlitHelp()
BlitHelp(renderer)
renderer.Present()
sdl.Delay(15)
}

@ -21,13 +21,28 @@ func ShowMainMenu(renderer *sdl.Renderer) {
_, _, width, height, _ := image.Query()
rect := &sdl.Rect{0, 0, width, height}
kfStart := createKeyField("start", func(){gameState = 2; running = false}, showHint)
kfStart := createKeyField("start", func(){gameState = 2; running = false}, func(bool){})
kfReset := createKeyField("reset", func(){levelState = 0}, func(bool){})
hints = []string{
"\"start\" \"reset\" are keywords. Use f1 to get a new tip.",
"I see you understand. No go on and start.",
"Really? Is this really neccessary?",
"Ok I am going to shut up now.",
"",
"",
"",
"...",
"You got to be kidding me",
"",
}
helpFunc(false)
for running {
renderer.Copy(image, nil, rect)
kfStart.Blit(renderer)
kfReset.Blit(renderer)
BlitHelp(renderer)
renderer.Present()
renderer.Clear()
UpdateEvents()
@ -35,7 +50,3 @@ func ShowMainMenu(renderer *sdl.Renderer) {
}
}
func showHint(solution bool) {
}

Loading…
Cancel
Save