diff --git a/Changes.md b/Changes.md index f8f9f05..7cb3617 100644 --- a/Changes.md +++ b/Changes.md @@ -2,6 +2,22 @@ ## v0.13.2 (TBD) +Some new features: + +* **Doodads can be non-square!** You can now set a rectangular canvas size + for your doodads. Many of the game's built-in doodads that used to be + off-center before (doors, creatures) because their sprites were not squares + now have correct rectangular shapes. +* A **Cheats Menu** has been added which enables you to enter many of the + game's cheat codes by clicking on buttons instead. Enable it through the + "Experimental" tab of the Settings, and the cheats menu can be opened from + the Help menu bar during gameplay. + +Other miscellaneous changes: + +* The default Author name on your new drawings will prefer to use your + license registration name (if the game is registered) before falling back + on your operating system's $USER name like before. * In the level editor, you can now use the Pan Tool to access the actor properties of doodads you've dropped into your level. Similar to the Actor Tool, when you mouse-over an actor on your level it will highlight @@ -12,6 +28,16 @@ on your level as might happen with the Actor Tool! * Start distributing AppImage releases for GNU/Linux (64-bit and 32-bit) +Some technical changes: + +* Chunk sizes in levels/doodads is now a uint8 type, meaning the maximum + chunk size is 255x255 pixels. The game's default has always been 128x128 + but now there is a limit. This takes a step towards optimizing the game's + file formats: large world coordinates (64-bit) are mapped to a chunk + coordinate, and if each chunk only needs to worry about the 255 pixels + in its territory, space can be saved in memory without chunks needing to + theoretically support 64-bit sizes of pixels! + ## v0.13.1 (Oct 10 2022) This release brings a handful of minor new features to the game. diff --git a/pkg/balance/cheats.go b/pkg/balance/cheats.go index fb12527..d7b3344 100644 --- a/pkg/balance/cheats.go +++ b/pkg/balance/cheats.go @@ -43,7 +43,7 @@ var ( // Actor replacement cheats var CheatActors = map[string]string{ - "pinocchio": "boy", + "pinocchio": PlayerCharacterDoodad, "the cell": "azu-blu", "super azulian": "azu-red", "hyper azulian": "azu-white", diff --git a/pkg/cheats.go b/pkg/cheats.go index 4e0bd69..1e4699b 100644 --- a/pkg/cheats.go +++ b/pkg/cheats.go @@ -36,10 +36,15 @@ func (d *Doodle) MakeCheatsWindow(supervisor *ui.Supervisor) *ui.Window { return d.Scene.Name() }, RunCommand: func(command string) { + // If we are in Play Mode, every command out of here is cheating. + if playScene, ok := d.Scene.(*PlayScene); ok { + playScene.SetCheated() + } d.shell.Execute(command) }, OnSetPlayerCharacter: func(doodad string) { if scene, ok := d.Scene.(*PlayScene); ok { + scene.SetCheated() scene.SetPlayerCharacter(doodad) } else { shmem.FlashError("This only works during Play Mode.") diff --git a/pkg/play_scene.go b/pkg/play_scene.go index 7827fea..03fe151 100644 --- a/pkg/play_scene.go +++ b/pkg/play_scene.go @@ -643,6 +643,11 @@ func (s *PlayScene) GetCheated() bool { return s.cheated } +// GetPerfect gives read-only access to the perfectRun flag. +func (s *PlayScene) GetPerfect() bool { + return s.perfectRun +} + // ShowEndLevelModal centralizes the EndLevel modal config. // This is the common handler function between easy methods such as // BeatLevel, FailLevel, and DieByFire. @@ -833,6 +838,13 @@ func (s *PlayScene) Draw(d *Doodle) error { } } + // Bug: sometimes (especially after cheating) if you restart a level + // properly, cheated=false perfectRun=true but the perfectRunIcon + // would not be showing. + if !s.cheated && s.perfectRun && s.timerPerfectImage.Hidden() { + s.timerPerfectImage.Show() + } + // Draw the UI screen and any widgets that attached to it. s.screen.Compute(d.Engine) s.screen.Present(d.Engine, render.Origin)