Command-line flag for window resolution
* Added a --window flag to the game executable to specify the startup window resolution. Either specify an exact size (e.g. 1024x768) or a special keyword "desktop", "mobile" or "landscape" * Default size is "desktop" or 1024x768 * Mobile simulates a smartphone form factor of 375x812 * Landscape is mobile but flipped horizontally. * Doodle UX isn't great on mobile but this is a step towards working on mobile friendly UI
This commit is contained in:
parent
dabf88dff8
commit
5f75168235
|
@ -1,11 +1,14 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
doodle "git.kirsle.net/apps/doodle/pkg"
|
doodle "git.kirsle.net/apps/doodle/pkg"
|
||||||
|
@ -65,6 +68,11 @@ func main() {
|
||||||
Aliases: []string{"e"},
|
Aliases: []string{"e"},
|
||||||
Usage: "edit the map given on the command line (instead of play it)",
|
Usage: "edit the map given on the command line (instead of play it)",
|
||||||
},
|
},
|
||||||
|
&cli.StringFlag{
|
||||||
|
Name: "window",
|
||||||
|
Aliases: []string{"w"},
|
||||||
|
Usage: "set the window size (e.g. -w 1024x768) or special value: desktop, mobile, landscape",
|
||||||
|
},
|
||||||
&cli.BoolFlag{
|
&cli.BoolFlag{
|
||||||
Name: "guitest",
|
Name: "guitest",
|
||||||
Usage: "enter the GUI Test scene on startup",
|
Usage: "enter the GUI Test scene on startup",
|
||||||
|
@ -77,6 +85,13 @@ func main() {
|
||||||
filename = c.Args().Get(0)
|
filename = c.Args().Get(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setting a custom resolution?
|
||||||
|
if c.String("window") != "" {
|
||||||
|
if err := setResolution(c.String("window")); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 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),
|
||||||
|
@ -124,3 +139,29 @@ func main() {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func setResolution(value string) error {
|
||||||
|
switch value {
|
||||||
|
case "desktop":
|
||||||
|
return nil
|
||||||
|
case "mobile":
|
||||||
|
balance.Width = 375
|
||||||
|
balance.Height = 812
|
||||||
|
case "landscape":
|
||||||
|
balance.Width = 812
|
||||||
|
balance.Height = 375
|
||||||
|
default:
|
||||||
|
var re = regexp.MustCompile(`^(\d+?)x(\d+?)$`)
|
||||||
|
m := re.FindStringSubmatch(value)
|
||||||
|
if len(m) == 0 {
|
||||||
|
return errors.New("--window: must be of the form WIDTHxHEIGHT, i.e. " +
|
||||||
|
"1024x768, or special keywords desktop, mobile, or landscape.")
|
||||||
|
}
|
||||||
|
|
||||||
|
w, _ := strconv.Atoi(m[1])
|
||||||
|
h, _ := strconv.Atoi(m[2])
|
||||||
|
balance.Width = w
|
||||||
|
balance.Height = h
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ GenericName=Project Doodle
|
||||||
X-GNOME-FullName=Project: Doodle - A drawing-based maze game
|
X-GNOME-FullName=Project: Doodle - A drawing-based maze game
|
||||||
Comment=A drawing-based maze game.
|
Comment=A drawing-based maze game.
|
||||||
Exec=/opt/project-doodle/doodle
|
Exec=/opt/project-doodle/doodle
|
||||||
|
Path=/opt/project-doodle
|
||||||
Icon=project-doodle
|
Icon=project-doodle
|
||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
Keywords=game;maze;
|
Keywords=game;maze;
|
||||||
|
|
|
@ -37,6 +37,9 @@ cp ../../etc/icons/64.png "root$ICON_ROOT/64x64/apps/project-doodle.png"
|
||||||
cp ../../etc/icons/32.png "root$ICON_ROOT/32x32/apps/project-doodle.png"
|
cp ../../etc/icons/32.png "root$ICON_ROOT/32x32/apps/project-doodle.png"
|
||||||
cp ../../etc/icons/16.png "root$ICON_ROOT/16x16/apps/project-doodle.png"
|
cp ../../etc/icons/16.png "root$ICON_ROOT/16x16/apps/project-doodle.png"
|
||||||
|
|
||||||
|
# Copy runtime package and guidebook
|
||||||
|
cp -r guidebook rtp "root$INSTALL_ROOT/"
|
||||||
|
|
||||||
echo =====================
|
echo =====================
|
||||||
echo Starting fpm package build.
|
echo Starting fpm package build.
|
||||||
echo =====================
|
echo =====================
|
||||||
|
|
Loading…
Reference in New Issue
Block a user