Noah Petherbridge
f0101ba048
* Take advantage of the new Window Manager feature of the UI toolkit. * Move the MenuScene's "New Level" and "Play/Edit Level" windows into stand-alone functions in new pkg/windows/ package. The 'windows' package is isolated from the rest of Doodle and communicates using config variables and callback functions to avoid circular dependency. * MenuScene calls the window constructors from the new package. * Add an "Options" button to the Menu Bar in the Editor Scene, which opens the "New Level" window to allow changing the wallpaper or bounding type of the level currently being edited. * Move the cheat codes into their own file, cheats.go
94 lines
2.6 KiB
Go
94 lines
2.6 KiB
Go
package doodle
|
|
|
|
// cheatCommand is a subroutine of the Command.Run() method of the Doodle
|
|
// developer shell (commands.go). It looks for special cheat codes entered
|
|
// into the command shell and executes them.
|
|
//
|
|
// Returns true if a cheat was intercepted, false if the command is not a cheat.
|
|
func (c Command) cheatCommand(d *Doodle) bool {
|
|
// Some cheats only work in Play Mode.
|
|
playScene, isPlay := d.Scene.(*PlayScene)
|
|
|
|
// Cheat codes
|
|
switch c.Raw {
|
|
case "unleash the beast":
|
|
if fpsDoNotCap {
|
|
d.Flash("Reset frame rate throttle to factory default FPS")
|
|
} else {
|
|
d.Flash("Unleashing as many frames as we can render!")
|
|
}
|
|
fpsDoNotCap = !fpsDoNotCap
|
|
|
|
case "don't edit and drive":
|
|
if isPlay {
|
|
playScene.drawing.Editable = true
|
|
d.Flash("Level canvas is now editable. Don't edit and drive!")
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to make the level canvas editable.")
|
|
}
|
|
|
|
case "scroll scroll scroll your boat":
|
|
if isPlay {
|
|
playScene.drawing.Scrollable = true
|
|
d.Flash("Level canvas is now scrollable with the arrow keys.")
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to make the level scrollable.")
|
|
}
|
|
|
|
case "import antigravity":
|
|
if isPlay {
|
|
playScene.antigravity = !playScene.antigravity
|
|
playScene.Player.SetGravity(!playScene.antigravity)
|
|
|
|
if playScene.antigravity {
|
|
d.Flash("Gravity disabled for player character.")
|
|
} else {
|
|
d.Flash("Gravity restored for player character.")
|
|
}
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to disable gravity for the player character.")
|
|
}
|
|
|
|
case "ghost mode":
|
|
if isPlay {
|
|
playScene.noclip = !playScene.noclip
|
|
playScene.Player.SetNoclip(playScene.noclip)
|
|
|
|
playScene.antigravity = playScene.noclip
|
|
playScene.Player.SetGravity(!playScene.antigravity)
|
|
|
|
if playScene.noclip {
|
|
d.Flash("Clipping disabled for player character.")
|
|
} else {
|
|
d.Flash("Clipping and gravity restored for player character.")
|
|
}
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to disable clipping for the player character.")
|
|
}
|
|
|
|
case "give all keys":
|
|
if isPlay {
|
|
playScene.Player.AddItem("key-red.doodad", 0)
|
|
playScene.Player.AddItem("key-blue.doodad", 0)
|
|
playScene.Player.AddItem("key-green.doodad", 0)
|
|
playScene.Player.AddItem("key-yellow.doodad", 0)
|
|
d.Flash("Given all keys to the player character.")
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to get all colored keys.")
|
|
}
|
|
|
|
case "drop all items":
|
|
if isPlay {
|
|
playScene.Player.ClearInventory()
|
|
d.Flash("Cleared inventory of player character.")
|
|
} else {
|
|
d.Flash("Use this cheat in Play Mode to clear your inventory.")
|
|
}
|
|
|
|
default:
|
|
return false
|
|
}
|
|
|
|
return true
|
|
}
|