Noah Petherbridge
94d0da78e7
Water pixels finally do something other than turn your character blue! * When the player character is "wet" (touching water pixels, and so appearing in a blue mask), water physics apply: gravity is slower, your jump height is halved, but you get infinite jumps to swim higher in the water. * Holding the jump key under water will incur a short delay between jumps, so that you don't just fly straight up to the surface. Tap the jump button to move up quicker, you can spam it all you want. Azulians are also able to handle being under water: * They'll sink to the bottom and keep walking back and forth normally. * If you are above them and noticed, they'll jump (swim) up towards you, aware of the water and it jumps like you do. * The Blue Azulian has the poorest vertical aggro range so it isn't a very good swimmer. The White Azulian is very good at navigating water as it can pursue the player from the furthest distance of them all. Changes to the editor: * New brush pattern added: bubbles.png * It's the default pattern now for the "water" color of all of the built-in palettes instead of ink.png * A repeating pattern of bubbles carved out showing the level wallpaper. * The old "Bubbles (circles.png)" is renamed "Circles" * The last scroll position is saved with the Level file, so when you reload the level later it's scrolled at where you left it.
146 lines
4.4 KiB
Go
146 lines
4.4 KiB
Go
package balance
|
|
|
|
import (
|
|
"time"
|
|
|
|
"git.kirsle.net/go/render"
|
|
)
|
|
|
|
// Format for level and doodad files.
|
|
type Format int
|
|
|
|
const (
|
|
FormatJSON Format = iota // v0: plain json files
|
|
FormatGZip // v1: gzip compressed json files
|
|
FormatZipfile // v2: zip archive with external chunks
|
|
)
|
|
|
|
// Numbers.
|
|
var (
|
|
// Window dimensions.
|
|
Width = 1024
|
|
Height = 768
|
|
|
|
// Title screen height needed for the main menu. Phones in landscape
|
|
// mode will switch to the horizontal layout if less than this height.
|
|
TitleScreenResponsiveHeight = 600
|
|
|
|
// Speed to scroll a canvas with arrow keys in Edit Mode.
|
|
CanvasScrollSpeed = 8
|
|
FollowActorMaxScrollSpeed = 64
|
|
|
|
// Window scrolling behavior in Play Mode.
|
|
ScrollboxOffset = render.Point{ // from center of screen
|
|
X: 60,
|
|
Y: 60,
|
|
}
|
|
|
|
// Player speeds
|
|
PlayerMaxVelocity float64 = 7
|
|
PlayerJumpVelocity float64 = -23
|
|
PlayerAcceleration float64 = 0.12
|
|
Gravity float64 = 7
|
|
GravityAcceleration float64 = 0.1
|
|
SwimGravity float64 = 3
|
|
SwimJumpVelocity float64 = -12
|
|
SwimJumpCooldown uint64 = 24 // number of frames of cooldown between swim-jumps
|
|
SlopeMaxHeight = 8 // max pixel height for player to walk up a slope
|
|
|
|
// Default chunk size for canvases.
|
|
ChunkSize = 128
|
|
|
|
// Default size for a new Doodad.
|
|
DoodadSize = 100
|
|
|
|
// Size of Undo/Redo history for map editor.
|
|
UndoHistory = 20
|
|
|
|
// Options for brush size.
|
|
BrushSizeOptions = []int{
|
|
0,
|
|
1,
|
|
2,
|
|
4,
|
|
8,
|
|
16,
|
|
24,
|
|
32,
|
|
48,
|
|
64,
|
|
}
|
|
DefaultEraserBrushSize = 8
|
|
MaxEraserBrushSize = 32 // the bigger, the slower
|
|
|
|
// Default font filename selected for Text Tool in the editor.
|
|
// TODO: better centralize font filenames, here and in theme.go
|
|
TextToolDefaultFont = SansSerifFont
|
|
|
|
// Interval for auto-save in the editor
|
|
AutoSaveInterval = 5 * time.Minute
|
|
|
|
// Default player character doodad in Play Mode.
|
|
PlayerCharacterDoodad = "boy.doodad"
|
|
|
|
// Levelpack and level names for the title screen.
|
|
DemoLevelPack = "assets/levelpacks/001000-TUTORIAL.levelpack"
|
|
DemoLevelName = []string{
|
|
"Tutorial 1.level",
|
|
"Tutorial 2.level",
|
|
"Tutorial 3.level",
|
|
}
|
|
|
|
// Level attachment filename for the custom wallpaper.
|
|
// NOTE: due to hard-coded "assets/wallpapers/" prefix in uix/canvas.go#LoadLevel.
|
|
CustomWallpaperFilename = "custom.b64img"
|
|
CustomWallpaperEmbedPath = "assets/wallpapers/custom.b64img"
|
|
|
|
// Publishing: Doodads-embedded-within-levels.
|
|
EmbeddedDoodadsBasePath = "assets/doodads/"
|
|
EmbeddedWallpaperBasePath = "assets/wallpapers/"
|
|
|
|
// File formats: save new levels and doodads gzip compressed
|
|
DrawingFormat = FormatZipfile
|
|
|
|
// Zipfile drawings: max size of the LRU cache for loading chunks from
|
|
// a zip file. Normally the chunker discards chunks not loaded in a
|
|
// recent tick, but when iterating the full level this limits the max
|
|
// size of loaded chunks before some will be freed to make room.
|
|
// 0 = do not cap the cache.
|
|
ChunkerLRUCacheMax = 0
|
|
|
|
// Play Mode Touchscreen controls.
|
|
PlayModeIdleTimeout = 2200 * time.Millisecond
|
|
PlayModeAlphaStep = 8 // 0-255 alpha, steps per tick for fade in
|
|
PlayModeAlphaMax = 220
|
|
|
|
// Invulnerability time in seconds at respawn from checkpoint, in case
|
|
// enemies are spawn camping.
|
|
RespawnGodModeTimer = 3 * time.Second
|
|
|
|
// GameController thresholds.
|
|
GameControllerMouseMoveMax float64 = 20 // Max pixels per tick to simulate mouse movement.
|
|
GameControllerScrollMin float64 = 0.3 // Minimum threshold for a right-stick scroll event.
|
|
|
|
// Limits on the Flood Fill tool so it doesn't run away on us.
|
|
FloodToolVoidLimit = 600 // If clicking the void, +- 1000 px limit
|
|
FloodToolLimit = 1200 // If clicking a valid color on the level
|
|
|
|
// Eager render level chunks to images during the load screen.
|
|
// Originally chunks rendered to image and SDL texture on-demand, the loadscreen was
|
|
// added to eager load (to image) the whole entire level at once (SDL textures were
|
|
// still on demand, as they scroll into screen). Control this in-game with
|
|
// `boolProp eager-render false` and the loadscreen will go quicker cuz it won't
|
|
// load the whole entire level. Maybe useful to explore memory issues.
|
|
EagerRenderLevelChunks = true
|
|
|
|
// Number of chunks margin outside the Canvas Viewport for the LoadingViewport.
|
|
LoadingViewportMarginChunks = render.NewPoint(8, 4) // hoz, vert
|
|
CanvasLoadUnloadModuloTicks uint64 = 2
|
|
)
|
|
|
|
// Edit Mode Values
|
|
var (
|
|
// Number of Doodads per row in the palette.
|
|
UIDoodadsPerRow = 2
|
|
)
|