1
0

94 lines
3.6 KiB
Go

package common
import (
"zombiezen.com/go/sqlite"
"zombiezen.com/go/sqlite/sqlitex"
)
// Represents a zone in the game.
type Zone struct {
ID int64 `db:"id"`
ExpansionID int8 `db:"expansion_id"`
Name string `db:"name"`
File string `db:"file"`
Description string `db:"description"`
SafeX float64 `db:"safe_x"`
SafeY float64 `db:"safe_y"`
SafeZ float64 `db:"safe_z"`
SafeHeading float64 `db:"safe_heading"`
Underworld float64 `db:"underworld"`
XPModifier float64 `db:"xp_modifier"`
MinRecommended int8 `db:"min_recommended"`
MaxRecommended int8 `db:"max_recommended"`
ZoneType *string `db:"zone_type"`
AlwaysLoaded bool `db:"always_loaded"`
CityZone bool `db:"city_zone"`
WeatherAllowed bool `db:"weather_allowed"`
MinStatus int32 `db:"min_status"`
MinLevel int32 `db:"min_level"`
MaxLevel int32 `db:"max_level"`
StartZone bool `db:"start_zone"`
InstanceType string `db:"instance_type"`
DefaultReenterTime int32 `db:"default_reenter_time"`
DefaultResetTime int32 `db:"default_reset_time"`
DefaultLockoutTime int32 `db:"default_lockout_time"`
ForceGroupToZone int16 `db:"force_group_to_zone"`
LuaScript *string `db:"lua_script"`
ShutdownTimer int32 `db:"shutdown_timer"`
ZoneMOTD *string `db:"zone_motd"`
RulesetID int32 `db:"ruleset_id"`
LoginChecksum int32 `db:"login_checksum"`
SkyFile string `db:"sky_file"`
CanBind *int32 `db:"can_bind"`
CanGate *int32 `db:"can_gate"`
CanEvac *int32 `db:"can_evac"`
PeerPriority int16 `db:"peer_priority"`
}
// Creates the zones table if it does not exist.
func CreateZonesTable(conn *sqlite.Conn) error {
return sqlitex.ExecScript(conn, `
CREATE TABLE IF NOT EXISTS zones (
id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
expansion_id INTEGER NOT NULL DEFAULT 0,
name TEXT NOT NULL UNIQUE DEFAULT '',
file TEXT NOT NULL DEFAULT '',
description TEXT NOT NULL DEFAULT 'Describe me in the zones table! :)',
safe_x REAL NOT NULL DEFAULT 0,
safe_y REAL NOT NULL DEFAULT 0,
safe_z REAL NOT NULL DEFAULT 0,
safe_heading REAL NOT NULL DEFAULT 0,
underworld REAL NOT NULL DEFAULT -1000000,
xp_modifier REAL NOT NULL DEFAULT 0,
min_recommended INTEGER NOT NULL DEFAULT 0,
max_recommended INTEGER NOT NULL DEFAULT 0,
zone_type TEXT DEFAULT '',
always_loaded INTEGER NOT NULL DEFAULT 0,
city_zone INTEGER NOT NULL DEFAULT 0,
weather_allowed INTEGER NOT NULL DEFAULT 0,
min_status INTEGER NOT NULL DEFAULT 0,
min_level INTEGER NOT NULL DEFAULT 0,
max_level INTEGER NOT NULL DEFAULT 0,
start_zone INTEGER NOT NULL DEFAULT 0,
instance_type TEXT NOT NULL DEFAULT 'NONE',
default_reenter_time INTEGER NOT NULL DEFAULT 0,
default_reset_time INTEGER NOT NULL DEFAULT 0,
default_lockout_time INTEGER NOT NULL DEFAULT 0,
force_group_to_zone INTEGER NOT NULL DEFAULT 0,
lua_script TEXT DEFAULT '',
shutdown_timer INTEGER NOT NULL DEFAULT 300,
zone_motd TEXT DEFAULT '',
ruleset_id INTEGER NOT NULL DEFAULT 0,
login_checksum INTEGER NOT NULL DEFAULT 0,
sky_file TEXT NOT NULL DEFAULT '',
can_bind INTEGER DEFAULT 0,
can_gate INTEGER DEFAULT 1,
can_evac INTEGER DEFAULT 1,
peer_priority INTEGER NOT NULL DEFAULT 0
);
CREATE INDEX IF NOT EXISTS ZoneDescIDX ON zones(description);
CREATE INDEX IF NOT EXISTS ZoneFileIDX ON zones(file);
`)
}