diff --git a/chi-tor.wren b/chi-tor.wren index 7484959..5f9ec18 100644 --- a/chi-tor.wren +++ b/chi-tor.wren @@ -28,24 +28,31 @@ class D { static down { 1 } static left { 2 } static right { 3 } + + static toRot(dir) { + if (dir == D.up) { + return 0 + } + if (dir == D.right) { + return 1 + } + if (dir == D.down) { + return 2 + } + if (dir == D.left) { + return 3 + } + return -1 + } } -var CheatSeq = [D.up, D.up, D.left, D.right, D.up, D.down] +class Cheat { + static seq { [D.up, D.up, D.left, D.right, D.up, D.down] } + static enabled { __enabled } + static enabled=(b) { __enabled = b } -var DirRot = Fn.new {|dir| - if (dir == D.up) { - return 0 - } - if (dir == D.right) { - return 1 - } - if (dir == D.down) { - return 2 - } - if (dir == D.left) { - return 3 - } - return -1 + static doublePoints { __double_points } + static doublePoints=(b) { __double_points = b } } class Star { @@ -75,7 +82,7 @@ class HintPlanet { _x = x _y = y _scrollSpeed = scrollSpeed - _rot = DirRot.call(dir) + _rot = D.toRot(dir) _size = 32 } @@ -344,8 +351,8 @@ class World { var mediumTick = (spaceBetween + width) / speed if (_t % mediumTick == 0) { var dir = -1 - if (_hint_planet_i < CheatSeq.count) { - dir = CheatSeq[_hint_planet_i] + if (_hint_planet_i < Cheat.seq.count) { + dir = Cheat.seq[_hint_planet_i] } _stars.add(HintPlanet.new(W, R.int(16,H-32), speed, dir)) _hint_planet_i = _hint_planet_i + 1 @@ -480,7 +487,7 @@ class Game is TIC{ _world = World.new() _p_buttons = [] _p_index = 0 - _d_enabled = false + _c_index = 0 } TIC() { @@ -494,40 +501,49 @@ class Game is TIC{ if (TIC.btnp(4)) { _state = Game.game } + } else if (state == Game.game) { if (TIC.btnp(5)) { _state = Game.pause _p_buttons = List.filled(10, -1) _p_index = 0 } + } else if (state == Game.pause) { if (TIC.btnp(5)) { _state = Game.game } - for (k in 0..3) { - if (TIC.btnp(k)) { - _p_buttons[_p_index % _p_buttons.count] = k - _p_index = _p_index + 1 + if (!Cheat.enabled) { + for (k in 0..3) { + if (TIC.btnp(k)) { + _p_buttons[_p_index % _p_buttons.count] = k + _p_index = _p_index + 1 + } + } + + if (cheatFound()) { + Cheat.enabled = true + } + } else { + if (TIC.btnp(4)) { + Cheat.doublePoints = !Cheat.doublePoints } } - - if (cheatFound()) { - _d_enabled = true - } } + _world.update(state) } cheatFound() { var end = _p_index - var start = (end - CheatSeq.count) + var start = (end - Cheat.seq.count) if (start < 0) { return false } - for (i in 0...CheatSeq.count) { + for (i in 0...Cheat.seq.count) { var dir = _p_buttons[(start + i) % _p_buttons.count] - var cheat = CheatSeq[i] + var cheat = Cheat.seq[i] if (dir != cheat) { return false } @@ -550,7 +566,7 @@ class Game is TIC{ } else if (state == Game.pause) { TIC.print("PAUSE", 90, H/4, Color.white, false, 2) - if (!_d_enabled) { + if (!Cheat.enabled) { TIC.print("debug mode: disabled", 60, H - 10, Color.white) var end = _p_index @@ -558,11 +574,19 @@ class Game is TIC{ for (i in start...end) { var pos = i - start var dir = _p_buttons[i % _p_buttons.count] - var rot = DirRot.call(dir) + var rot = D.toRot(dir) var sprId = 84 TIC.spr(sprId, 5 + pos * 10, H - 20, 0, 1, 0, rot) } } else { + var h = H/4 + 20 + TIC.spr(116, 50, h - 1, 0) + TIC.print("double points:", 60, h, Color.white) + if (Cheat.doublePoints) { + TIC.print("ON", 140, h, Color.green) + } else { + TIC.print("OFF", 140, h, Color.red) + } TIC.print("debug mode: enabled", 60, H - 10, Color.white) } } @@ -600,6 +624,7 @@ class Game is TIC{ // 113:2222222222222222222222222222222222222222022222220000222200000000 // 114:2222222222222222222222222222222222222222222222202222000000000000 // 115:2222200022220000222000002200000020000000000000000000000000000000 +// 116:00c0000000cc000000ccc00000cccc0000ccc00000cc000000c0000000000000 // //