Changelog and Prepare v0.5.0 for Release
This commit is contained in:
parent
76b7dfa4f8
commit
1f274e0ca6
46
Changes.md
46
Changes.md
|
@ -1,5 +1,51 @@
|
||||||
# Changes
|
# Changes
|
||||||
|
|
||||||
|
## v0.5.0-alpha
|
||||||
|
|
||||||
|
Project: Doodle is renamed to Sketchy Maze in this release.
|
||||||
|
|
||||||
|
New Features:
|
||||||
|
|
||||||
|
* **New Tutorial Levels:** the bundled levels demonstrate the built-in doodads
|
||||||
|
and how they interact and shows off several game features.
|
||||||
|
* **Level Editor:** you can now set the Title and Author of the level you're
|
||||||
|
editing by using the Level->Page Settings window.
|
||||||
|
* The **Inventory HUD** in Play Mode now shows a small number indicator for items
|
||||||
|
which have quantity, such as the Small Key. Colored Keys do not have quantity
|
||||||
|
and don't show a number: those are permanent collectibles.
|
||||||
|
* **Fire Pixels:** when the player character dies by touching a "Fire" pixel
|
||||||
|
during gameplay, the death message uses the **name** of the color instead
|
||||||
|
of calling it "fire." For example, if you name a color "spikes" and give
|
||||||
|
it the Fire attribute, it will say "Watch out for spikes!" if the player
|
||||||
|
dies by touching it.
|
||||||
|
* New cheat code: `give all keys` gives all four colored keys and 99x Small Keys
|
||||||
|
to the player character. The `drop all items` cheat clears your inventory.
|
||||||
|
|
||||||
|
New Doodads:
|
||||||
|
|
||||||
|
* **Warp Doors** allow the player character to fast travel to another location
|
||||||
|
on the map. Drag two Warp Doors into your level and use the Link Tool to
|
||||||
|
connect them together. Doors without an exit link will be "locked" and don't
|
||||||
|
open.
|
||||||
|
* **Small Key Doors** are locked doors which consume the Small Keys when unlocked,
|
||||||
|
unlike the colored doors where the key is multi-use. The player character can
|
||||||
|
hold many small keys at once and only unlock as many doors as he has keys.
|
||||||
|
|
||||||
|
Updated Doodads:
|
||||||
|
|
||||||
|
* **Several doodads** were increased in size to better match the player character:
|
||||||
|
Colored Locked Doors, Trapdoors, the Crumbly Floor and Electric Door, and the
|
||||||
|
blue and orange Boolean State Blocks.
|
||||||
|
* **Colored Doors** now have a visual locked vs. unlocked state: while locked, a
|
||||||
|
golden padlock hangs from the door, which goes away after it's been unlocked.
|
||||||
|
* **Switches** now interact differently with Electric Doors: the door will _always_
|
||||||
|
toggle its current state regardless of the 'power' setting of the Switch.
|
||||||
|
* **Buttons** which are linked to a **Sticky Button** will press and stay down
|
||||||
|
if the linked Sticky Button is pressed. Or in other words, the Sticky Button
|
||||||
|
makes all linked Buttons act sticky too and stay pressed while the Sticky
|
||||||
|
Button is pressed. If the Sticky Button is released later (e.g. by receiving
|
||||||
|
power from a Switch) it releases its linked Buttons as well.
|
||||||
|
|
||||||
## v0.4.0-alpha
|
## v0.4.0-alpha
|
||||||
|
|
||||||
This update brings improvements to the editor; you can now fully draw all the
|
This update brings improvements to the editor; you can now fully draw all the
|
||||||
|
|
|
@ -15,6 +15,7 @@ import (
|
||||||
"git.kirsle.net/apps/doodle/pkg/bindata"
|
"git.kirsle.net/apps/doodle/pkg/bindata"
|
||||||
"git.kirsle.net/apps/doodle/pkg/branding"
|
"git.kirsle.net/apps/doodle/pkg/branding"
|
||||||
"git.kirsle.net/apps/doodle/pkg/log"
|
"git.kirsle.net/apps/doodle/pkg/log"
|
||||||
|
"git.kirsle.net/apps/doodle/pkg/shmem"
|
||||||
"git.kirsle.net/apps/doodle/pkg/sound"
|
"git.kirsle.net/apps/doodle/pkg/sound"
|
||||||
"git.kirsle.net/go/render/sdl"
|
"git.kirsle.net/go/render/sdl"
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
|
@ -85,6 +86,10 @@ func main() {
|
||||||
Name: "experimental",
|
Name: "experimental",
|
||||||
Usage: "enable experimental Feature Flags",
|
Usage: "enable experimental Feature Flags",
|
||||||
},
|
},
|
||||||
|
&cli.BoolFlag{
|
||||||
|
Name: "offline",
|
||||||
|
Usage: "offline mode, disables check for new updates",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
app.Action = func(c *cli.Context) error {
|
app.Action = func(c *cli.Context) error {
|
||||||
|
@ -113,6 +118,11 @@ func main() {
|
||||||
balance.FeaturesOn()
|
balance.FeaturesOn()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Offline mode?
|
||||||
|
if c.Bool("offline") {
|
||||||
|
shmem.OfflineMode = true
|
||||||
|
}
|
||||||
|
|
||||||
// SDL engine.
|
// SDL engine.
|
||||||
engine := sdl.New(
|
engine := sdl.New(
|
||||||
fmt.Sprintf("%s v%s", branding.AppName, branding.Version),
|
fmt.Sprintf("%s v%s", branding.AppName, branding.Version),
|
||||||
|
|
|
@ -48,7 +48,7 @@ var (
|
||||||
PlayerCharacterDoodad = "boy.doodad"
|
PlayerCharacterDoodad = "boy.doodad"
|
||||||
|
|
||||||
// Level name for the title screen.
|
// Level name for the title screen.
|
||||||
DemoLevelName = "example 1.level"
|
DemoLevelName = "Tutorial 3.level"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Edit Mode Values
|
// Edit Mode Values
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"git.kirsle.net/apps/doodle/pkg/log"
|
"git.kirsle.net/apps/doodle/pkg/log"
|
||||||
"git.kirsle.net/apps/doodle/pkg/native"
|
"git.kirsle.net/apps/doodle/pkg/native"
|
||||||
"git.kirsle.net/apps/doodle/pkg/scripting"
|
"git.kirsle.net/apps/doodle/pkg/scripting"
|
||||||
|
"git.kirsle.net/apps/doodle/pkg/shmem"
|
||||||
"git.kirsle.net/apps/doodle/pkg/uix"
|
"git.kirsle.net/apps/doodle/pkg/uix"
|
||||||
"git.kirsle.net/apps/doodle/pkg/updater"
|
"git.kirsle.net/apps/doodle/pkg/updater"
|
||||||
"git.kirsle.net/go/render"
|
"git.kirsle.net/go/render"
|
||||||
|
@ -27,6 +28,7 @@ type MainScene struct {
|
||||||
// UI components.
|
// UI components.
|
||||||
labelTitle *ui.Label
|
labelTitle *ui.Label
|
||||||
labelVersion *ui.Label
|
labelVersion *ui.Label
|
||||||
|
labelHint *ui.Label
|
||||||
frame *ui.Frame // Main button frame
|
frame *ui.Frame // Main button frame
|
||||||
|
|
||||||
// Update check variables.
|
// Update check variables.
|
||||||
|
@ -70,6 +72,17 @@ func (s *MainScene) Setup(d *Doodle) error {
|
||||||
ver.Compute(d.Engine)
|
ver.Compute(d.Engine)
|
||||||
s.labelVersion = ver
|
s.labelVersion = ver
|
||||||
|
|
||||||
|
// Arrow Keys hint label (scroll the demo level).
|
||||||
|
s.labelHint = ui.NewLabel(ui.Label{
|
||||||
|
Text: "Hint: press the Arrow keys",
|
||||||
|
Font: render.Text{
|
||||||
|
Size: 16,
|
||||||
|
Color: render.Grey,
|
||||||
|
Shadow: render.Purple,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
s.labelHint.Compute(d.Engine)
|
||||||
|
|
||||||
// "Update Available" button.
|
// "Update Available" button.
|
||||||
s.updateButton = ui.NewButton("Update Button", ui.NewLabel(ui.Label{
|
s.updateButton = ui.NewButton("Update Button", ui.NewLabel(ui.Label{
|
||||||
Text: "An update is available!",
|
Text: "An update is available!",
|
||||||
|
@ -144,6 +157,11 @@ func (s *MainScene) Setup(d *Doodle) error {
|
||||||
|
|
||||||
// checkUpdate checks for a version update and shows the button.
|
// checkUpdate checks for a version update and shows the button.
|
||||||
func (s *MainScene) checkUpdate() {
|
func (s *MainScene) checkUpdate() {
|
||||||
|
if shmem.OfflineMode {
|
||||||
|
log.Info("OfflineMode: skip updates check")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
info, err := updater.Check()
|
info, err := updater.Check()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(err.Error())
|
log.Error(err.Error())
|
||||||
|
@ -244,6 +262,13 @@ func (s *MainScene) Draw(d *Doodle) error {
|
||||||
})
|
})
|
||||||
s.labelVersion.Present(d.Engine, s.labelVersion.Point())
|
s.labelVersion.Present(d.Engine, s.labelVersion.Point())
|
||||||
|
|
||||||
|
// Hint label.
|
||||||
|
s.labelHint.MoveTo(render.Point{
|
||||||
|
X: d.width - s.labelHint.Size().W - 32,
|
||||||
|
Y: d.height - s.labelHint.Size().H - 32,
|
||||||
|
})
|
||||||
|
s.labelHint.Present(d.Engine, s.labelHint.Point())
|
||||||
|
|
||||||
// Update button.
|
// Update button.
|
||||||
s.updateButton.MoveTo(render.Point{
|
s.updateButton.MoveTo(render.Point{
|
||||||
X: 24,
|
X: 24,
|
||||||
|
|
|
@ -19,6 +19,9 @@ var (
|
||||||
// The level.Chunk.ToBitmap() uses this to cache a texture image.
|
// The level.Chunk.ToBitmap() uses this to cache a texture image.
|
||||||
CurrentRenderEngine render.Engine
|
CurrentRenderEngine render.Engine
|
||||||
|
|
||||||
|
// Offline mode, if True then the updates check in MainScene is skipped.
|
||||||
|
OfflineMode bool
|
||||||
|
|
||||||
// Globally available Flash() function so we can emit text to the Doodle UI.
|
// Globally available Flash() function so we can emit text to the Doodle UI.
|
||||||
Flash func(string, ...interface{})
|
Flash func(string, ...interface{})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user