Compare commits

...
Author SHA1 Message Date
Stefan MaierandClaude Opus 5.5 24e4123882 VR performance diagnostics: the frame's parts, the layer copies, Mesa's GL thread switch
- vr.log_performance: frames with game ticks and without, how many late,
  and their time by part (input, ticks, camera, draw, present)
- with XR_META_performance_metrics: per frame, each layer copy's time, the
  waits for swapchain images and xrEndFrame
- debug.gl_thread: Mesa's GL thread on or off (mesa_glthread) for trying

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 21:33:00 +02:00
Stefan MaierandClaude Opus 5.5 8466846d45 Steam Frame: the frames' thread kept on the fast cores
Without XR_EXT_performance_settings (SteamVR in Lepton) the scheduler may
put the game's busy thread on the 2.3 GHz cores; frames then come late to
the compositor and the picture doubles as the head turns, now and then,
at a steady 72 fps. On SteamVR the thread that ends the frames is kept on
the cores no slower than 90% of the fastest (HALO_XR_ANY_CORE: not); the
metrics line says which core it is on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 19:53:47 +02:00
Stefan MaierandClaude Opus 5.5 bc580cf1cf VR: the compositor's performance counters in the log (XR_META_performance_metrics)
Every five seconds, where the runtime offers them (SteamVR on the Steam
Frame): to tell frames the compositor showed late or reprojected from the
game's own pace.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 19:46:54 +02:00
Stefan MaierandClaude Opus 5.5 3d575f32ed Bots on foot: ramps, rails, door frames and things out of reach
- a way is clear only at the knees and the chest (a rail with room under
  it, a slit in a wall), and for a shortcut along a path at the shoulders
  too (a door frame)
- stuck below a near point (a step, a ramp's lip): a jump on towards it
- a thing to pick up it comes no nearer to for 2.5 s is given up
- stuck three times in five seconds: the goal given up, somewhere away
- at the point it walks to: arrived, not stuck

Emulator, Blood Gulch, 15 bots: CTF stuck events 264 -> 153, mid-field
26% -> 32%, kills 26 -> 33; team slayer stuck events 860 -> 560.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 19:33:16 +02:00
Stefan MaierandClaude Opus 5.5 727b9ca80d Bots on foot: no crowding at things out of reach, spread over the enemies, hold spots they can reach
- a thing to pick up that it stands by and is not offered (on a ledge,
  out of reach) is given up for 20 s; up to four remembered, in the
  fight too (the crowds jumping at the base's weapons)
- stuck: the side step goes to the open side
- goals: each bot one of the three nearest enemies, and beside them while
  far, so a team spreads out
- holding a spot: stops near it, and one it cannot reach falls back to
  the place's centre

Emulator, Blood Gulch, 15 bots: CTF stuck events 1793 -> 264; team slayer
stuck windows 32% -> 9-15%, time by the bases 85% -> 68-73%.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 18:52:30 +02:00
Stefan MaierandClaude Opus 5.5 99d7c924db Bots: a person joining a lobby the bots fill takes a bot's place
The bots fill the game up to its maximum; a machine joining the lobby
keeps its place (no bot added for it) and its player takes the last
bot's; the game lists as open while a bot could leave.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 18:00:31 +02:00
Stefan MaierandClaude Opus 5.5 57d96e4681 VR PC menus: fixes from the first Frame test
- bots: no more than the game's MAXIMUM PLAYERS has room for beside the
  people (instead of raising it); the host options show and change the
  bots there are
- VR options hint on the PC main menu drawn whole (left-aligned)
- the online and host panels: a click beside them or on their key's B
  closes them, on the online panel's X enters a code
- spinners' arrows (drawn just outside them) clickable
- Android flat (the emulator): the mouse drives the menus' pointer, for
  testing the menus' clicks with adb shell input mouse
- Frame launcher: Lepton's logcat of the game's container in logcat.txt

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 17:45:41 +02:00
Stefan MaierandClaude Opus 5.5 177ad4d40d VR: the PC version's menus (vr.menus, on by default)
- menu_tags.c builds the PC menus in VR too unless vr.menus = "xbox"
- their text fields (Server Setup's game name) typed on the Xbox's
  on-screen keyboard in VR
- join code / online panel on the PC Server Browser (X or click its hint),
  host options (Y or click) and join code on the PC lobby, VR options on
  the PC main menu
- bots: room made for them beside the people (Server Setup's maximum
  players), none in co-op
- player_name_valid accepts trailing spaces (Xbox menus pad new profile
  names, "New001     ", which the PC lobby refused)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 17:17:16 +02:00
Stefan MaierandClaude Opus 5.5 bfb668d498 Merge branch 'merge/upstream-2026-10-05'
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 17:00:26 +02:00
Stefan MaierandClaude Opus 5.5 fc2b6551ca Merge upstream (OpenCE 13c14df9): online co-op campaign, online split screen, network version 16
Upstream's online co-op (network_actors.c, network_coop.c) ticks beside the
VR port's VR relay and bots; its message types end at 77, below the VR
port's from 240. The look and move flags the action test reads moved into
player_control_action_test_note: the head's turning goes there too. The
vertex shader's screen-space undo is upstream's on every platform now, with
the multiview eye offset after it on Android. The APK carries upstream's
brokers.txt beside the FDM layer stub; the updaters keep the VR port's own
repository (upstream's now points at OpenCommunityEdition/OpenCE).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:22:05 +02:00
Stefan Maier 5316a6b145 Merge branch 'frame/launcher' 2026-10-05 16:19:02 +02:00
Stefan MaierandClaude Opus 5.5 59b1fb422b Steam Frame: a library button that starts, updates and quits the game
The launcher gives Lepton what Steam gives an Android title of its own (a
compat data path, which the app's data links to after an install, and the
shader path), keeps a container id of its own, tries a start that ends at
once again (a new APK's first start only installs it), and stops when the
game was quit. Steam's "Exit game" cannot reach the game in Lepton's
container: the VR options get "Quit Halo" (asked twice), which on Android
now ends the process and leaves quit_requested.txt for the launcher. The
library's pictures are in port/android/steam_frame_grid.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 16:17:35 +02:00
Stefan MaierandClaude Opus 5.5 5ecd3075a0 Steam Frame: a launcher that starts the game as Steam starts Android titles
Lepton runs the APK in a container of its own, kept between starts, and
installs it anew whenever the APK is newer; the script starts it a second
time after a new APK's first start, which only installs it. With the APK in
~/Documents/HaloCE, updating the game is replacing that file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:17:54 +02:00
MrBruh 13c14df95c Merge pull request #101 from xshxdex98/coop-bsp-sync
Co-op: every machine stays on the host's BSP (network version 16)
2026-10-06 02:13:10 +13:00
xshxdex98 b525bf8514 Network version 16
A client's input says which structure BSP it has loaded (co-op).
2026-10-05 08:09:47 -05:00
xshxdex98 087ca8a875 Co-op: every machine stays on the host's BSP
Players in big sessions ended up on different BSPs:

- The host told clients about a switch only every half second, and not
  reliably, so a client could predict its player for a while in a BSP it
  hadn't loaded. A switch is now sent at once, reliably, ahead of the
  players' new positions.
- A client still loading reports so: its input carries the BSP it has
  loaded. Until it has the host's, the host takes none of its movement
  (which falls there with no floor) and none of its loading zones.
- After a switch, by a trigger, a script or a skipped cutscene, no trigger
  can switch again until every machine has loaded the new BSP (at most
  ten seconds), so no client falls two switches behind.
- A player the host can't place beside whoever crossed, when a big team
  runs out of room there, is placed beside another teammate instead of
  being left where they were.
2026-10-05 08:09:46 -05:00
MrBruh 24957ff6a0 Network version 15 2026-10-06 01:28:04 +13:00
MrBruh 402d4b8351 Merge pull request #97 from xshxdex98/coop-dead-vehicles 2026-10-06 01:24:23 +13:00
MrBruh d1825ab08d Merge pull request #96 from xshxdex98/coop-backtrack-gate 2026-10-06 01:24:22 +13:00
MrBruh 268ec84b74 Merge pull request #95 from xshxdex98/coop-allegiances 2026-10-06 01:24:21 +13:00
xshxdex98 8dc796028e Co-op: going back to a visited BSP needs two thirds of the team
One player who stayed behind or went AFK no longer blocks the team.
2026-10-05 07:14:28 -05:00
xshxdex98 8aa381ed14 Co-op: vehicles the host destroys explode on clients
Clients only had a kill path for bipeds, so a Ghost, Banshee or Wraith the
host destroyed stayed intact on clients. A vehicle the host's state says
is dead is now destroyed there too, with its explosion.
2026-10-05 07:01:37 -05:00
xshxdex98 c3f82fa9b2 Co-op: going back to a BSP already visited needs the whole team there
A loading zone brings the whole team to whoever crosses it. Into a new part
of the level that's what you want, but it let one player drag everyone
back. A switch back to a BSP the team has been in now waits until every
living player is in the trigger or near the player in it.
2026-10-05 07:01:32 -05:00
xshxdex98 5ff4b6ee8d Co-op: clients take the host's allegiances
The scripts make allegiances (ai_allegiance player human) and only the host
runs them, so on clients marines stayed enemies of the players: red reticles
and the wrong team. The host sends its ally and friend tables with the
presentation each tick.
2026-10-05 07:01:26 -05:00
MrBruh 91e838e2f6 Network version 14 2026-10-06 00:54:11 +13:00
MrBruh 520b8401db Merge pull request #93 from xshxdex98/test-death-timing-coop 2026-10-06 00:51:37 +13:00
MrBruh 2ed4a7b49d Merge pull request #92 from xshxdex98/coop-flood-dropships 2026-10-06 00:51:36 +13:00
MrBruh 503992d544 Merge pull request #91 from xshxdex98/coop-device-states 2026-10-06 00:51:35 +13:00
MrBruh ccc7df6611 Merge pull request #90 from xshxdex98/coop-loading-zones 2026-10-06 00:51:35 +13:00
xshxdex98 ddcbe79283 test_death_timing.py: stubs for the network co-op paths
The test compiles main.c's and players.c's death handlers against a fake
world; their network co-op branches call functions it had none of, so it
no longer compiled. Stubbed off, it covers the local game it was written
for, and passes.
2026-10-05 06:41:27 -05:00
xshxdex98 862d88737e Co-op: Flood bodies get up on clients; dropship doors open and close there
- A body the host's unit got back up from (a Flood combat form feigning
  death) gets up on the clients too, instead of its ragdoll being dragged
  about. The resurrection is one function both use (unit_port_resurrect).
- The scripts' unit_open and unit_close go to the clients, so dropships'
  doors aren't left open there.
2026-10-05 06:36:27 -05:00
xshxdex98 8610b28376 Co-op: doors and elevators are where the host has them
The host sends each device's position and power when they change (and with
the resent state), and a client puts its device there when the host's is at
rest and they differ, or when they drift apart while it moves. Clients only
had the device groups' values, which aim a device: a door could stop half
open, and an elevator be somewhere else on a client, so its players fell.
2026-10-05 06:36:27 -05:00
xshxdex98 9e6247e0cb Co-op: a loading zone brings the team along; only someone falling is rescued
- Crossing a BSP loading zone moves every other player to whoever crossed,
  as split screen does. Moving only some players left the rest where the
  next switch threw them back to a hallway, or under a floor.
- The rescue for a player outside the loaded BSP waits two seconds and
  only takes someone falling: a player riding an elevator through its
  shaft is left alone.
2026-10-05 06:34:00 -05:00
MrBruh dea5fe3b1e Fix crash past 256 actors 2026-10-06 00:29:42 +13:00
MrBruh f0804aa587 Extra enemies: per player or static multiplier 2026-10-06 00:08:26 +13:00
MrBruh 16ad4cc900 25% extra enemies option 2026-10-05 23:45:31 +13:00
MrBruh a38ede078a Co-op extra enemies per player 2026-10-05 23:25:15 +13:00
MrBruh fa85aa53f5 Kick command; co-op friendly fire on by default 2026-10-05 22:51:05 +13:00
MrBruh 8be9a038a1 Co-op friendly fire setting 2026-10-05 22:40:34 +13:00
MrBruh 783b591a6a Co-op defaults to 16 players and private 2026-10-05 22:27:36 +13:00
MrBruh e82d880060 Singleplayer and multiplayer map choice 2026-10-05 22:17:22 +13:00
MrBruh 7d0e587c51 Co-op review fixes 2026-10-05 21:02:04 +13:00
MrBruh 01586cfebf Merge pull request #89 from xshxdex98/coop-campaign 2026-10-05 20:29:19 +13:00
MrBruh de52060644 Host takes grenade damage only from grenades thrown 2026-10-05 19:54:33 +13:00
MrBruh ab7c507a29 Leaving the lobby after a game goes to the main menu 2026-10-05 19:39:57 +13:00
xshxdex98 ba6fe0a826 AI sync: any team the host's unit has goes with it, not only the campaign's 2026-10-05 00:59:33 -05:00
MrBruh 3f6c0c37a4 Friendly fire stops teammates' instant kills 2026-10-05 18:47:39 +13:00
xshxdex98 606109551d Co-op: friendly reticles, skipped cutscenes' sound, the end of a level, tutorial prompts
- AI units' teams go with their states, so friendlies aren't red on
  clients' reticles.
- A skipped cutscene's music and dialogue stop on the clients.
- Winning a level returns every machine to the lobby with the next level
  set up, instead of leaving them on its last screen.
- Help text carries whether the host shows it, so no prompt is dropped.
2026-10-05 00:46:51 -05:00
xshxdex98 8194c5a00b Online co-op: play the campaign together over LAN and the internet
Hosting a co-op level from the Map screen (CO-OP CAMPAIGN, a level and its
difficulty, then Server Setup) makes a network game on the campaign map
with no game engine, which is what co-op is. Only the host runs the
scripts and the AI; port/linux/game/network_coop.c sends clients what the
scripts do (cutscenes, camera, fades, HUD, sounds, devices, named objects,
animations), and network_actors.c drives the host's AI units on every
machine. Players spawn beside each other, respawn beside a safe teammate,
and spectate while dead or waiting. Skipping a cutscene is a vote.
Players can join a game in progress at any time.
2026-10-05 00:31:30 -05:00
MrBruh 737551fd51 Resolution, scaling and window size settings 2026-10-05 18:28:58 +13:00
xshxdex98 7a56c624f5 Merge upstream main 2026-10-05 00:07:13 -05:00
MrBruh 3ae09c3d2c Fade the radar wedge out fully 2026-10-05 17:23:47 +13:00
MrBruh 3a22816c2f Merge pull request #81 from FDervish/fix/antenna-stepped-per-tick 2026-10-05 17:15:38 +13:00
MrBruh 2853a42253 Clear an antenna's shape record when it is created 2026-10-05 17:13:27 +13:00
Fadi DerouicheandClaude Opus 5 39ece781ee Step the antenna chain in the tick and draw the frames between the ticks
An antenna's chain is a simulation of the Xbox's own step, an update a tick,
and the port was stepping it once a frame with the frame's own time. Its
springs, its carry and the points' physics then acted against the frames'
movement of it, so how far the chain moved per update depended on the frame
rate, and a vehicle at speed swung it far wider than a tick's step does.

- game.c steps the chain in the tick, beside the effects, which are already
  stepped there.
- antenna.c records the shape each tick leaves, relative to the point the
  vehicle's marker carries the base by. A frame drawn between two ticks is the
  part of the way between those two shapes that it is, carried to where the
  marker is now, so the chain stays on the vehicle it hangs from instead of
  lagging a tick behind it. The gate that left a chain that had not been drawn
  for five updates unstepped counted frames; it counts ticks now, which is
  what it counted on the Xbox.
- widgets.c no longer steps the chain from the widget update, which ran once a
  frame.
- game_time.c draws the per-frame effects and widgets that hang off objects
  (game_frame) with the pose between the last two ticks, the pose the renderer
  draws with, so what they place on an object is drawn where they put it.
- objects.c hands markers the matrices the renderer draws with, so an effect,
  a particle system or a contrail attached to a moving object follows it
  between the ticks too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-05 17:13:27 +13:00
MrBruh cf17201ec8 Split screen divider spans wide screens 2026-10-05 17:13:27 +13:00
MrBruh 45de17116b Merge pull request #82 from addisonbair/gamescope-fullscreen
Count a fullscreen window that gamescope never confirms as fullscreen
2026-10-05 17:01:51 +13:00
xshxdex98 7d56f34b83 Map screen: choose co-op campaign or multiplayer, then vanilla or custom maps
Hosting over LAN or the internet, the Map screen's list first offers CO-OP
CAMPAIGN or MULTIPLAYER. CO-OP CAMPAIGN offers CAMPAIGN or CUSTOM CAMPAIGN,
then a level and its difficulty. MULTIPLAYER offers VANILLA MAPS or CUSTOM
MAPS, then the maps, and goes on to the gametypes as before. B steps back
through the choices and leaves the screen from the first. Split screen
starts at VANILLA MAPS / CUSTOM MAPS.

The custom lists stay empty and a co-op level cannot be hosted yet: network
co-op and Custom Edition maps come in their own pull requests, which fill
them in.
2026-10-04 22:54:24 -05:00
MrBruh 3c7ba95ff5 Merge pull request #70 from startupfoundry/windows-no-console
Release builds of Windows without a console window
2026-10-05 16:51:22 +13:00
MrBruh 092505224a Merge pull request #25 from garfbargle/macos-android-build
Build the Android port on macOS hosts
2026-10-05 16:48:39 +13:00
MrBruh 079883d640 Merge pull request #59 from saulob/fix/startup-color-flash
Fix incorrect Colors on the initial menu frame
2026-10-05 16:39:03 +13:00
MrBruh 54faa1dab6 Merge pull request #87 from eltanschauung/fix/death-camera-timing-pr
Fix death camera and co-op respawn timing at high frame rates
2026-10-05 16:33:14 +13:00
MrBruh 273152cc25 Merge pull request #80 from FDervish/fix/vertex-explosion
Fix vertices exploding to the screen centre near the camera plane
2026-10-05 16:07:31 +13:00
MrBruh 9bdd7f30c0 Merge pull request #86 from thelinkin3000/fix/host-again-after-backing-out
Make a new game each time Create is chosen
2026-10-05 15:53:59 +13:00
MrBruh 685bf260a0 Either co-op player picks the level 2026-10-05 14:47:11 +13:00
MrBruh 933ed2b7b8 Point updates at OpenCommunityEdition/OpenCE 2026-10-05 14:21:03 +13:00
MrBruh c115f5292d Split screen joins of games under way 2026-10-05 14:06:51 +13:00
eltanschauung 0f22c1d592 Add standalone death and co-op regression tests 2026-10-04 20:33:17 -04:00
eltanschauung fb1abedd8b Keep dead camera target when no living player exists 2026-10-04 20:32:59 -04:00
eltanschauung cd345aac7c Count death and co-op respawn delays in game ticks 2026-10-04 20:32:31 -04:00
MrBruh 7e00135d31 Fix menu crash with no network client 2026-10-05 12:59:15 +13:00
thelinkin3000andClaude Opus 5.5 95416b2cfc Make a new game each time Create is chosen
Backing out of a hosted game keeps its server: the lobby's last local
player leaving pauses it (netgame_unjoin_player). Choosing Create again
threw the host's client away, but network_game_start_new_server makes and
joins a server only when there is none, so the new client never joined the
one left over. The lobby then had nobody in it: START added no player, B
could not leave (not in pregame), and the server's map changes failed to
reach the client that was gone.

Create now disposes the client and server first, so it always makes a new
game and joins it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 23:37:36 +00:00
MrBruh ffc1512dcb Read brokers.txt without SDL on Android 2026-10-05 11:27:05 +13:00
MrBruh 88a7c07ec7 Brokers in brokers.txt 2026-10-05 11:15:11 +13:00
Stefan Maier 8e8713681d Merge remote-tracking branch 'origin/fix/multiview-desktop-compile' 2026-10-04 22:59:55 +02:00
Stefan Maier d7099f3e40 Fix desktop link: bot machine check and glClearDepthf were Android-only
network_game_server_is_bot_machine (cea7abfc, Bots as players of the
host) was written into the HALO_ANDROID block of network_server_manager.c
while bots.c calls it on every platform, and so was the array it reads;
both move out of the guard (on the desktop nothing marks a bot machine,
so the check is always false there, the writes stay Android-only).

glClearDepthf (dc21f4b4, Play in VR on OpenXR headsets) is ES-only:
GL_FUNCTIONS declares it for Android's loader and the define at the top
maps glClearDepth to it, but the desktop context links against GL's
glClearDepth. The clear now calls glClearDepth, which the Android define
turns into glClearDepthf as before.
2026-10-04 22:37:17 +02:00
Stefan Maier 4ba36d7305 VR: fix desktop build, targets_multiview was Android-only
6c3f4ce2 (VR: draw both eyes in one pass) changed prepare_draw to pass
targets_multiview to vertex_shader_get, but the variable is declared and
kept inside the HALO_ANDROID guard (L887): Linux and Windows failed to
compile with 'use of undeclared identifier targets_multiview', Android
was fine. On the desktop there are no multiview layers to stand in for
the back buffer, so the desktop call passes FALSE.
2026-10-04 22:25:21 +02:00
MrBruh e3389991ac Online split screen 2026-10-05 09:18:40 +13:00
Stefan Maier 855f083117 Merge branch 'frame/performance' 2026-10-04 22:04:33 +02:00
Stefan Maier 6f3786de91 Merge branch 'fix/vr-shot-origin' 2026-10-04 22:04:33 +02:00
Stefan MaierandClaude Opus 5.5 493713b0a6 Steam Frame: the refresh rates offered in the log; its rate and speed noted
The runtime offers only the rate SteamOS is set to. At 72 Hz the game holds
it with multiview (about 11.6 ms a frame); at 90 Hz it cannot, and the
frames SteamVR makes up showed as a doubled picture when the head turned.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 21:47:56 +02:00
Stefan Maier bf356fc58a Merge branch 'fix/vr-shot-origin' into frame/controllers 2026-10-04 21:42:21 +02:00
Stefan MaierandClaude Opus 5.5 6a7b919522 VR: shots fly along the aim, not above it
A shot fired from the muzzle of the weapon in the hand was kept inside the
level by the game's test of the line from the eyes to it, which in VR runs
down through the player's own body: the test hit it and moved the shot up
towards the eyes, from where it flew parallel to the aim, a few centimetres
above the crosshair and the laser (measured: up to 7 cm at 3 m). In VR the
line is tested against the level alone (a hand through a wall still does
not fire through it); measured after: the impacts on their rays, on
average within a millimetre.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 21:42:07 +02:00
Addison Bair 20861c06d2 Count a fullscreen window that gamescope never confirms as fullscreen
gamescope (the Steam Deck's Game Mode) makes the window the size of the
display but never confirms the fullscreen request, so SDL leaves
SDL_WINDOW_FULLSCREEN unset. platform_screen_mode then reported a window,
the game drew the Xbox's 640x480, and gamescope stretched it to the
screen, soft and 4:3. A window that was asked to be fullscreen and covers
its display now counts as fullscreen too, so the game draws at the
display's resolution and shape (1280x800 on the Deck).
2026-10-04 19:30:07 +00:00
Fadi DerouicheandClaude Opus 5 fc7271fd52 Step the antenna chain in the tick and draw the frames between the ticks
An antenna's chain is a simulation of the Xbox's own step, an update a tick,
and the port was stepping it once a frame with the frame's own time. Its
springs, its carry and the points' physics then acted against the frames'
movement of it, so how far the chain moved per update depended on the frame
rate, and a vehicle at speed swung it far wider than a tick's step does.

- game.c steps the chain in the tick, beside the effects, which are already
  stepped there.
- antenna.c records the shape each tick leaves, relative to the point the
  vehicle's marker carries the base by. A frame drawn between two ticks is the
  part of the way between those two shapes that it is, carried to where the
  marker is now, so the chain stays on the vehicle it hangs from instead of
  lagging a tick behind it. The gate that left a chain that had not been drawn
  for five updates unstepped counted frames; it counts ticks now, which is
  what it counted on the Xbox.
- widgets.c no longer steps the chain from the widget update, which ran once a
  frame.
- game_time.c draws the per-frame effects and widgets that hang off objects
  (game_frame) with the pose between the last two ticks, the pose the renderer
  draws with, so what they place on an object is drawn where they put it.
- objects.c hands markers the matrices the renderer draws with, so an effect,
  a particle system or a contrail attached to a moving object follows it
  between the ticks too.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-04 19:45:28 +01:00
Stefan MaierandClaude Opus 5.5 c1305fa94f Steam Frame: its controllers as themselves, with the Xbox's layout
SteamVR offers the Frame's controllers by their own profile
(XR_VALVE_frame_controller_interaction); without bindings for it, it mapped
the Quest's onto them, and X and Y landed on the left one's D-pad. Now: the
right one's A, B, X, Y and menu button are the game's A, B, X, Y and Start
(the Xbox's layout), the left one's View is Back and its D-pad the D-pad,
the bumpers switch grenades and the flashlight. The VR options' page of
buttons shows the Frame's layout there. The runtime's extensions and the
controllers' profile are in the log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 20:28:13 +02:00
Fadi DerouicheandClaude Opus 5 3d2c04d675 Fix vertices exploding to the screen centre near the camera plane
The screen-space conversion that the Xbox's vertex shaders do is undone by
multiplying the screen position by w again, which is lossy near the camera
plane: the conversion takes the reciprocal of w (rcc), which clamps there, and
1/w rounds differently on each GPU.

Worse, where w is zero or not a number the reconstruction leaves the vertex at
the clip-space origin. That point is inside the frustum, so nothing clips the
triangle away, and OpenGL's zero divided by zero puts the vertex in the middle
of the screen: the triangle is then drawn from wherever its other vertices are
out to there. On the first-person weapon, whose pose follows the camera and so
reaches the camera plane, that is a streak across the whole view. The Xbox's
own divide sends such a vertex to infinity and its clipper discards the
triangle.

Compute the final position from the clip-space position that the shader keeps
whenever it takes the reciprocal of w, so that nothing is reconstructed by
dividing; and where w is zero or not a number, put the vertex behind the
camera (w = -1), which the clipper also discards, as the Xbox did.

Both paths were behind the Android build's #ifdef, so desktop GL only ever
used the lossy reconstruction. The y flip and depth range that follow remain
per platform.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-04 19:27:35 +01:00
Stefan MaierandClaude Opus 5.5 0fc85d6c67 Steam Frame: the overlays' alpha from their colour on SteamVR
SteamVR draws a quad's texels by their alpha alone, and the game's menus,
HUD and text have none in their additive parts: on the Frame nothing showed.
On SteamVR (the runtime's name says) the copy into the quads' images takes
their alpha from their colour where it is higher; HALO_XR_QUAD_ALPHA
(colour, keep) overrides, for trying. The Frame's notes updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 20:17:43 +02:00
Stefan MaierandClaude Opus 5.5 c0a08f395e Steam Frame: the game's data in the SteamOS user's Documents when it is there
Lepton empties the app's own folders (and uninstalls the app) whenever it
starts again; Documents is the SteamOS user's and kept. When
/home/steamos/Documents/HaloCE holds the maps and is writable, the launcher
and the game take it as the data folder (maps, config.toml, saves, logs).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 19:51:08 +02:00
Stefan MaierandClaude Opus 5.5 06cb70fb58 Steam Frame: notes, and no variable the Android loader never reads
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 18:27:28 +02:00
Stefan MaierandClaude Opus 5.5 1709698053 Start on the Steam Frame (Lepton)
Lepton has no clipboard service, and SDL3's activity died taking one for
granted: the build now patches SDL's clipboard handler to do without.
The Frame lists an implicit OpenXR layer for Vulkan apps whose library an
app cannot load, which failed xrCreateInstance (and the Android loader
reads no variable to turn it off): the app now carries a pass-through
layer under that library's name. With both, the game runs on the Frame
and its OpenXR session starts (SteamVR, 1728x1728 an eye, 72 Hz).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 18:26:39 +02:00
Stefan Maier cb72dca40f Merge branch 'merge/upstream-2026-10-04' 2026-10-04 14:00:26 +02:00
Stefan MaierandClaude Opus 5.5 bbea2a2bff The online panel's game by its row past the fixed rows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:47:56 +02:00
Stefan MaierandClaude Opus 5.5 57cdbd8f80 Merge upstream (cybersecurity/halo-ce-universal 193cbf59): server browser, split-screen co-op
Upstream's server browser of public internet games (p2p_lobby.c) and the VR
port's own public list share the brokers: its topics are a table now, and
the VR port's (join codes' and public games') are entries of it; the VR
port's retained publishes carry MQTT 5's empty properties. The VR port's
public toggle lists the game in the server browser too, and the VR online
panel shows the server browser's games (PC, phones, VR) first, joined by
their invites, then its own list's that it has not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:47:29 +02:00
Stefan Maier c5c5a8eaeb Merge branch 'feature/bots-vehicles' 2026-10-04 13:33:07 +02:00
Stefan Maier a3ee36b5ef Merge branch 'feature/vr-hud-fixes' 2026-10-04 13:33:07 +02:00
Stefan Maier 30a1e0f40e Merge branch 'feature/vr-menu-lists' 2026-10-04 13:33:07 +02:00
Stefan Maier 327cf96d6f Merge branch 'feature/vr-options' 2026-10-04 13:33:07 +02:00
Stefan MaierandClaude Opus 5.5 867855d388 Bot drivers see walls and rocks ahead, back off when stuck, go round teammates
Driving a jeep or a scout, a bot looks ahead (farther the faster) along the
way it turns: a wall or a rock there (not ground it can drive up) is passed
on the most open side nearest its way, slower, and boxed in it backs off.
Stuck is now making no way along its heading for a second and a half, which
spinning wheels no longer hide. A teammate in the way is gone round slowly
on the other side instead of waited for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:25:15 +02:00
Stefan MaierandClaude Opus 5.5 4af570bc08 VR: the online games' hint further left and shorter, clear of Y = Create Game
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 13:13:27 +02:00
Stefan MaierandClaude Opus 5.5 7a1cf79396 VR: teammates' triangles over their heads, a click joins on the profile screen
The triangle the game draws over each teammate goes into the name's slot
over the head (shown in the world there, not on the HUD before the eyes,
where it hung distorted), under the name, or alone when names are off. On
the screen where controllers join by pressing A, a click is the pad's A. On
the screen of games to join, the online games' hint goes into the key bar's
free left and the join status under it, clear of the map's picture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 12:00:41 +02:00
Stefan MaierandClaude Opus 5.5 9e7fd75f57 Bots: a vehicle left stuck is left alone a while; every third bot follows a person
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:41:40 +02:00
Stefan MaierandClaude Opus 5.5 6754403d68 VR: the menu pointer leaves the stick's choice be; clicks beside a list step it
A choice the stick moved to (a map among the tiles) is no longer taken back
by the pointer resting on another, until the pointer moves well away; and a
click beside a list's slots or a value's box, along the way it steps (where
its arrows are drawn), steps it back or on.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:41:09 +02:00
Stefan MaierandClaude Opus 5.5 aedf5ff9bc Bot drivers wait for those coming to get in, and brake for teammates
Just in, a bot driver waits up to six seconds while a bot goes for its
vehicle or a person of its team stands near it with a gun's seat free; it
brakes (backing, if fast) for a teammate on foot in its way. A bot takes a
vehicle only when the nearest enemy (or the objective) is a long way off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:39:24 +02:00
MrBruh 193cbf59c7 Split-screen co-op 2026-10-04 22:27:13 +13:00
Stefan MaierandClaude Opus 5.5 fe160e9dbe Bots man turrets while an enemy is about
A turret near a bot (15 world units) is manned while an enemy is within 35
of it, and left once there has been no one to shoot for ten seconds; at it
the bot aims and fires as at a vehicle's gun. The map's vehicles are named
in the log once a game.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 11:23:49 +02:00
MrBruhandClaude Opus 5.5 d578f88bd0 Validate server browser names as player names
The server browser cleans each game's name as a host cleans the names
of the players and machines that join it, and leaves out a game whose
name has nothing left that names it. A host lists a Latin letter with
a mark as its plain letter, as player names are read.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-04 20:53:00 +13:00
MrBruhandClaude Opus 5.5 d3fc997fdc Ready walked-over weapons, swap out the selected one
In multiplayer a second weapon is picked up into the empty slot on
walking over it and readied, as in campaign; a client readies the
weapon the host says it picked up once it has it. A swap drops the
weapon the player selected, not the one still in hand mid-switch.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-04 20:47:06 +13:00
MrBruh a227872ccb Merge pull request #73 from thelinkin3000/fix/unarmed-melee-campaign
Leave an unarmed melee alone where the map has no multiplayer weapons
2026-10-04 20:28:01 +13:00
MrBruh 812ffeea33 Outline the focused server browser row 2026-10-04 20:19:12 +13:00
MrBruh c05864b3fc Leave quit players off the scoreboard 2026-10-04 20:06:28 +13:00
thelinkin3000andClaude Opus 5.5 ce77db8404 Leave an unarmed melee alone where the map has no multiplayer weapons
A player with no weapon, whose biped has no blow of its own, borrows the
melee of the globals' first multiplayer weapon. A campaign map's globals
list no multiplayer weapons, and a10 starts the player unarmed, so a melee
in the cryo tube's tutorial asked for element 0 of an empty block and
halted in tag_groups.c. With no multiplayer weapon there is no blow to
borrow, and the melee does what the game's always did there: nothing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-04 06:22:42 +00:00
MrBruh 39350fb81f Enemy names to the motion sensor's range and setting 2026-10-04 18:57:11 +13:00
MrBruh 1a15a171ac No unarmed grenades or melee from vehicle seats 2026-10-04 17:54:34 +13:00
MrBruh 2e3841ff7d Left-align the shotgun's ammo meter 2026-10-04 17:47:55 +13:00
MrBruh 46edf53657 Settings and End Game in the pause menu 2026-10-04 17:20:32 +13:00
Paul Hontz cd747c23c5 Log of the port to halo.log without a console
The release build no longer has a console, and the platform layer's log
(platform_log to stderr: invite links, the data root, crash reports)
went only there. When stderr goes nowhere, halo.log next to halo.exe
gets it instead.
2026-10-03 22:43:14 -04:00
Paul Hontz f148dbd6d9 Release builds of Windows without a console window
The release halo.exe was a console-subsystem PE, so Windows and Wine
open an empty console window next to the game. Under Proton in
gamescope the console can take focus and leave a black screen. Nothing
reads the console (the log is debug.txt), so release builds now link as
GUI with mainCRTStartup; debug builds keep the console.
2026-10-03 22:26:20 -04:00
MrBruh c3adcfe5bf Deflate the release zips again 2026-10-04 14:22:11 +13:00
MrBruh 3304965653 Lobby check test past the compiler launcher 2026-10-04 13:43:13 +13:00
MrBruh c04765d7f4 Server browser of public internet games 2026-10-04 13:34:23 +13:00
MrBruh 933aac6175 No map weapons option, grenades with no weapon 2026-10-04 10:44:37 +13:00
MrBruh 809408c663 Survive kills and joins in departed players' slots 2026-10-04 10:12:32 +13:00
MrBruh 601a4c1f50 Unload the menu map before a client's next game 2026-10-04 09:51:47 +13:00
MrBruh 133d6a5dc1 Free quit players' slots 2026-10-04 09:07:47 +13:00
Stefan MaierandClaude Opus 5.5 12c97ffa85 Bots take vehicles: drive, man the gun, ride along; and race
A bot whose way is long takes an empty vehicle it can drive near it (a
Warthog, a Ghost, a Scorpion), walking to the driver's door and standing
there until the game offers the seat. Driving, it follows a vehicle's path
(from the vehicle's surface, wider, its steps further apart), turning a
Warthog or a Ghost by facing where it goes and pushing a Scorpion there from
where its gun faces; it runs an enemy down, circles one with a gunner
aboard, fires a Ghost's and a Scorpion's guns, backs off what it is stuck
on, roams between the map's spawn points, and gets out at the objective,
overturned, stuck again and again, or with an enemy close while it stands.
In a game of teams a bot mans the gun of a teammate's vehicle, a person's
first (or rides along with a person), aims and fires it, and gets out once
no one drives. Overturned vehicles near it are turned upright.

In a race a bot heads for the flag it is to touch next
(game_engine_race_next_flag), in a vehicle if it can have one.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 16:48:59 +02:00
saulo benigno 61623e68d5 Fix texture bindings after first upload 2026-10-03 11:41:54 -03:00
MrBruh 23b542601f Unarmed melee and infinite grenades for any player count 2026-10-04 03:22:16 +13:00
MrBruh 62b630a261 Remove the flamethrower and gravity rifle 2026-10-04 03:05:59 +13:00
Stefan MaierandClaude Opus 5.5 0e6327cadf The controls page lists switching grenades (B held) on a line of its own
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:41:56 +02:00
Stefan MaierandClaude Opus 5.5 5f82df71f0 VR options: Y on the main menu or the pause menu
A panel of the VR settings one may change while playing (turning, snap
angle, smooth speed, the vehicles' comfort vignette, the Warthog's wheel,
the weapon laser, the crosshair, the motion tracker on the wrist), written
to config.toml, which vr.c reads again as they change; and a page of what
the controllers' buttons do, on foot, in vehicles and in the menus. The
pointer works both, and its hint opens the panel. The menus' screens are
named in the log as they come up.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:37:10 +02:00
Stefan Maier cfdd821b45 Merge branch 'merge/upstream-v11' 2026-10-03 15:21:57 +02:00
Stefan MaierandClaude Opus 5.5 a9bbce5f7a Merge upstream (cybersecurity/halo-ce-universal c9ee319a): PC menus, network version 11
Upstream's PC menus are kept for the desktop; in VR the Xbox's stay, which
the VR port's join codes, game list, host options and keyboard pointer are
built into. config_write_integer now writes through upstream's config_write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 15:11:07 +02:00
MrBruh e8e0c2215a Find the port's headers in Windows game units 2026-10-04 02:08:45 +13:00
MrBruh 383355381c Kills to win up to 500 in the PC menus 2026-10-04 02:04:14 +13:00
Stefan Maier e94906100c Merge branch 'feature/warthog-wheel' 2026-10-03 14:58:32 +02:00
Stefan Maier 57add5ed71 Merge branch 'feature/vr-menu-pointer' 2026-10-03 14:58:32 +02:00
Milenko 2b0103a0ef Slayer's kills to win up to 500, for big games
The game type editor's kills to win (Slayer and Team Slayer) went up to
50, which a game of many players reaches in moments: it now also offers 75,
100, 150, 200, 250 and 500. The spinner's items are its string list's
(ui.map's 5, 10, 15, 25, 50) and then strings of the port's own, each with
its description; the options list's descriptions count only a spinner's
items of the tag's own, so those of the rows after it are where they were.
A spinner with extra items is a little wider, for three digits.
2026-10-04 01:58:26 +13:00
MrBruh c9ee319ab5 Add the PC menus 2026-10-04 01:56:45 +13:00
Stefan MaierandClaude Opus 5.5 827eb0fc1d The keyboard gets the menu pointer's clicks; its BACK and ENTER hints click
The menus' mouse handling took the pointer's clicks each frame before the
keyboard asked for them, so the keyboard never saw one: with the keyboard
up the pointer is now the keyboard's alone. Clicking the hints under it
(B = BACK, A = ENTER, in its picture) cancels or finishes as Done does.
The pointer counts as moved past 3 pixels, not a hand's tremor.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:47:51 +02:00
Stefan MaierandClaude Opus 5.5 a482a5f5bb The on-screen keyboard follows the menu pointer in VR
The key under the controller's pointer is picked and a click types it.
In the menus the triggers no longer reach the game as the gamepad's (they
click the pointer; on the keyboard they also moved its cursor).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:42:57 +02:00
Stefan MaierandClaude Opus 5.5 81f321f959 Of overlapping screen keys, the one whose icon is nearest on the left
A key's label is a text box often far wider than its text, reaching over
the next key (Back pressed Delete). Of the keys under the pointer, the one
whose icon begins nearest on its left is taken: each key from its icon to
the next one's.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:30:20 +02:00
Stefan MaierandClaude Opus 5.5 f97ff9219f Menu pointer: narrower keys, the click where the trigger began to move
The screen keys' margin in VR was wide enough to reach the next key (Back
pressed Delete): now 2 pixels to the sides and 4 above and below, with a
label at most 25 pixels off. A click is taken where the controller
pointed as its trigger began to move (past a tenth), not a fixed time
before, which could still be on the key it just left.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:27:28 +02:00
Stefan MaierandClaude Opus 5.5 85e79a067a Steadier menu pointer clicks in VR
A click is taken where the controller pointed a few frames before the
trigger went down (pulling it tips the controller), and in VR a screen
key's button takes a label up to 40 pixels off and a margin of 6 about it,
so the keys under the menus (A, B, Back) are hit as readily as items.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 12:23:28 +02:00
Stefan MaierandClaude Opus 5.5 effeda1b7c Point at the menus with a controller in VR
The desktop builds' mouse in the menus (halo_ui_pointer.h) now comes, on
Android in VR, from a controller: where its aim's line meets the menus'
screen fixed in the room is the pointer, the trigger clicks (the hand
pressed last points; a click ticks its rumble), and a ringed dot shows
where it points. The item under it takes the focus and a click presses A,
as with the mouse; the online games and host options panels take it too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-03 11:56:05 +02:00
codi 557c0b486c Build the Android port on macOS hosts
configure.py hardcoded the NDK's linux-x86_64 toolchain folder, so the
Android build could not find the NDK on a Mac. Pick the host's folder
(darwin-x86_64, windows-x86_64 or linux-x86_64), or the only one the NDK
has.

On a case-insensitive file system, the game's <StdDef.h> shim found itself
again through its own <stddef.h> inclusion and recursed. Use include_next,
as the port's other header shims do.
2026-09-29 20:51:24 -06:00
554 changed files with 59355 additions and 932 deletions

No files matched your search

+1 -4
View File
@@ -242,10 +242,7 @@ jobs:
mkdir release
for build in artifacts/*/; do
name="$(basename "$build")"
# stored, not deflated: the updater in builds up to 57 waits for
# an end of stream the game's zlib 1.1 does not always report,
# and fails on a deflated entry that unpacked correctly
(cd "$build" && zip -0 -qr "$GITHUB_WORKSPACE/release/$name.zip" .)
(cd "$build" && zip -qr "$GITHUB_WORKSPACE/release/$name.zip" .)
done
ls -l release
+4 -4
View File
@@ -19,9 +19,9 @@ builds of the latest release:
| Platform | Release | Debug |
| --- | --- | --- |
| Linux | [halo-linux-release.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-linux-release.zip) | [halo-linux-debug.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-linux-debug.zip) |
| Windows | [halo-windows-release.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-windows-release.zip) | [halo-windows-debug.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-windows-debug.zip) |
| Android | [halo-android-release.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-android-release.zip) | [halo-android-debug.zip](https://github.com/cybersecurity/halo-ce-universal/releases/latest/download/halo-android-debug.zip) |
| Linux | [halo-linux-release.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-linux-release.zip) | [halo-linux-debug.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-linux-debug.zip) |
| Windows | [halo-windows-release.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-windows-release.zip) | [halo-windows-debug.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-windows-debug.zip) |
| Android | [halo-android-release.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-android-release.zip) | [halo-android-debug.zip](https://github.com/OpenCommunityEdition/OpenCE/releases/latest/download/halo-android-debug.zip) |
Use the release build to play. The debug build stops at the first failed
assertion and writes it to the log. Use the debug build to find and report
@@ -32,7 +32,7 @@ if you want to install it. Refer to "Updates" in
[port/linux/README.md](port/linux/README.md#updates).
Each build of the `main` branch that passes on all three platforms is a new
release. The [Releases](https://github.com/cybersecurity/halo-ce-universal/releases)
release. The [Releases](https://github.com/OpenCommunityEdition/OpenCE/releases)
page keeps the last five releases. If the latest build has a problem, get
an older build from that page.
+125
View File
@@ -0,0 +1,125 @@
# Steam Frame
The same APK as for the Quest runs on the Steam Frame, in Lepton (SteamOS's
Android, a Waydroid fork: Android 11, arm64), with SteamVR's OpenXR runtime.
What differs is found at run time, not by a build of its own.
## The device
- Steam Settings > System > Enable Developer Mode; then start "Lepton
Development" from the library. While the headset sleeps Lepton stops, and
adb with it.
- adb over the network: `adb connect <frame-ip>:5555`; over USB:
`adb forward tcp:5555 tcp:5555` then `adb connect localhost:5555`.
Always name the device (`adb -s <frame-ip>:5555 ...`): a Quest may be
connected as well.
- Install with `adb install -r --no-streaming`. It prints "Lepton post
installation failed due to APP_PATH being unset", but installs. Start the
game with `am start -n com.halo.decomp/.LauncherActivity`.
- Lepton empties `/sdcard/Android/data` whenever it starts again: the game's
data must live elsewhere (stage 2). `/sdcard/Documents` and
`/sdcard/Download` are the SteamOS user's folders and are kept.
## What the port does for it
- SDL3's clipboard handler takes a clipboard service for granted, which
Lepton has not: `tools/android_build.py` patches it to do without.
- SteamVR lists an implicit OpenXR layer for Vulkan apps whose library an
app cannot load: the APK carries a pass-through layer under its name
(`port/android/xr_layer/fdm_injection_stub.c`).
## Stages
| # | Stage | State |
| --- | --- | --- |
| 1 | Base: the fixes above on the current main | done |
| 2 | The game's data where Lepton keeps it | done: `/home/steamos/Documents/HaloCE` |
| 3 | Menus, HUD and text visible (quad layers) | done: their alpha from their colour |
| 4 | The freeze at the cryo bay's calibration | not seen again (2026-10-04) |
| 5 | The Frame's controllers | done: their own profile, the Xbox's layout |
| 6 | Frame rate, resolution | done: 72 Hz steady, multiview on |
| 7 | Multiplayer, voice, cross-play with the Quest | |
| 8 | A button in the Steam library | done: `steam_frame_launch.sh` |
## Starting it on the Frame
A button in the Steam library ("Halo VR", a non-Steam game) runs
`~/Documents/HaloCE/halo-vr.sh` (`port/android/steam_frame_launch.sh`),
which starts the game as Steam starts an Android title of its own:
`lepton waitforexitandrun -- ~/Documents/HaloCE/HaloVR.apk`, in a container
of its own (`steamlaunch-4290000001`) that Lepton installs the APK into
anew whenever the file is newer. Updating the game is replacing that APK.
What the script does that Steam would for an Android title:
- a compat data path (`steamapps/compatdata/4290000001/internal`): after an
install Lepton links the app's data to it, a dangling link without it;
and the shader path, which Lepton reads Steam's shader dump path against;
- a container id of its own: with the shortcut's id, SteamVR's client in the
container stalled in xrCreateInstance;
- a few starts: a new APK's first start only installs it, and a start that
ends within 30 s is tried again (up to three times), unless the game was
quit (it writes `quit_requested.txt`).
Steam's "Exit game" does not reach the game (its process is the container's,
not Steam's): quit it with the VR options' "Quit Halo" (Y in the main or
pause menu, twice). A container ended within 30 s of its start makes
Lepton drop the app's install, so the next start installs it again.
The shortcut is in `userdata/<id>/config/shortcuts.vdf` (Steam reads it when
it starts; appid 3151454348 for this name and path), its pictures in
`userdata/<id>/config/grid/` (from `port/android/steam_frame_grid/`). From
the Mac, over USB the Frame's SteamOS is an adb device of its own, `frame`,
beside Lepton's `<frame-ip>:5555`.
## The game's data
Lepton uninstalls the app and empties its folders whenever it starts again.
The game's data lives in the SteamOS user's Documents instead: when
`/home/steamos/Documents/HaloCE` holds `maps/ui.map` and is writable, the
launcher and the game take it as their data folder (config.toml, saves and
debug.txt go there too). Once:
adb -s <frame-ip>:5555 shell mkdir -p /home/steamos/Documents/HaloCE/maps
adb -s <frame-ip>:5555 push assets/maps/. /home/steamos/Documents/HaloCE/maps/
adb -s <frame-ip>:5555 shell chmod -R 777 /home/steamos/Documents/HaloCE
After a Lepton restart only the APK is installed again. (Use the path under
/home, not /sdcard/Documents: Android 11's scoped storage stands between the
app and the latter.)
## The controllers
SteamVR offers the Frame's controllers as themselves
(`XR_VALVE_frame_controller_interaction`,
`/interaction_profiles/valve/frame_controller_valve`; Valve's "Steam Frame
Input" page). Without bindings for it, SteamVR maps the Quest's onto them,
and the left Touch controller's X and Y land on the D-pad. With them the
game gets the Xbox's layout, as the right controller has it: A jump, B
flashlight (held: switch grenades), X action and reload, Y switch weapon,
menu pause; the left one's View is Back (scores), its D-pad the D-pad, the
bumpers switch grenades (left) and the flashlight (right). The VR options'
page of buttons shows this layout on the Frame.
## Findings
- 2026-10-02: runs flat and in VR (GLES 3.2 by Mesa zink on Turnip, eyes
1728x1728, 72 Hz, XR_FB_display_refresh_rate absent). Quad layers
(menus, HUD, instructions) are not shown; the projection layer is. Froze
at the cryo bay's look calibration; its log was lost to Lepton's wipe.
- 2026-10-04: SteamVR draws a quad's texels by their alpha alone; the
game's menus and HUD have none in their additive parts, so nothing showed.
On SteamVR (by the runtime's name) the overlays' alpha now comes from their
colour (host_xr.c; `HALO_XR_QUAD_ALPHA=colour|keep` overrides). With it,
menus, HUD and the campaign ran well (the user: "lief 1a"); no freeze.
- 2026-10-04: no online games found: the public MQTT brokers had banned the
home connection for a while (too many connections from tests that day);
broker.emqx.io came back within minutes. Lepton's network is the Frame's
own (same IP), DNS works.
- 2026-10-04: the refresh rate is SteamOS's setting; the runtime offers
only that one (the game asks for the highest at or below
`vr.refresh_rate`, and logs the rates offered). At 72 Hz the game holds
72 fps (about 11.6 ms a frame with multiview, eyes 7.6 ms; without it
eyes about 9 ms). At 90 Hz it cannot (11.1 ms a frame), and SteamVR's
making up of the missed frames showed as a doubled picture when turning
the head. Keep the Frame at 72 Hz, or lower `vr.resolution_scale` (about
0.85) for 90.
@@ -35,6 +35,7 @@ import java.nio.channels.FileChannel;
*/
public class LauncherActivity extends Activity {
private static final int PICK_IMAGE = 1;
private static final String SHARED_DATA_ROOT = "/home/steamos/Documents/HaloCE";
private File dataRoot;
private TextView status;
@@ -46,6 +47,12 @@ public class LauncherActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dataRoot = getExternalFilesDir(null);
// the Steam Frame: Lepton empties the app's own folders whenever it
// starts again; the game's data lives in the SteamOS user's
// Documents instead, when it is there (port/android/STEAM_FRAME.md;
// the same choice as host_main.c's)
if (new File(SHARED_DATA_ROOT, "maps/ui.map").isFile() && new File(SHARED_DATA_ROOT).canWrite())
dataRoot = new File(SHARED_DATA_ROOT);
// created by the app, so that files pushed into it with adb stay
// readable (a directory adb creates there belongs to the shell user)
if (dataRoot != null)
+3
View File
@@ -68,6 +68,9 @@ int host_sdl_gl_swap_window(unsigned int window);
int host_sdl_poll_event(void *event);
int host_sdl_set_clipboard_text(const char *text);
void host_sdl_get_clipboard_text(char *buffer, unsigned int size);
/* the keyboard's keys by name (the controls' bindings, xinput_sdl.c) */
void host_sdl_scancode_name(int scancode, char *buffer, unsigned int size);
int host_sdl_scancode_from_name(const char *name);
int host_sdl_show_toast(const char *message, int duration, int gravity, int x, int y);
int host_sdl_show_simple_message_box(unsigned int flags, const char *title, const char *message);
int host_sdl_get_gamepads(unsigned int *ids, int capacity);
+13
View File
@@ -39,6 +39,19 @@ const char *SDL_GetError(void)
return buffer;
}
const char *SDL_GetScancodeName(SDL_Scancode scancode)
{
static __thread char buffer[64];
host_sdl_scancode_name((int)scancode, buffer, sizeof(buffer));
return buffer;
}
SDL_Scancode SDL_GetScancodeFromName(const char *name)
{
return (SDL_Scancode)host_sdl_scancode_from_name(name);
}
Uint64 SDL_GetTicks(void)
{
return (Uint64)host_sdl_ticks();
+32
View File
@@ -90,6 +90,8 @@ int host_errno(void)
static char data_root[512];
static char save_root[512];
/* where a device that empties the app's folders keeps the game's data */
#define SHARED_DATA_ROOT "/home/steamos/Documents/HaloCE"
void host_android_path(int which, char *buffer, uint32_t size)
{
@@ -269,6 +271,12 @@ static void *game_main(void *unused)
external = SDL_GetAndroidExternalStoragePath();
if (!external)
host_fatal("Android storage is unavailable: %s", SDL_GetError());
/* the Steam Frame: Lepton empties the app's own folders whenever it
starts again; the game's data lives in the SteamOS user's Documents
instead, when it is there (port/android/STEAM_FRAME.md; the same choice
as LauncherActivity's) */
if (directory_has_maps(SHARED_DATA_ROOT) && access(SHARED_DATA_ROOT, W_OK) == 0)
external = SHARED_DATA_ROOT;
snprintf(data_root, sizeof(data_root), "%s", external);
snprintf(save_root, sizeof(save_root), "%s/save", external);
/* readable by adb (the shell user), for managing saves */
@@ -293,6 +301,19 @@ static void *game_main(void *unused)
environment_set(&environment, "HALO_SAVE_ROOT", save_root);
time_zone(zone, sizeof(zone));
environment_set(&environment, "TZ", zone);
/* internet play's MQTT brokers (network.brokers_file): the APK's list,
written beside config.toml at each start, as a desktop update replaces
the file beside its game */
{
size_t brokers_size = 0;
void *brokers = SDL_LoadFile("brokers.txt", &brokers_size);
snprintf(path, sizeof(path), "%s/brokers.txt", data_root);
if (!brokers || !SDL_SaveFile(path, brokers, brokers_size))
host_logf(HOST_LOG_ERROR, "cannot write %s: %s", path, SDL_GetError());
SDL_free(brokers);
}
snprintf(path, sizeof(path), "%s/config.toml", data_root);
image = SDL_LoadFile("halo_guest.elf", &image_size);
if (!image)
@@ -305,6 +326,17 @@ static void *game_main(void *unused)
ranges: the headset's runtime, loaded by the probe, maps its libraries
wherever there is room, the Xbox window at 0x80000000 included */
snprintf(path, sizeof(path), "%s/config.toml", data_root);
{
/* (debug.gl_thread: Mesa's GL thread on or off, as the driver's
mesa_glthread, before the GL context is made; -1 leaves it be) */
double gl_thread = config_number(path, "debug.gl_thread", -1.0);
if (gl_thread >= 0.0)
{
setenv("mesa_glthread", gl_thread != 0.0 ? "true" : "false", 1);
host_logf(HOST_LOG_INFO, "Mesa's GL thread %s (debug.gl_thread)", gl_thread != 0.0 ? "on" : "off");
}
}
{
int eye_width, eye_height;
+10
View File
@@ -98,6 +98,16 @@ void host_sdl_get_error(char *buffer, uint32_t size)
SDL_strlcpy(buffer, SDL_GetError(), size);
}
void host_sdl_scancode_name(int32_t scancode, char *buffer, uint32_t size)
{
SDL_strlcpy(buffer, SDL_GetScancodeName((SDL_Scancode)scancode), size);
}
int32_t host_sdl_scancode_from_name(const char *name)
{
return (int32_t)SDL_GetScancodeFromName(name);
}
int64_t host_sdl_ticks(void)
{
return (int64_t)SDL_GetTicks();
+358 -4
View File
@@ -38,6 +38,8 @@ picture; the copy flips them to GL's bottom-up images.
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sched.h>
#include <stdio.h>
#define XR_USE_PLATFORM_ANDROID
#define XR_USE_GRAPHICS_API_OPENGL_ES
@@ -102,6 +104,14 @@ static struct
XrAction button_b; /* B on the right controller, Y on the left */
XrAction menu;
XrAction thumbrest;
/* the Steam Frame's controllers' own (XR_VALVE_frame_controller_interaction) */
int has_frame_controller;
int frame_layout;
XrAction button_x;
XrAction button_y;
XrAction view;
XrAction bumper;
XrAction dpad[4];
XrAction haptic;
struct xr_hand_actions hands[HALO_XR_HAND_COUNT];
@@ -111,6 +121,22 @@ static struct
int left_grip_valid;
int has_performance_settings;
/* (XR_META_performance_metrics: the compositor's counts, in the log,
for telling frames shown late from the game's own pace) */
int has_metrics;
PFN_xrQueryPerformanceMetricsCounterMETA query_metric;
XrPath metric_paths[16];
uint32_t metric_count;
struct timespec metrics_logged;
/* (SteamVR: the frames' thread kept on the fast cores, xr_fast_cores) */
int steamvr;
int cores_pinned;
/* (with the metrics: the time the copies into the layers' images and
xrEndFrame took, since the last line, and the frames) */
double copy_seconds[HALO_XR_LAYER_COUNT];
double end_seconds;
double acquire_seconds;
int timed_frames;
int has_refresh_rate;
PFN_xrRequestDisplayRefreshRateFB request_refresh_rate;
PFN_xrGetDisplayRefreshRateFB get_refresh_rate;
@@ -122,6 +148,11 @@ static struct
GLint rect_uniform;
GLint cut_disc_uniform;
GLint vignette_uniform;
GLint alpha_from_colour_uniform;
/* the runtime draws a quad's texels by their alpha alone, ignoring the
colour of those with none (SteamVR on the Steam Frame): the game's
overlays, whose additive parts have none, get alpha from their colour */
int quad_alpha_from_colour;
GLint tangents_uniform;
float vignette;
/* the same copy from a layer of a texture array (the eyes drawn at
@@ -223,6 +254,7 @@ static const char copy_fragment_shader[] =
"precision highp float;\n"
"uniform sampler2D source;\n"
"uniform float cut_disc;\n"
"uniform float alpha_from_colour; /* 1: as opaque as it is bright (a quad's, SteamVR) */\n"
"uniform float vignette; /* 0..1: the eye images darken from their edges */\n"
"uniform vec4 tangents; /* the eye's edges: left, right, down, up */\n"
"in vec2 coordinate;\n"
@@ -236,6 +268,8 @@ static const char copy_fragment_shader[] =
"{\n"
" vec4 texel = texture(source, coordinate);\n"
" color = vec4(to_linear(texel.rgb), texel.a);\n"
" if (alpha_from_colour > 0.5)\n"
" color.a = max(color.a, max(color.r, max(color.g, color.b)));\n"
" if (cut_disc > 0.5)\n"
" {\n"
" float inside = 1.0 - smoothstep(0.95, 1.0, length(disc));\n"
@@ -326,6 +360,7 @@ static int copy_initialize(void)
xr.rect_uniform = glGetUniformLocation(xr.program, "rect");
xr.cut_disc_uniform = glGetUniformLocation(xr.program, "cut_disc");
xr.vignette_uniform = glGetUniformLocation(xr.program, "vignette");
xr.alpha_from_colour_uniform = glGetUniformLocation(xr.program, "alpha_from_colour");
xr.tangents_uniform = glGetUniformLocation(xr.program, "tangents");
xr.copy_array_layer = -1;
{
@@ -580,6 +615,14 @@ static int actions_initialize(void)
xr.button_b = action_create("button_upper", "B / Y", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.menu = action_create("menu", "Menu", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.thumbrest = action_create("thumbrest", "Thumb rest", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.button_x = action_create("button_x", "X", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.button_y = action_create("button_y", "Y", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.view = action_create("view", "View", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.bumper = action_create("bumper", "Bumper", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.dpad[0] = action_create("dpad_up", "D-pad up", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.dpad[1] = action_create("dpad_down", "D-pad down", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.dpad[2] = action_create("dpad_left", "D-pad left", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.dpad[3] = action_create("dpad_right", "D-pad right", XR_ACTION_TYPE_BOOLEAN_INPUT);
xr.haptic = action_create("haptic", "Rumble", XR_ACTION_TYPE_VIBRATION_OUTPUT);
{
@@ -644,6 +687,44 @@ static int actions_initialize(void)
{ &xr.haptic, "/user/hand/right/output/haptic" },
};
/* the Steam Frame's controllers, as themselves: the right one has
A, B, X, Y and a menu button, the left one a D-pad and a View button
(port/android/STEAM_FRAME.md) */
static const struct binding frame_controller[] =
{
{ &xr.grip_pose, "/user/hand/left/input/grip/pose" },
{ &xr.grip_pose, "/user/hand/right/input/grip/pose" },
{ &xr.aim_pose, "/user/hand/left/input/aim/pose" },
{ &xr.aim_pose, "/user/hand/right/input/aim/pose" },
{ &xr.trigger, "/user/hand/left/input/trigger/value" },
{ &xr.trigger, "/user/hand/right/input/trigger/value" },
{ &xr.squeeze, "/user/hand/left/input/squeeze/value" },
{ &xr.squeeze, "/user/hand/right/input/squeeze/value" },
{ &xr.thumbstick, "/user/hand/left/input/thumbstick" },
{ &xr.thumbstick, "/user/hand/right/input/thumbstick" },
{ &xr.thumbstick_click, "/user/hand/left/input/thumbstick/click" },
{ &xr.thumbstick_click, "/user/hand/right/input/thumbstick/click" },
{ &xr.button_a, "/user/hand/right/input/a/click" },
{ &xr.button_b, "/user/hand/right/input/b/click" },
{ &xr.button_x, "/user/hand/right/input/x/click" },
{ &xr.button_y, "/user/hand/right/input/y/click" },
{ &xr.menu, "/user/hand/right/input/menu/click" },
{ &xr.view, "/user/hand/left/input/view/click" },
{ &xr.bumper, "/user/hand/left/input/bumper/click" },
{ &xr.bumper, "/user/hand/right/input/bumper/click" },
{ &xr.dpad[0], "/user/hand/left/input/dpad_up/click" },
{ &xr.dpad[1], "/user/hand/left/input/dpad_down/click" },
{ &xr.dpad[2], "/user/hand/left/input/dpad_left/click" },
{ &xr.dpad[3], "/user/hand/left/input/dpad_right/click" },
{ &xr.haptic, "/user/hand/left/output/haptic" },
{ &xr.haptic, "/user/hand/right/output/haptic" },
};
if (xr.has_frame_controller)
{
suggest("/interaction_profiles/valve/frame_controller_valve", frame_controller,
sizeof(frame_controller) / sizeof(frame_controller[0]));
}
suggest("/interaction_profiles/oculus/touch_controller", touch, sizeof(touch) / sizeof(touch[0]));
suggest("/interaction_profiles/valve/index_controller", index, sizeof(index) / sizeof(index[0]));
suggest("/interaction_profiles/khr/simple_controller", simple, sizeof(simple) / sizeof(simple[0]));
@@ -713,6 +794,30 @@ static void hands_read(struct halo_xr_frame *frame)
sync.activeActionSets = &active;
if (!XR_SUCCEEDED(xrSyncActions(xr.session, &sync)))
return;
{
/* (the controllers' profile the runtime chose, in the log as it
changes) */
static XrPath logged[HALO_XR_HAND_COUNT];
for (hand = 0; hand < HALO_XR_HAND_COUNT; hand++)
{
XrInteractionProfileState state = { XR_TYPE_INTERACTION_PROFILE_STATE };
if (XR_SUCCEEDED(xrGetCurrentInteractionProfile(xr.session, xr.hands[hand].path, &state)) &&
state.interactionProfile != logged[hand])
{
char name[XR_MAX_PATH_LENGTH] = "none";
uint32_t length = 0;
logged[hand] = state.interactionProfile;
if (state.interactionProfile != XR_NULL_PATH)
xrPathToString(xr.instance, state.interactionProfile, sizeof(name), &length, name);
if (hand == HALO_XR_HAND_RIGHT)
xr.frame_layout = strstr(name, "frame_controller") != NULL;
host_logf(HOST_LOG_INFO, "xr: the %s hand's controller: %s", hand ? "right" : "left", name);
}
}
}
for (hand = 0; hand < HALO_XR_HAND_COUNT; hand++)
{
struct halo_xr_hand *out = &frame->hands[hand];
@@ -757,7 +862,31 @@ static void hands_read(struct halo_xr_frame *frame)
(action_boolean(xr.menu, hand) ? HALO_XR_BUTTON_MENU : 0) |
(action_boolean(xr.thumbrest, hand) ? HALO_XR_BUTTON_THUMBREST : 0) |
(out->trigger > 0.5f ? HALO_XR_BUTTON_TRIGGER : 0) |
(out->squeeze > 0.5f ? HALO_XR_BUTTON_SQUEEZE : 0);
(out->squeeze > 0.5f ? HALO_XR_BUTTON_SQUEEZE : 0) |
(action_boolean(xr.view, hand) ? HALO_XR_BUTTON_VIEW : 0) |
(action_boolean(xr.bumper, hand) ? HALO_XR_BUTTON_BUMPER : 0) |
(action_boolean(xr.dpad[0], hand) ? HALO_XR_BUTTON_DPAD_UP : 0) |
(action_boolean(xr.dpad[1], hand) ? HALO_XR_BUTTON_DPAD_DOWN : 0) |
(action_boolean(xr.dpad[2], hand) ? HALO_XR_BUTTON_DPAD_LEFT : 0) |
(action_boolean(xr.dpad[3], hand) ? HALO_XR_BUTTON_DPAD_RIGHT : 0);
}
frame->controller_layout = xr.frame_layout ? HALO_XR_LAYOUT_FRAME : HALO_XR_LAYOUT_TOUCH;
if (xr.frame_layout)
{
/* (the Frame's right X, Y and menu button: the game's X, Y and Start,
which the Quest has on the left) */
struct halo_xr_hand *left = &frame->hands[HALO_XR_HAND_LEFT];
struct halo_xr_hand *right = &frame->hands[HALO_XR_HAND_RIGHT];
if (action_boolean(xr.button_x, HALO_XR_HAND_RIGHT))
left->buttons |= HALO_XR_BUTTON_A;
if (action_boolean(xr.button_y, HALO_XR_HAND_RIGHT))
left->buttons |= HALO_XR_BUTTON_B;
if (right->buttons & HALO_XR_BUTTON_MENU)
{
right->buttons &= ~HALO_XR_BUTTON_MENU;
left->buttons |= HALO_XR_BUTTON_MENU;
}
}
}
@@ -774,6 +903,13 @@ static void refresh_rate_choose(float wanted)
{
return;
}
{
char line[128] = "";
for (index = 0; index < count; index++)
snprintf(line + strlen(line), sizeof(line) - strlen(line), " %.0f", rates[index]);
host_logf(HOST_LOG_INFO, "xr: refresh rates offered:%s Hz", line);
}
/* the highest rate not above the one wanted (0: the highest) */
for (index = 0; index < count; index++)
{
@@ -895,6 +1031,12 @@ int host_xr_probe(float resolution_scale, int *eye_width, int *eye_height)
/* the loader and the runtime keep the activity */
activity = (*environment)->NewGlobalRef(environment, activity);
/* (The Steam Frame lists an implicit API layer of its own for Vulkan
apps, XR_APILAYER_VALVE_fdm_injection, whose library an app cannot load
from its namespace, failing xrCreateInstance; the Android loader reads
no variable to turn it off, so the app carries a pass-through layer
under that library's name: port/android/xr_layer/fdm_injection_stub.c) */
if (!XR_SUCCEEDED(xrGetInstanceProcAddr(XR_NULL_HANDLE, "xrInitializeLoaderKHR",
(PFN_xrVoidFunction *)&initialize_loader)) || !initialize_loader)
{
@@ -922,6 +1064,23 @@ int host_xr_probe(float resolution_scale, int *eye_width, int *eye_height)
extensions[index].next = NULL;
}
xrEnumerateInstanceExtensionProperties(NULL, extension_count, &extension_count, extensions);
{
/* (the runtime's extensions, in the log: what a headset offers) */
char line[512] = "";
for (index = 0; index < extension_count; index++)
{
if (strlen(line) + strlen(extensions[index].extensionName) + 2 >= sizeof(line))
{
host_logf(HOST_LOG_INFO, "xr: extensions %s", line);
line[0] = 0;
}
strcat(line, " ");
strcat(line, extensions[index].extensionName);
}
if (line[0])
host_logf(HOST_LOG_INFO, "xr: extensions %s", line);
}
if (!has_extension(extensions, extension_count, XR_KHR_OPENGL_ES_ENABLE_EXTENSION_NAME))
{
host_logf(HOST_LOG_ERROR, "xr: the runtime has no OpenGL ES support");
@@ -933,9 +1092,15 @@ int host_xr_probe(float resolution_scale, int *eye_width, int *eye_height)
xr.has_performance_settings = has_extension(extensions, extension_count, XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME);
if (xr.has_performance_settings)
enabled[enabled_count++] = XR_EXT_PERFORMANCE_SETTINGS_EXTENSION_NAME;
xr.has_frame_controller = has_extension(extensions, extension_count, "XR_VALVE_frame_controller_interaction");
if (xr.has_frame_controller)
enabled[enabled_count++] = "XR_VALVE_frame_controller_interaction";
xr.has_refresh_rate = has_extension(extensions, extension_count, XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME);
if (xr.has_refresh_rate)
enabled[enabled_count++] = XR_FB_DISPLAY_REFRESH_RATE_EXTENSION_NAME;
xr.has_metrics = has_extension(extensions, extension_count, XR_META_PERFORMANCE_METRICS_EXTENSION_NAME);
if (xr.has_metrics)
enabled[enabled_count++] = XR_META_PERFORMANCE_METRICS_EXTENSION_NAME;
android.applicationVM = machine;
android.applicationActivity = activity;
@@ -960,6 +1125,23 @@ int host_xr_probe(float resolution_scale, int *eye_width, int *eye_height)
}
xrGetSystemProperties(xr.instance, xr.system, &properties);
strncpy(xr.system_name, properties.systemName, sizeof(xr.system_name) - 1);
{
/* (SteamVR: the quads' alpha from their colour; HALO_XR_QUAD_ALPHA
"colour" or "keep" says otherwise, for trying) */
XrInstanceProperties instance = { XR_TYPE_INSTANCE_PROPERTIES };
const char *choice = getenv("HALO_XR_QUAD_ALPHA");
if (XR_SUCCEEDED(xrGetInstanceProperties(xr.instance, &instance)))
{
xr.quad_alpha_from_colour = strstr(instance.runtimeName, "SteamVR") != NULL;
xr.steamvr = xr.quad_alpha_from_colour;
host_logf(HOST_LOG_INFO, "xr: runtime %s", instance.runtimeName);
}
if (choice)
xr.quad_alpha_from_colour = !strcmp(choice, "colour");
if (xr.quad_alpha_from_colour)
host_logf(HOST_LOG_INFO, "xr: the overlays' alpha from their colour");
}
views[0].type = views[1].type = XR_TYPE_VIEW_CONFIGURATION_VIEW;
views[0].next = views[1].next = NULL;
@@ -1066,6 +1248,25 @@ int host_xr_initialize(struct halo_xr_info *info, float wanted_refresh_rate)
xr.get_refresh_rate(xr.session, &info->refresh_rate);
}
if (xr.has_metrics)
{
PFN_xrEnumeratePerformanceMetricsCounterPathsMETA enumerate = NULL;
PFN_xrSetPerformanceMetricsStateMETA set_state = NULL;
XrPerformanceMetricsStateMETA state = { XR_TYPE_PERFORMANCE_METRICS_STATE_META };
xrGetInstanceProcAddr(xr.instance, "xrEnumeratePerformanceMetricsCounterPathsMETA",
(PFN_xrVoidFunction *)&enumerate);
xrGetInstanceProcAddr(xr.instance, "xrSetPerformanceMetricsStateMETA", (PFN_xrVoidFunction *)&set_state);
xrGetInstanceProcAddr(xr.instance, "xrQueryPerformanceMetricsCounterMETA",
(PFN_xrVoidFunction *)&xr.query_metric);
state.enabled = XR_TRUE;
xr.has_metrics = enumerate && set_state && xr.query_metric &&
XR_SUCCEEDED(enumerate(xr.instance, 16, &xr.metric_count, xr.metric_paths)) &&
XR_SUCCEEDED(set_state(xr.session, &state));
host_logf(HOST_LOG_INFO, "xr: performance metrics %s (%u counters)", xr.has_metrics ? "on" : "off",
xr.has_metrics ? xr.metric_count : 0);
}
if (xr.has_performance_settings)
{
/* the game's one busy thread and its GPU work both need the clocks
@@ -1245,8 +1446,30 @@ int host_xr_copy_layer_array(int layer, uint32_t texture, int array_layer)
/* copies part of a render target (left, top, right, bottom, 0..1 from its
top left) into a layer's image */
static double seconds_now(void)
{
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
return (double)now.tv_sec + (double)now.tv_nsec * 1e-9;
}
static int copy_layer_region(int layer, uint32_t texture, int clear_alpha, float left, float top, float right,
float bottom);
int host_xr_copy_layer_region(int layer, uint32_t texture, int clear_alpha, float left, float top, float right,
float bottom)
{
double start = xr.has_metrics ? seconds_now() : 0.0;
int copied = copy_layer_region(layer, texture, clear_alpha, left, top, right, bottom);
if (xr.has_metrics && layer >= 0 && layer < HALO_XR_LAYER_COUNT)
xr.copy_seconds[layer] += seconds_now() - start;
return copied;
}
static int copy_layer_region(int layer, uint32_t texture, int clear_alpha, float left, float top, float right,
float bottom)
{
struct xr_swapchain *swapchain;
XrSwapchainImageAcquireInfo acquire = { XR_TYPE_SWAPCHAIN_IMAGE_ACQUIRE_INFO };
@@ -1265,8 +1488,14 @@ int host_xr_copy_layer_region(int layer, uint32_t texture, int clear_alpha, floa
return 0;
}
wait.timeout = XR_INFINITE_DURATION;
if (!xr_ok(xrWaitSwapchainImage(swapchain->handle, &wait), "xrWaitSwapchainImage"))
return 0;
{
double start = xr.has_metrics ? seconds_now() : 0.0;
if (!xr_ok(xrWaitSwapchainImage(swapchain->handle, &wait), "xrWaitSwapchainImage"))
return 0;
if (xr.has_metrics)
xr.acquire_seconds += seconds_now() - start;
}
gl_save(&saved);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, swapchain->framebuffers[swapchain->acquired_index]);
@@ -1316,6 +1545,8 @@ int host_xr_copy_layer_region(int layer, uint32_t texture, int clear_alpha, floa
glUniform1i(xr.source_uniform, 0);
glUniform4f(xr.rect_uniform, left, top, right, bottom);
glUniform1f(xr.cut_disc_uniform, clear_alpha == HALO_XR_COPY_DISC ? 1.0f : 0.0f);
glUniform1f(xr.alpha_from_colour_uniform, xr.quad_alpha_from_colour && clear_alpha == HALO_XR_COPY_ALPHA &&
layer != HALO_XR_LAYER_EYE_LEFT && layer != HALO_XR_LAYER_EYE_RIGHT ? 1.0f : 0.0f);
if ((layer == HALO_XR_LAYER_EYE_LEFT || layer == HALO_XR_LAYER_EYE_RIGHT) && xr.vignette > 0.001f)
{
const XrFovf *fov = &xr.views[layer - HALO_XR_LAYER_EYE_LEFT].fov;
@@ -1358,6 +1589,59 @@ int host_xr_copy_layer_region(int layer, uint32_t texture, int clear_alpha, floa
return 1;
}
/* The Steam Frame: Android in a container, without XR_EXT_performance_settings
to ask for the clocks, and the scheduler free to put the game's one busy
thread, which simulates and draws each frame, on a slow core (its two
2.3 GHz ones) now and then: frames late to the compositor, shown twice,
the picture doubled as the head turns. The thread that ends the frames is
kept on the cores no slower than nine tenths of the fastest. */
static void xr_fast_cores(void)
{
cpu_set_t set;
long fastest = 0, speeds[CPU_SETSIZE];
int cpu, count = 0;
char line[128] = "";
for (cpu = 0; cpu < CPU_SETSIZE && cpu < 64; cpu++)
{
char path[96];
FILE *file;
speeds[cpu] = 0;
snprintf(path, sizeof(path), "/sys/devices/system/cpu/cpu%d/cpufreq/cpuinfo_max_freq", cpu);
file = fopen(path, "r");
if (!file)
continue;
if (fscanf(file, "%ld", &speeds[cpu]) != 1)
speeds[cpu] = 0;
fclose(file);
if (speeds[cpu] > fastest)
fastest = speeds[cpu];
}
if (!fastest)
{
host_logf(HOST_LOG_INFO, "xr: the cores' speeds unknown: the frames' thread left where it runs");
return;
}
CPU_ZERO(&set);
for (cpu = 0; cpu < CPU_SETSIZE && cpu < 64; cpu++)
{
if (speeds[cpu] && speeds[cpu] * 10 >= fastest * 9)
{
char item[8];
CPU_SET(cpu, &set);
count++;
snprintf(item, sizeof(item), " %d", cpu);
strcat(line, item);
}
}
if (count && sched_setaffinity(0, sizeof(set), &set) == 0)
host_logf(HOST_LOG_INFO, "xr: the frames' thread on the fast cores:%s (fastest %ld MHz)", line, fastest / 1000);
else
host_logf(HOST_LOG_INFO, "xr: the frames' thread could not be kept on the fast cores");
}
int host_xr_end_frame(const struct halo_xr_submit *submit)
{
XrFrameEndInfo end = { XR_TYPE_FRAME_END_INFO };
@@ -1500,11 +1784,81 @@ int host_xr_end_frame(const struct halo_xr_submit *submit)
}
}
if (xr.steamvr && !xr.cores_pinned)
{
xr.cores_pinned = 1;
if (!getenv("HALO_XR_ANY_CORE"))
xr_fast_cores();
}
/* (every five seconds, the compositor's counters, and the core the
frames' thread is on) */
if (xr.has_metrics)
{
struct timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
if (now.tv_sec - xr.metrics_logged.tv_sec >= 5)
{
char line[768] = "";
uint32_t counter;
xr.metrics_logged = now;
for (counter = 0; counter < xr.metric_count && counter < 16; counter++)
{
XrPerformanceMetricsCounterMETA value = { XR_TYPE_PERFORMANCE_METRICS_COUNTER_META };
char name[XR_MAX_PATH_LENGTH];
uint32_t length = 0;
char item[96];
if (!XR_SUCCEEDED(xr.query_metric(xr.session, xr.metric_paths[counter], &value)) ||
!XR_SUCCEEDED(xrPathToString(xr.instance, xr.metric_paths[counter], sizeof(name), &length, name)))
{
continue;
}
snprintf(item, sizeof(item), " %s=%g", strrchr(name, '/') ? strrchr(name, '/') + 1 : name,
(value.counterFlags & XR_PERFORMANCE_METRICS_COUNTER_FLOAT_VALUE_VALID_BIT_META) ?
(double)value.floatValue : (double)value.uintValue);
if (strlen(line) + strlen(item) < sizeof(line))
strcat(line, item);
}
host_logf(HOST_LOG_INFO, "xr: metrics%s, on core %d", line, sched_getcpu());
if (xr.timed_frames)
{
double frames = (double)xr.timed_frames;
char copies[256] = "";
int timed;
for (timed = 0; timed < HALO_XR_LAYER_COUNT; timed++)
{
char item[24];
snprintf(item, sizeof(item), " %d:%.2f", timed, xr.copy_seconds[timed] * 1e3 / frames);
strcat(copies, item);
xr.copy_seconds[timed] = 0.0;
}
host_logf(HOST_LOG_INFO, "xr: per frame ms: copies (layer:ms)%s; of them waiting for images %.2f; "
"xrEndFrame %.2f", copies, xr.acquire_seconds * 1e3 / frames, xr.end_seconds * 1e3 / frames);
xr.acquire_seconds = xr.end_seconds = 0.0;
xr.timed_frames = 0;
}
}
}
end.displayTime = xr.frame_state.predictedDisplayTime;
end.environmentBlendMode = XR_ENVIRONMENT_BLEND_MODE_OPAQUE;
end.layerCount = layer_count;
end.layers = layers;
return xr_ok(xrEndFrame(xr.session, &end), "xrEndFrame");
{
double start = xr.has_metrics ? seconds_now() : 0.0;
int ended = xr_ok(xrEndFrame(xr.session, &end), "xrEndFrame");
if (xr.has_metrics)
{
xr.end_seconds += seconds_now() - start;
xr.timed_frames++;
}
return ended;
}
}
void host_xr_set_vignette(float strength)
+2
View File
@@ -38,6 +38,8 @@ host_sdl_gamepad_axis
host_sdl_gamepad_button
host_sdl_gamepad_type
host_sdl_rumble_gamepad
host_sdl_scancode_name
host_sdl_scancode_from_name
host_sdl_open_audio_stream
host_sdl_put_audio_stream_data
host_sdl_resume_audio_stream_device
+18
View File
@@ -53,6 +53,23 @@ enum
HALO_XR_BUTTON_TRIGGER = 1 << 4, /* trigger past its click point */
HALO_XR_BUTTON_SQUEEZE = 1 << 5, /* grip past its click point */
HALO_XR_BUTTON_THUMBREST = 1 << 6, /* thumb resting (touch) */
/* the Steam Frame's controllers' (HALO_XR_LAYOUT_FRAME): the left one's
View button and D-pad, either one's bumper (their right one's X, Y and
menu button come as the left hand's A, B and MENU: the game's X, Y and
Start, as on the Quest) */
HALO_XR_BUTTON_VIEW = 1 << 7,
HALO_XR_BUTTON_BUMPER = 1 << 8,
HALO_XR_BUTTON_DPAD_UP = 1 << 9,
HALO_XR_BUTTON_DPAD_DOWN = 1 << 10,
HALO_XR_BUTTON_DPAD_LEFT = 1 << 11,
HALO_XR_BUTTON_DPAD_RIGHT = 1 << 12,
};
/* the controllers' layout, for what the game tells the player */
enum
{
HALO_XR_LAYOUT_TOUCH = 0, /* the Quest's: X, Y and menu on the left */
HALO_XR_LAYOUT_FRAME = 1, /* the Steam Frame's: A, B, X, Y and menu on the right, a D-pad on the left */
};
/* halo_xr_hand.flags, halo_xr_view.flags, halo_xr_frame.head_flags */
@@ -112,6 +129,7 @@ struct halo_xr_frame
struct halo_xr_pose head;
struct halo_xr_view views[HALO_XR_EYE_COUNT];
struct halo_xr_hand hands[HALO_XR_HAND_COUNT];
int controller_layout; /* HALO_XR_LAYOUT_* */
};
/* halo_xr_submit.overlay_mode */
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

+85
View File
@@ -0,0 +1,85 @@
#!/bin/bash
# Halo VR on the Steam Frame: Lepton runs the APK in a container of its own,
# and installs it anew whenever the APK is newer than the installed one
# (port/android/STEAM_FRAME.md). The game's data: ~/Documents/HaloCE.
# (a container of its own, not the shortcut's id: with that, SteamVR's
# client in the container waited on xrCreateInstance)
export SteamAppId="${HALO_LEPTON_APP_ID:-4290000001}"
# (what Steam gives an Android title of its own, and a non-Steam game not:
# the app's data in the container links to the compat data path's
# internal/, a dangling link without it; and the shader paths: Lepton reads
# the dump path against the other)
export STEAM_COMPAT_DATA_PATH="$HOME/.local/share/Steam/steamapps/compatdata/$SteamAppId"
export STEAM_COMPAT_SHADER_PATH="$HOME/.local/share/Steam/steamapps/shadercache/$SteamAppId"
mkdir -p "$STEAM_COMPAT_DATA_PATH/internal" "$STEAM_COMPAT_SHADER_PATH"
unset STEAM_FOSSILIZE_DUMP_PATH LD_PRELOAD
LEPTON="$HOME/.local/share/Steam/steamapps/common/Lepton/lepton"
APK="$HOME/Documents/HaloCE/HaloVR.apk"
LOG="$HOME/Documents/HaloCE/launcher.log"
# (written by the game when the player quits it: no start again)
QUIT="$HOME/Documents/HaloCE/quit_requested.txt"
rm -f "$QUIT"
CONTEXT="steamlaunch-$SteamAppId"
log() { echo "$(date '+%F %T') $*" >> "$LOG"; }
log "start (pid $$, parent $PPID)"
# Steam's "Exit game" ends the game's processes as Steam knows them (this
# script, under Steam's reaper), not the container, which podman runs: a
# signal here is passed on to Lepton, and a watcher of its own takes the
# container down once this script is gone (killed)
stopping=0
child=0
stop()
{
log "signal $1"
stopping=1
[ "$child" -gt 0 ] && kill -TERM "$child" 2>/dev/null
}
trap 'stop TERM' TERM
trap 'stop INT' INT
trap 'stop HUP' HUP
script=$$
setsid bash -c '
while kill -0 '"$script"' 2>/dev/null; do sleep 1; done
echo "$(date "+%F %T") watcher: the game was ended, so its container" >> "'"$LOG"'"
"'"$LEPTON"'" kill "'"$CONTEXT"'" >/dev/null 2>&1
' </dev/null >/dev/null 2>&1 &
# the game's log while it runs (Lepton's logcat of its container), for
# looking into problems: logcat.txt, anew each start
LOGCAT="$HOME/Documents/HaloCE/logcat.txt"
: > "$LOGCAT"
setsid bash -c '
while kill -0 '"$script"' 2>/dev/null; do
"'"$LEPTON"'" logcat "'"$CONTEXT"'" 2>/dev/null | grep -v "^ERROR: \|^steamlaunch-\|^$" >> "'"$LOGCAT"'"
sleep 3
done
' </dev/null >/dev/null 2>&1 &
run()
{
"$LEPTON" waitforexitandrun -- "$APK" &
child=$!
# (wait returns early when a signal comes: until Lepton is gone)
while kill -0 "$child" 2>/dev/null; do
wait "$child"
done
child=0
}
# (a new APK is only installed on its first start, not started; and a start
# right after a game that was ended hard can fail in SteamVR, which then
# needs a moment: again, up to three times, while it ends within 30 s)
for attempt in 1 2 3; do
started=$SECONDS
run
if (( stopping || SECONDS - started >= 30 )) || [ -e "$QUIT" ]; then
break
fi
log "ended within $((SECONDS - started)) s: again"
sleep 5
done
rm -f "$QUIT"
log "end"
@@ -0,0 +1,62 @@
/*
FDM_INJECTION_STUB.C
An OpenXR API layer that does nothing, named as the Steam Frame's
XR_APILAYER_VALVE_fdm_injection names its library
(libVkLayer_VALVE_fdm_injection.so). The Frame lists that layer as implicit
for every OpenXR app (/vendor/etc/openxr/1/api_layers/implicit.d), but an
Android app (in Lepton) cannot load the system's library from its own
namespace, and the Khronos loader then fails xrCreateInstance altogether;
nor does the Android loader read the variable that would turn the layer
off. With this one in the app's libraries the loader finds a layer of that
name, which hands every call on to the next. (The real layer adds fragment
density maps to Vulkan apps; this game draws with OpenGL ES.) On a Quest no
manifest names it and it is never loaded.
*/
#include <openxr/openxr.h>
#include <openxr/openxr_loader_negotiation.h>
#include <stddef.h>
static PFN_xrGetInstanceProcAddr next_get_instance_proc_addr;
static XRAPI_ATTR XrResult XRAPI_CALL layer_get_instance_proc_addr(XrInstance instance, const char *name,
PFN_xrVoidFunction *function)
{
if (!next_get_instance_proc_addr)
return XR_ERROR_HANDLE_INVALID;
return next_get_instance_proc_addr(instance, name, function);
}
static XRAPI_ATTR XrResult XRAPI_CALL layer_create_api_layer_instance(const XrInstanceCreateInfo *info,
const XrApiLayerCreateInfo *layer_info, XrInstance *instance)
{
XrApiLayerCreateInfo next_layer_info;
if (!layer_info || !layer_info->nextInfo)
return XR_ERROR_INITIALIZATION_FAILED;
next_get_instance_proc_addr = layer_info->nextInfo->nextGetInstanceProcAddr;
next_layer_info = *layer_info;
next_layer_info.nextInfo = layer_info->nextInfo->next;
return layer_info->nextInfo->nextCreateApiLayerInstance(info, &next_layer_info, instance);
}
__attribute__((visibility("default")))
XRAPI_ATTR XrResult XRAPI_CALL xrNegotiateLoaderApiLayerInterface(const XrNegotiateLoaderInfo *loader_info,
const char *layer_name, XrNegotiateApiLayerRequest *request)
{
(void)layer_name;
if (!loader_info || !request || loader_info->structType != XR_LOADER_INTERFACE_STRUCT_LOADER_INFO ||
request->structType != XR_LOADER_INTERFACE_STRUCT_API_LAYER_REQUEST ||
loader_info->minInterfaceVersion > XR_CURRENT_LOADER_API_LAYER_VERSION ||
loader_info->maxInterfaceVersion < XR_CURRENT_LOADER_API_LAYER_VERSION)
{
return XR_ERROR_INITIALIZATION_FAILED;
}
request->layerInterfaceVersion = XR_CURRENT_LOADER_API_LAYER_VERSION;
request->layerApiVersion = loader_info->maxApiVersion < XR_CURRENT_API_VERSION ? loader_info->maxApiVersion :
XR_CURRENT_API_VERSION;
request->getInstanceProcAddr = layer_get_instance_proc_addr;
request->createApiLayerInstance = layer_create_api_layer_instance;
return XR_SUCCESS;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 KiB

After

Width:  |  Height:  |  Size: 369 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

+2 -2
View File
@@ -314,7 +314,7 @@
"svg": "hud_xbox_order__bitmaps__combined__hud_ammo_meters.svg",
"source_scale": 4,
"source": [
-34,
-2,
108
],
"clip": [
@@ -380,7 +380,7 @@
"svg": "hud_xbox_order__bitmaps__combined__hud_ammo_meters.svg",
"source_scale": 4,
"source": [
-25,
-5,
312
],
"clip": [
@@ -2,7 +2,7 @@
<defs>
<radialGradient id="cone" gradientUnits="userSpaceOnUse" cx="167.994" cy="346.437" r="165.922"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#000"/></radialGradient><radialGradient id="coned" gradientUnits="userSpaceOnUse" cx="167.994" cy="346.437" r="165.922"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#878787"/></radialGradient>
<g id="art">
<path d="M167.994,346.437 L69.695,202.598 L266.292,202.598 Z" fill="url(#cone)"/>
<path d="M167.994,346.437 L54.604,180.515 L281.384,180.515 Z" fill="url(#cone)"/>
<circle cx="167.994" cy="345.987" r="53.201" fill="#878787"/>
<path d="M167.994,346.437 L137.767,302.207 A53.201,53.201 0 0 1 198.220,302.207 Z" fill="url(#coned)"/>
<!-- "15m" pixel label -->

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

@@ -2,7 +2,7 @@
<defs>
<radialGradient id="cone" gradientUnits="userSpaceOnUse" cx="126.000" cy="130.342" r="128.840"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#000"/></radialGradient><radialGradient id="coned" gradientUnits="userSpaceOnUse" cx="126.000" cy="130.342" r="128.840"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#878787"/></radialGradient>
<g id="art">
<path d="M126.000,130.342 L49.632,18.677 L202.368,18.677 Z" fill="url(#cone)"/>
<path d="M126.000,130.342 L37.886,1.502 L214.114,1.502 Z" fill="url(#cone)"/>
<circle cx="126.000" cy="129.985" r="41.776" fill="#878787"/>
<path d="M126.000,130.342 L102.251,95.616 A41.776,41.776 0 0 1 149.749,95.616 Z" fill="url(#coned)"/>
<!-- "15m" pixel label -->

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

+57
View File
@@ -0,0 +1,57 @@
# Menu pictures that are not redraws
The menus' bitmaps are drawn from the high-res redraws (`svg/`, from ui-svg-handmade) where there is
one. The PC version's pictures that have none (3D renders, screenshots and logos) are not in this
repository.
## From the Xbox's map
These have the same pictures, in the same order, in the Xbox's `ui.map`, which the menus draw them
from (the player's own; nothing is shipped). `mp_map_grafix`: the Xbox's has the 13 Xbox maps' pictures
(the PC version's first 13) and its "?"; the PC version's other 8 are its own maps'.
- `ui\shell\bitmaps\colors_sm`
- `ui\shell\bitmaps\mp_map_grafix`
- `ui\shell\bitmaps\sp_levels`
- `ui\shell\main_menu\difficulty_select\difficulty_options`
- `ui\shell\main_menu\difficulty_select\difficulty_options_small`
- `ui\shell\main_menu\halo_logo`
- `ui\shell\main_menu\settings_select\player_setup\player_profile_edit\color_edit\player_color_marine_large`
These frames are drawn from a frame of the Xbox map's bitmap of the same name, whose other frames differ:
the same picture, or for the profile settings the Xbox's picture for the same thing.
| The PC version's frame | The Xbox's frame |
| --- | --- |
| `shell/main_menu/multiplayer_type_select/mp_options__2.png` | `ui\shell\main_menu\multiplayer_type_select\mp_options` frame 3 |
| `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__2.png` | `ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\gametype_options` frame 2 |
| `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__5.png` | `ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\gametype_options` frame 4 |
| `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__0.png` | `ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options` frame 0 |
| `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__2.png` | `ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options` frame 1 |
| `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__7.png` | `ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options` frame 3 |
## Placeholders, to be redrawn
The Xbox's map has none of these (or other pictures under the name), so each frame is a placeholder
until it is redrawn.
| File | Size | The PC version's picture |
| --- | --- | --- |
| `ce/shell/main_menu/multiplayer_type_select/mp_options__0.png` | 512x256 | `shell/main_menu/multiplayer_type_select/mp_options__0.png` |
| `ce/shell/main_menu/multiplayer_type_select/mp_options__1.png` | 512x256 | `shell/main_menu/multiplayer_type_select/mp_options__1.png` |
| `ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__0.png` | 512x256 | `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__0.png` |
| `ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__3.png` | 512x256 | `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__3.png` |
| `ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__4.png` | 512x256 | `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__4.png` |
| `ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__6.png` | 512x256 | `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__6.png` |
| `ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__7.png` | 512x256 | `shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__7.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__1.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__1.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__3.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__3.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__4.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__4.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__5.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__5.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__6.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__6.png` |
| `ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__8.png` | 512x256 | `shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__8.png` |
13 of 156 frames are placeholders.
The PC version's `ui\gamespy` and `ui\ticker` fonts are drawn with `ui\small_ui`, which
the Xbox's map has.
+171
View File
@@ -0,0 +1,171 @@
# Menus
The game's menus are the PC version's (Halo Custom Edition's): its main menu
and every screen it leads to. They are XML files in this folder, which the
game builds into its own widget tags when the menus' map (`ui.map`) loads
(`port/linux/game/menu_tags.c`). They then work like the Xbox's menus: with a
controller, the keyboard and the mouse, on every port.
| Path | Contents |
| --- | --- |
| `ce/*.xml` | The PC version's screens, one file for each folder of its tags, laid out as it has them; `ce/strings.xml` their text, `ce/bitmaps.xml` their pictures |
| `ce/shell/...png` | The pictures, drawn from the high-res redraws in `svg/` (up to 4x), else a placeholder |
| `NON_HANDDRAWN.md` | The pictures that are not redraws: those drawn from the Xbox's map (the player's own), and the placeholders, to be redrawn |
| `UNWIRED.md` | The menus' functions that do nothing yet: the lists they fill are empty, and the settings they change do not change |
| `menus.json` | The files the game embeds |
`tools/ce_menus.py` writes all of them from the PC version's tags and the
redraws, but the settings screens (Controls Setup, Gamepads, Mouse, Audio,
Video and Network Setup), which `tools/port_settings.py` writes in their
style with what this port has to set: config.toml's settings (a window or
the full screen, the frame rate, the volumes, internet play, the
multiplayer HUD), the profile's controller settings, and the keyboard and
mouse's controls.
To change the menus without building the game, put files in a `menus` folder
next to `config.toml`. A file with the same path as one here replaces it. On
the desktop, any other `.xml` file there is added too. A PNG that a `<frame>`
names is found there first. If any file has a problem, the log names the
file, the line and the problem, and the game uses the Xbox's menus. The
setting `display.menus = "xbox"` also uses them. `debug.menu_open` starts on
one screen (by its name, `main_menu/settings_select/...`), for looking at it.
## Elements
A file holds one `<menus>` element (`root` names the main menu's widget, in
one file; `main_menu` if none does). It holds `<bitmap>`, `<strings>` and
`<widget>` elements. All files share one set of names. Wherever a name is
asked for, one with a backslash is a tag of the map instead
(`ui\shell\bitmaps\white`).
### `<bitmap>`
```xml
<bitmap name="bitmaps/list_item_bkd">
<frame png="ce/shell/bitmaps/list_item_bkd__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/list_item_bkd__1.png" width="256" height="32"/>
</bitmap>
```
A picture for widgets. Each `<frame>` is an 8-bit RGBA PNG and its size in
the 640x480 menu screen (the PNG is a whole multiple of it), or a frame of a
bitmap of the map: `<frame map="ui\shell\...\profile_options" index="1"/>`. (Or
`frames="a.png b.png"` with one `width` and `height` for all.) A widget draws
its bitmap from the top left, one unit to a texel, cut to the widget's size.
A list's item shows frame 1 while it has the focus and frame 0 otherwise, if
the bitmap has exactly two frames; the game's functions choose others.
### `<strings>`
```xml
<strings name="main_menu/main_menu_options">
<string text="NEW CAMPAIGN"/>
<string text="LOAD CAMPAIGN"/>
</strings>
```
A list of texts, which widgets show by number. `\n` starts a new line.
### `<widget>`
A screen, or a part of one. Its children are `<widget>` elements in it, or
`<child widget="name" x="" y=""/>` for one defined elsewhere (a widget can
be a child of many).
| Attribute | Value |
| --- | --- |
| `name` | Its name, unique (the game knows it as `pc\<name>`, and shows the last part) |
| `type` | `container` (the default), `text`, `spinner` or `column_list` |
| `x`, `y` | Where it is in its parent (a `<widget>` inside another) |
| `left`, `top`, `width`, `height` | Its area; 0, 0, 640 and 480 if not given |
| `flags` | Widget flags (below), separated by spaces |
| `bitmap` | Its background: a `<bitmap>` |
| `string_list`, `string_index` | Its text: a `<strings>` and the number in it |
| `text` | Its text, given here |
| `font` | `large`, `small`, `terminal`, or a font tag of the map |
| `color` | The text's colour, `#RRGGBB` or `#AARRGGBB`. Focused text is white. |
| `align`, `text_x`, `text_y` | `left`, `right` or `center`, and where the text starts in it |
| `text_flags` | `editable`, `password`, `flashing`, `no_focus_test` |
| `list_flags` | `items_in_code`, `items_from_strings` (a spinner showing its strings), `one_tooltip`, `single_preview` |
| `strings`, `setting`, `values` | A spinner's values as shown, separated by `\|`; its `config.toml` setting and the values written for each (`port setting load` and `port setting save`) |
| `header_bitmap`, `footer_bitmap`, `header_bounds`, `footer_bounds` | A list's header and footer: a `<bitmap>` and "top left bottom right" |
| `description` | A column list's extended description: a widget |
| `controller` | `1` to `4`, or `any` (the default); a `<child>`'s or `child_controller`: the one it is for |
| `auto_close`, `auto_close_fade` | It closes itself after this many milliseconds, fading for this many |
| `platform` | `desktop` or `android`: it is only there. Every element takes this. |
Widget flags: `pass_unhandled_to_focused_child` (an event it does not handle
goes to its focused child: a screen needs it for its list to get events),
`pass_unhandled_to_all_children`, `pass_handled_to_all_children`,
`up_down_tabs_items`, `left_right_tabs_items`, `up_down_tabs_children`,
`left_right_tabs_children`, `no_focused_child`, `pause_game`, `flash_bitmap`,
`render_any_controller`, `main_menu_if_no_history`, `tag_controller_index`,
`nifty_fx`, `no_history`, and the PC version's `force_handle_mouse` and
`no_widescreen_fill`, which this engine has no use for.
A widget takes the focus if it has an `<on>` or is a list; a screen gives it
to its first such child.
### `<on>`
What a widget does for an event: `event` (one or more, separated by spaces)
and what to do.
| Attribute | Value |
| --- | --- |
| `event` | `a`, `b`, `x`, `y`, `black`, `white`, `left_trigger`, `right_trigger`, `up`, `down`, `left`, `right`, `start`, `back`, `left_thumb`, `right_thumb`, `stick_up`, `stick_down`, `stick_left`, `stick_right`, `right_stick_up`, `right_stick_down`, `right_stick_left`, `right_stick_right`, `created`, `deleted`; the PC version's `get_focus`, `lose_focus`, `left_mouse`, `middle_mouse`, `right_mouse`, `double_click`, `custom_activation` and `post_render`, which this engine never sends (but `custom_activation`: `emit custom activation event` and `single prev cl item activated` send it) |
| `run` | A function: the game's, as its tags name them; the PC version's; the port's (below); or `unwired <name>`, which does nothing (`UNWIRED.md`) |
| `open`, `replace`, `focus` | A widget to open, to open in its place, to give the focus |
| `back` | `true`: back to the screen before |
| `close` | `current`, `all`, or `other` (with `widget`) |
| `reload` | `self`, or `other` (with `widget`) |
| `branch` | `true`: if `run` fails, open its `<conditional>` widget |
| `otherwise` | A widget to open if `run` fails (a `<conditional>` and `branch` in one) |
| `script` | A script of the menus' scenario to run |
| `label` | Kept as the script's name, not run (as the tags keep it) |
| `sound` | A sound tag of the map to play |
On the keyboard, A is Enter or Space, B is Backspace or F, Start is Escape and
Back is F1. The mouse picks the item under it, clicks A, right-clicks B and
scrolls lists.
The port's functions: `port quit game` quits; `port setting load` (on a
spinner's `created`) shows its setting's value and `port setting save` (on
its `deleted`) writes the value shown to `config.toml`, if it changed. Of
the PC version's: `main menu quit game` quits, `profile set edit begin`
begins editing the first player profile, `mouse emit back event` and
`mouse emit x event` push B and X, `emit custom activation event` and
`single prev cl item activated` run the screen's or the list's
`custom_activation` handlers, and its back handlers go back. Its
campaign's play: `campaign menu continue` (the saved game), New Game's list
of levels and the difficulty menu (`difficulty item select`, and `set
difficulty` on its OK button: the difficulty shown), and Load Game's list of
the profiles' saved games (with `load game menu delete finish`). For our
widgets, `initialize sp level list solo`, `solo level set map` and `set
difficulty` are the port's, as the Xbox's take the Xbox's widgets. The
settings screens': `port settings save` (OK) writes the settings changed
(config.toml's, or `profile.<field>`: the profile being edited) and applies
them, `port settings defaults` shows the defaults, `port settings help` the
help of the row chosen; Controls Setup's `controls ...` bind the keyboard
and mouse's controls (Enter takes the next key or button pressed; left and
right choose which of two; Escape cancels, Delete clears); Change Color's
`color picker ...` (the Xbox's names) set the profile's colour. The others
do nothing yet.
### `<data>`, `<conditional>`, `<replace>`
`<data input="..."/>`: a game data function, which fills in the widget every
frame (`build number textbox only`). `<conditional widget="..."
if_failed="true"/>`: a widget for a `branch` handler. `<replace search="..."
function="controller"/>`: text replaced in the widget's (the controller's
number).
## The art
`tools/ce_menus.py` draws each frame from its redraw in `svg/` (copied from
ui-svg-handmade) at up to 4x its size. A picture with no redraw is the
Xbox's map's, where it has the same one (a whole bitmap, or a `<frame
map=...>`), else a placeholder, placed where the PC version's picture is in
its frame (`--pictures`: only where, not the picture, is read);
`NON_HANDDRAWN.md` lists both. It needs `rsvg-convert`, Pillow, NumPy and
SciPy.
+36
View File
@@ -0,0 +1,36 @@
# Menu functions that are not wired yet
The PC version's menus (`ce/`, from `tools/ce_menus.py`) run functions of the game's. These do nothing
yet (`port/linux/game/menu_functions.c`), so what they fill in (lists, values) is empty, and what they
do (save a setting, join a game) does not happen; the screens open and close as the PC version's.
- The PC version's own functions, which the Xbox's game has not.
- The Xbox's functions that the PC version rewrote for its own widgets, written `unwired <name>` in the
files: run on the PC widgets, the Xbox's would stop the game.
| Function | Uses | |
| --- | --- | --- |
| `common button bar update` | 25 | PC function |
| `direct ip connect init` | 1 | PC function |
| `direct ip connect update` | 1 | PC function |
| `direct ip edit field` | 4 | PC function |
| `gamespy screen update` | 1 | PC function |
| `gamespy select button` | 8 | PC function |
| `gamespy select header` | 22 | PC function |
| `gamespy select item` | 49 | PC function |
| `gamespy update filter settings` | 2 | PC function |
| `gt edit list update` | 1 | PC function |
| `gt select list update` | 1 | PC function |
| `mouse spinner 1wide click` | 66 | PC function |
| `mp map list update` | 1 | PC function |
| `mp prof init teamplay options` | 1 | PC function |
| `mp prof init vehicle options` | 1 | PC function |
| `mp prof save teamplay options` | 1 | PC function |
| `mp prof save vehicle options` | 1 | PC function |
| `mp prof vehicles update` | 1 | PC function |
| `server settings init` | 1 | PC function |
| `server settings update` | 1 | PC function |
| `ss edit server name` | 2 | PC function |
| `ss start game` | 2 | PC function |
Wired: `campaign menu continue`, `campaign menu init`, `controls back handler`, `controls begin binding`, `controls screen change set`, `controls screen defaults`, `controls screen init`, `controls update menu`, `difficulty item select`, `direct ip connect go`, `emit custom activation event`, `gamespy back handler`, `gamespy dismiss error`, `gamespy dismiss filters`, `gamespy screen dispose`, `gamespy screen init`, `load game list update`, `load game menu activated`, `load game menu delete finish`, `load game menu delete request`, `load game menu dispose`, `load game menu init`, `main menu quit game`, `mouse emit accept event`, `mouse emit back event`, `mouse emit x event`, `mp type set mode`, `profile manager select`, `profile set edit begin`, `single prev cl item activated`, `solo map list update`.
+342
View File
@@ -0,0 +1,342 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus' bitmaps, drawn from the redraws, else the PC version's own pictures (NON_HANDDRAWN.md; tools/ce_menus.py) -->
<menus>
<bitmap name="bitmaps/alert_bkd">
<frame png="ce/shell/bitmaps/alert_bkd__0.png" width="256" height="256"/>
</bitmap>
<bitmap name="bitmaps/arrow_sm_down">
<frame png="ce/shell/bitmaps/arrow_sm_down__0.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_down__1.png" width="16" height="16"/>
</bitmap>
<bitmap name="bitmaps/arrow_sm_left">
<frame png="ce/shell/bitmaps/arrow_sm_left__0.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_left__1.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_left__2.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_left__3.png" width="16" height="16"/>
</bitmap>
<bitmap name="bitmaps/arrow_sm_right">
<frame png="ce/shell/bitmaps/arrow_sm_right__0.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_right__1.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_right__2.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_right__3.png" width="16" height="16"/>
</bitmap>
<bitmap name="bitmaps/arrow_sm_up">
<frame png="ce/shell/bitmaps/arrow_sm_up__0.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/arrow_sm_up__1.png" width="16" height="16"/>
</bitmap>
<bitmap name="bitmaps/black">
<frame png="ce/shell/bitmaps/black__0.png" width="4" height="4"/>
</bitmap>
<bitmap name="bitmaps/blue">
<frame png="ce/shell/bitmaps/blue__0.png" width="4" height="4"/>
</bitmap>
<bitmap name="bitmaps/controller_border">
<frame png="ce/shell/bitmaps/controller_border__0.png" width="1024" height="512"/>
</bitmap>
<bitmap name="bitmaps/device_border">
<frame png="ce/shell/bitmaps/device_border__0.png" width="1024" height="512"/>
</bitmap>
<bitmap name="bitmaps/game_type_grafix">
<frame png="ce/shell/bitmaps/game_type_grafix__0.png" width="256" height="128"/>
<frame png="ce/shell/bitmaps/game_type_grafix__1.png" width="256" height="128"/>
<frame png="ce/shell/bitmaps/game_type_grafix__2.png" width="256" height="128"/>
<frame png="ce/shell/bitmaps/game_type_grafix__3.png" width="256" height="128"/>
<frame png="ce/shell/bitmaps/game_type_grafix__4.png" width="256" height="128"/>
<frame png="ce/shell/bitmaps/game_type_grafix__5.png" width="256" height="128"/>
</bitmap>
<bitmap name="bitmaps/gradient">
<frame png="ce/shell/bitmaps/gradient__0.png" width="4" height="512"/>
</bitmap>
<bitmap name="bitmaps/gradient_big">
<frame png="ce/shell/bitmaps/gradient_big__0.png" width="4" height="512"/>
</bitmap>
<bitmap name="bitmaps/join_game_border">
<frame png="ce/shell/bitmaps/join_game_border__0.png" width="1024" height="512"/>
</bitmap>
<bitmap name="bitmaps/list_field">
<frame png="ce/shell/bitmaps/list_field__0.png" width="512" height="512"/>
</bitmap>
<bitmap name="bitmaps/list_item_bkd">
<frame png="ce/shell/bitmaps/list_item_bkd__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/list_item_bkd__1.png" width="256" height="32"/>
</bitmap>
<bitmap name="bitmaps/list_item_bkd_top">
<frame png="ce/shell/bitmaps/list_item_bkd_top__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/list_item_bkd_top__1.png" width="256" height="32"/>
</bitmap>
<bitmap name="bitmaps/locked_gametype">
<frame png="ce/shell/bitmaps/locked_gametype__0.png" width="16" height="16"/>
<frame png="ce/shell/bitmaps/locked_gametype__1.png" width="16" height="16"/>
</bitmap>
<bitmap name="bitmaps/option_bkds">
<frame png="ce/shell/bitmaps/option_bkds__0.png" width="512" height="32"/>
<frame png="ce/shell/bitmaps/option_bkds__1.png" width="512" height="32"/>
</bitmap>
<bitmap name="bitmaps/option_bkds_sm">
<frame png="ce/shell/bitmaps/option_bkds_sm__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/option_bkds_sm__1.png" width="256" height="32"/>
</bitmap>
<bitmap name="bitmaps/option_bkds_sm2">
<frame png="ce/shell/bitmaps/option_bkds_sm2__0.png" width="128" height="32"/>
<frame png="ce/shell/bitmaps/option_bkds_sm2__1.png" width="128" height="32"/>
</bitmap>
<bitmap name="bitmaps/sel_list_desc_bkd">
<frame png="ce/shell/bitmaps/sel_list_desc_bkd__0.png" width="256" height="512"/>
</bitmap>
<bitmap name="bitmaps/sel_list_item_bkd">
<frame png="ce/shell/bitmaps/sel_list_item_bkd__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/sel_list_item_bkd__1.png" width="512" height="32"/>
<frame png="ce/shell/bitmaps/sel_list_item_bkd__2.png" width="512" height="32"/>
</bitmap>
<bitmap name="bitmaps/sel_list_item_bkd_top">
<frame png="ce/shell/bitmaps/sel_list_item_bkd_top__0.png" width="256" height="32"/>
<frame png="ce/shell/bitmaps/sel_list_item_bkd_top__1.png" width="512" height="32"/>
<frame png="ce/shell/bitmaps/sel_list_item_bkd_top__2.png" width="512" height="32"/>
</bitmap>
<bitmap name="bitmaps/semi_transparent_grey">
<frame png="ce/shell/bitmaps/semi_transparent_grey__0.png" width="4" height="4"/>
</bitmap>
<bitmap name="bitmaps/server_header_background_0">
<frame png="ce/shell/bitmaps/server_header_background_0__0.png" width="16" height="32"/>
<frame png="ce/shell/bitmaps/server_header_background_0__1.png" width="16" height="32"/>
</bitmap>
<bitmap name="bitmaps/server_header_background_1">
<frame png="ce/shell/bitmaps/server_header_background_1__0.png" width="32" height="32"/>
<frame png="ce/shell/bitmaps/server_header_background_1__1.png" width="32" height="32"/>
</bitmap>
<bitmap name="bitmaps/server_header_background_2">
<frame png="ce/shell/bitmaps/server_header_background_2__0.png" width="64" height="32"/>
<frame png="ce/shell/bitmaps/server_header_background_2__1.png" width="64" height="32"/>
</bitmap>
<bitmap name="bitmaps/server_header_background_3">
<frame png="ce/shell/bitmaps/server_header_background_3__0.png" width="128" height="32"/>
<frame png="ce/shell/bitmaps/server_header_background_3__1.png" width="128" height="32"/>
</bitmap>
<bitmap name="bitmaps/server_item_bkds">
<frame png="ce/shell/bitmaps/server_item_bkds__0.png" width="512" height="32"/>
<frame png="ce/shell/bitmaps/server_item_bkds__1.png" width="512" height="32"/>
<frame png="ce/shell/bitmaps/server_item_bkds__2.png" width="512" height="32"/>
</bitmap>
<bitmap name="bitmaps/spinner_list_3_wide_item_background">
<frame png="ce/shell/bitmaps/spinner_list_3_wide_item_background__0.png" width="256" height="512"/>
<frame png="ce/shell/bitmaps/spinner_list_3_wide_item_background__1.png" width="256" height="512"/>
</bitmap>
<bitmap name="bitmaps/text_button_background">
<frame png="ce/shell/bitmaps/text_button_background__0.png" width="128" height="32"/>
<frame png="ce/shell/bitmaps/text_button_background__1.png" width="128" height="32"/>
</bitmap>
<bitmap name="bitmaps/white">
<frame png="ce/shell/bitmaps/white__0.png" width="4" height="4"/>
</bitmap>
<bitmap name="main_menu/campaign_select/header_load_game">
<frame png="ce/shell/main_menu/campaign_select/header_load_game__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/campaign_select/item_back">
<frame png="ce/shell/main_menu/campaign_select/item_back__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/campaign_select/item_back__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/campaign_select/item_continue">
<frame png="ce/shell/main_menu/campaign_select/item_continue__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/campaign_select/item_continue__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/campaign_select/item_load_game">
<frame png="ce/shell/main_menu/campaign_select/item_load_game__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/campaign_select/item_load_game__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/campaign_select/item_new_campaign">
<frame png="ce/shell/main_menu/campaign_select/item_new_campaign__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/campaign_select/item_new_campaign__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/difficulty_select/header_choose_difficulty">
<frame png="ce/shell/main_menu/difficulty_select/header_choose_difficulty__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/gametype_select/header_select_gametype">
<frame png="ce/shell/main_menu/gametype_select/header_select_gametype__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/menu_load_campaign">
<frame png="ce/shell/main_menu/menu_load_campaign__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/menu_load_campaign__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/menu_multiplayer">
<frame png="ce/shell/main_menu/menu_multiplayer__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/menu_multiplayer__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/menu_profile">
<frame png="ce/shell/main_menu/menu_profile__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/menu_profile__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/menu_quit">
<frame png="ce/shell/main_menu/menu_quit__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/menu_quit__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/menu_settings">
<frame png="ce/shell/main_menu/menu_settings__0.png" width="256" height="64"/>
<frame png="ce/shell/main_menu/menu_settings__1.png" width="256" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/direct_ip/header_direct_ip">
<frame png="ce/shell/main_menu/multiplayer_type_select/direct_ip/header_direct_ip__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/header_multiplayer">
<frame png="ce/shell/main_menu/multiplayer_type_select/header_multiplayer__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/classic_icon">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/classic_icon__0.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/classic_icon__1.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/classic_icon__2.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/classic_icon__3.png" width="16" height="16"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/dedicated_icon">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/dedicated_icon__0.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/dedicated_icon__1.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/dedicated_icon__2.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/dedicated_icon__3.png" width="16" height="16"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/filters/header_filters">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/filters/header_filters__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/header_internet">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/header_internet__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/header_lan">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/header_lan__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/locked_icon">
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/locked_icon__0.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/locked_icon__1.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/locked_icon__2.png" width="16" height="16"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/join_game/locked_icon__3.png" width="16" height="16"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/mp_map_select/header_select_map">
<frame png="ce/shell/main_menu/multiplayer_type_select/mp_map_select/header_select_map__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/mp_options">
<frame png="ce/shell/main_menu/multiplayer_type_select/mp_options__0.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/multiplayer_type_select/mp_options__1.png" width="512" height="256"/>
<frame map="ui\shell\main_menu\multiplayer_type_select\mp_options" index="3"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/server_settings/header_server_settings">
<frame png="ce/shell/main_menu/multiplayer_type_select/server_settings/header_server_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/player_profiles_select/header_select_profile">
<frame png="ce/shell/main_menu/player_profiles_select/header_select_profile__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/header_indicator_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/indicator_options_edit/header_indicator_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/item_options_edit/header_item_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/item_options_edit/header_item_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/name_edit/header_gametype_name">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/name_edit/header_gametype_name__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/player_options_edit/header_player_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/player_options_edit/header_player_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__0.png" width="256" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__1.png" width="256" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__2.png" width="256" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__3.png" width="256" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__4.png" width="256" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options__5.png" width="256" height="256"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__0.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__1.png" width="512" height="256"/>
<frame map="ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\gametype_options" index="2"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__3.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__4.png" width="512" height="256"/>
<frame map="ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\gametype_options" index="4"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__6.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options__7.png" width="512" height="256"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_edit/header_edit_multiplayer_gametype">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/header_edit_multiplayer_gametype__0.png" width="1024" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_edit/header_set_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_edit/header_set_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/playlist_select/header_select_gametype_to_edit">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/playlist_select/header_select_gametype_to_edit__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/header_teamplay_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/teamplay_options_edit/header_teamplay_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/header_vehicle_options">
<frame png="ce/shell/main_menu/settings_select/multiplayer_setup/vehicle_options_edit/header_vehicle_options__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/header_profile_audio_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/audio_settings/header_profile_audio_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/header_profile_color">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/color_edit/header_profile_color__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/controller_edit/header_profile_controller_setting">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/controller_edit/header_profile_controller_setting__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/header_profile_controls_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/controls_setup/header_profile_controls_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/header_edit_profile_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/header_edit_profile_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/header_profile_mouse_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/header_profile_mouse_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/name_edit/header_profile_name">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/name_edit/header_profile_name__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/header_profile_network_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/network_setup/header_profile_network_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/profile_options">
<frame map="ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options" index="0"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__1.png" width="512" height="256"/>
<frame map="ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options" index="1"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__3.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__4.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__5.png" width="512" height="256"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__6.png" width="512" height="256"/>
<frame map="ui\shell\main_menu\settings_select\player_setup\player_profile_edit\profile_options" index="3"/>
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/profile_options__8.png" width="512" height="256"/>
</bitmap>
<bitmap name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/header_profile_video_settings">
<frame png="ce/shell/main_menu/settings_select/player_setup/player_profile_edit/video_settings/header_profile_video_settings__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/solo_level_select/header_load_level">
<frame png="ce/shell/main_menu/solo_level_select/header_load_level__0.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/coop/header_player_2">
<frame png="ce/port/main_menu/multiplayer_type_select/coop/header_player_2.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/header_direct_link">
<frame png="ce/port/main_menu/multiplayer_type_select/join_game/header_direct_link.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/join_game/header_server_browser">
<frame png="ce/port/main_menu/multiplayer_type_select/join_game/header_server_browser.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/lobby/header_add_player">
<frame png="ce/port/main_menu/multiplayer_type_select/lobby/header_add_player.png" width="512" height="64"/>
</bitmap>
<bitmap name="main_menu/multiplayer_type_select/lobby/header_lobby">
<frame png="ce/port/main_menu/multiplayer_type_select/lobby/header_lobby.png" width="512" height="64"/>
</bitmap>
<bitmap name="pause/pausebox_left">
<frame png="ce/port/pause/pausebox_left__0.png" width="16" height="256"/>
<frame png="ce/port/pause/pausebox_left__1.png" width="16" height="256"/>
</bitmap>
<bitmap name="pause/pausebox_center">
<frame png="ce/port/pause/pausebox_center__0.png" width="4" height="256"/>
<frame png="ce/port/pause/pausebox_center__1.png" width="4" height="256"/>
</bitmap>
<bitmap name="pause/pausebox_right">
<frame png="ce/port/pause/pausebox_right__0.png" width="16" height="256"/>
<frame png="ce/port/pause/pausebox_right__1.png" width="16" height="256"/>
</bitmap>
<bitmap name="blank">
<frame png="ce/port/blank__0.png" width="4" height="4"/>
</bitmap>
</menus>
+134
View File
@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\error (tools/ce_menus.py) -->
<menus>
<widget name="error/confirm_delete_gametype" controller="1" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/confirm_delete_gametype_text_box" x="192" y="176"/>
<child widget="error/header_warning" x="201" y="180"/>
</widget>
<widget name="error/confirm_delete_gametype_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="error/confirm_delete_gametype_button_cancel" x="128"/>
<child widget="error/confirm_delete_gametype_button_ok"/>
</widget>
<widget name="error/confirm_delete_gametype_button_cancel" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="2" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="left_mouse" run="mouse emit back event"/>
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
</widget>
<widget name="error/confirm_delete_gametype_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="final del playlist profile" close="current" sound="sound\sfx\ui\forward"/>
<on event="start" run="final del playlist profile" close="current" sound="sound\sfx\ui\forward"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="error/confirm_delete_gametype_modal_fullscreen" width="640" height="480" flags="pass_unhandled_to_focused_child">
<on event="b" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<on event="back" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<child widget="error/confirm_delete_gametype"/>
<child widget="error/confirm_delete_gametype_button_bar" x="194" y="309"/>
</widget>
<widget name="error/confirm_delete_gametype_text_box" type="text" controller="1" width="280" height="159" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="25" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/confirm_delete_profile" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/confirm_delete_profile_text_box" x="192" y="176"/>
<child widget="error/header_warning" x="201" y="180"/>
</widget>
<widget name="error/confirm_delete_profile_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="error/confirm_delete_profile_button_cancel" x="128"/>
<child widget="error/confirm_delete_profile_button_ok"/>
</widget>
<widget name="error/confirm_delete_profile_button_cancel" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="2" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="left_mouse" run="mouse emit back event"/>
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
</widget>
<widget name="error/confirm_delete_profile_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="final del player profile" close="current" sound="sound\sfx\ui\forward"/>
<on event="start" run="final del player profile" close="current" sound="sound\sfx\ui\forward"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="error/confirm_delete_profile_modal_fullscreen" width="640" height="480" flags="pass_unhandled_to_focused_child">
<on event="b" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<on event="back" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<child widget="error/confirm_delete_profile"/>
<child widget="error/confirm_delete_profile_button_bar" x="194" y="309"/>
</widget>
<widget name="error/confirm_delete_profile_text_box" type="text" controller="1" width="280" height="159" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="24" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/confirm_delete_savegame" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/confirm_delete_savegame_text_box" x="192" y="176"/>
<child widget="error/header_warning" x="201" y="180"/>
</widget>
<widget name="error/confirm_delete_savegame_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="error/confirm_delete_profile_button_cancel" x="128"/>
<child widget="error/confirm_delete_savegame_button_ok"/>
</widget>
<widget name="error/confirm_delete_savegame_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="load game menu delete finish" close="current" sound="sound\sfx\ui\forward"/>
<on event="start" run="load game menu delete finish" close="current" sound="sound\sfx\ui\forward"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="error/confirm_delete_savegame_modal_fullscreen" width="640" height="480" flags="pass_unhandled_to_focused_child">
<on event="b" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<on event="back" run="cancel profile delete" close="current" sound="sound\sfx\ui\back"/>
<child widget="error/confirm_delete_savegame"/>
<child widget="error/confirm_delete_savegame_button_bar" x="194" y="309"/>
</widget>
<widget name="error/confirm_delete_savegame_text_box" type="text" controller="1" width="280" height="159" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="59" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/confirm_empty_player_text_box" type="text" controller="1" width="280" height="159" bitmap="bitmaps/alert_bkd" string_list="main_menu/player_profiles_select/empty_profile_selected" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/confirm_empty_profile" controller="1" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/confirm_empty_player_text_box" x="192" y="176"/>
<child widget="error/header_attention" x="201" y="180"/>
</widget>
<widget name="error/error_modal" width="640" height="480" flags="pass_unhandled_to_focused_child">
<child widget="error/error_text_box" x="192" y="176"/>
<child widget="error/header_error" x="202" y="180"/>
</widget>
<widget name="error/error_modal_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="error/error_modal_button_ok" x="64"/>
</widget>
<widget name="error/error_modal_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="error/error_text_box" type="text" controller="1" width="280" height="159" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="35">
<replace search="%controller" function="controller"/>
</widget>
<widget name="error/header_are_you_sure" type="text" controller="1" width="170" height="20" string_list="error/error_headers" string_index="2" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="error/header_attention" type="text" controller="1" width="150" height="20" string_list="error/error_headers" string_index="4" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="error/header_error" type="text" controller="1" width="150" height="20" string_list="error/error_headers" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="error/header_saving" type="text" controller="1" width="150" height="20" string_list="error/error_headers" string_index="3" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="error/header_warning" type="text" controller="1" width="150" height="20" string_list="error/error_headers" string_index="1" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="error/warning_creating_player_profile_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" auto_close="1000" auto_close_fade="500" bitmap="bitmaps/semi_transparent_grey">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<child widget="error/warning_creating_player_profile_text" x="192" y="176"/>
<child widget="error/header_saving" x="201" y="180"/>
</widget>
<widget name="error/warning_creating_player_profile_text" type="text" controller="1" width="256" height="160" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="16" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/warning_pre_testing_video_screen" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/warning_pre_testing_video_text" x="192" y="176"/>
<child widget="error/header_warning" x="201" y="180"/>
</widget>
<widget name="error/warning_pre_testing_video_text" type="text" controller="1" width="280" height="160" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="51" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/warning_saving_file_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" auto_close="1000" auto_close_fade="500" bitmap="bitmaps/semi_transparent_grey">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<child widget="error/warning_saving_file_text" x="192" y="176"/>
<child widget="error/header_saving" x="201" y="180"/>
</widget>
<widget name="error/warning_saving_file_text" type="text" controller="1" width="256" height="160" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="15" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
<widget name="error/warning_testing_video_screen" width="640" height="480" bitmap="bitmaps/semi_transparent_grey">
<child widget="error/warning_testing_video_text" x="192" y="176"/>
<child widget="error/header_are_you_sure" x="201" y="180"/>
</widget>
<widget name="error/warning_testing_video_text" type="text" controller="1" width="280" height="160" bitmap="bitmaps/alert_bkd" string_list="strings/displayed_error_messages" string_index="41" font="ui\large_ui" color="#FF2896FF" text_x="9" text_y="36">
</widget>
</menus>
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\campaign_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/campaign_select/campaign_menu" width="640" height="480" flags="pass_unhandled_to_focused_child">
<child widget="main_menu/halo_logo" y="28"/>
<child widget="main_menu/campaign_select/campaign_menu_select_list"/>
</widget>
<widget name="main_menu/campaign_select/campaign_menu_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items">
<on event="created" run="campaign menu init" branch="true"/>
<conditional widget="main_menu/difficulty_select/difficulty_select_list_screen" if_failed="true"/>
<child widget="main_menu/campaign_select/menu_item_continue" x="194" y="283"/>
<child widget="main_menu/campaign_select/menu_item_new_campaign" x="192" y="319"/>
<child widget="main_menu/campaign_select/menu_item_load_game" x="192" y="355"/>
<child widget="main_menu/campaign_select/menu_item_back" x="192" y="391"/>
</widget>
<widget name="main_menu/campaign_select/header_load_game" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/campaign_select/header_load_game">
</widget>
<widget name="main_menu/campaign_select/load_level_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/campaign_select/load_level_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/campaign_select/load_level_right_data" type="text" controller="1" left="417" top="258" width="146" height="136" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/campaign_select/load_level_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/campaign_select/load_level_right_name"/>
<child widget="main_menu/campaign_select/load_level_right_pic"/>
<child widget="main_menu/campaign_select/load_level_right_data"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="416" y="343"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="466" y="343"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="516" y="343"/>
</widget>
<widget name="main_menu/campaign_select/load_level_right_name" type="text" controller="1" left="417" top="204" width="146" height="43" string_list="main_menu/map_list" string_index="2" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/campaign_select/load_level_right_pic" controller="1" left="419" top="87" width="140" height="114" bitmap="ui\shell\bitmaps\sp_levels">
</widget>
<widget name="main_menu/campaign_select/load_level_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/campaign_select/load_level_select_button_delete" y="1"/>
<child widget="main_menu/solo_level_select/solo_level_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/campaign_select/load_level_select_button_delete" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="5" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit x event"/>
<on event="start" run="mouse emit x event"/>
<on event="left_mouse" run="mouse emit x event"/>
</widget>
<widget name="main_menu/campaign_select/load_level_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/campaign_select/load_level_extended_desc">
<data input="load game list update"/>
<on event="created" run="load game menu init"/>
<on event="deleted" run="load game menu dispose"/>
<on event="custom_activation" run="load game menu activated"/>
<on event="x" run="load game menu delete request" open="error/confirm_delete_savegame_modal_fullscreen"/>
<child widget="main_menu/new_select/list_item_0" x="20" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/campaign_select/load_level_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/campaign_select/load_level_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/campaign_select/load_level_select_list"/>
<child widget="main_menu/campaign_select/header_load_game"/>
</widget>
<widget name="main_menu/campaign_select/menu_item_back" type="text" width="256" height="33" bitmap="main_menu/campaign_select/item_back" string_list="main_menu/main_menu_options" font="ui\small_ui" color="#000080FF">
<on event="a" back="true"/>
<on event="start" back="true"/>
<on event="left_mouse" back="true"/>
</widget>
<widget name="main_menu/campaign_select/menu_item_continue" type="text" width="256" height="33" bitmap="main_menu/campaign_select/item_continue" string_list="main_menu/main_menu_options" font="ui\small_ui" color="#000080FF">
<on event="a" run="campaign menu continue"/>
<on event="start" run="campaign menu continue"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/campaign_select/menu_item_load_game" type="text" width="256" height="33" bitmap="main_menu/campaign_select/item_load_game" string_list="main_menu/main_menu_options" font="ui\small_ui" color="#000080FF">
<on event="a" open="main_menu/campaign_select/load_level_select_screen"/>
<on event="start" open="main_menu/campaign_select/load_level_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/campaign_select/menu_item_new_campaign" type="text" width="256" height="33" bitmap="main_menu/campaign_select/item_new_campaign" string_list="main_menu/main_menu_options" string_index="1" font="ui\small_ui" color="#000080FF">
<on event="a" open="main_menu/solo_level_select/solo_level_select_screen"/>
<on event="start" open="main_menu/solo_level_select/solo_level_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
</menus>
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\difficulty_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/difficulty_select/difficulty_ext_desc" controller="1" left="275" top="78" width="320" height="322" bitmap="bitmaps/list_field" color="#FF0080FF">
<child widget="main_menu/difficulty_select/difficulty_options" x="333" y="88"/>
<child widget="main_menu/difficulty_select/difficulty_extended_description"/>
<child widget="main_menu/current_profile_name"/>
</widget>
<widget name="main_menu/difficulty_select/difficulty_extended_description" type="text" controller="1" left="275" top="78" width="305" height="322" string_list="main_menu/difficulty_select/difficulty_descriptions" font="ui\large_ui" color="#FF2896FF" text_x="12" text_y="220">
</widget>
<widget name="main_menu/difficulty_select/difficulty_options" controller="1" width="200" height="211" bitmap="ui\shell\main_menu\difficulty_select\difficulty_options">
</widget>
<widget name="main_menu/difficulty_select/difficulty_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/difficulty_select/difficulty_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/difficulty_select/difficulty_select_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="set difficulty"/>
<on event="start" run="set difficulty"/>
<on event="a" run="main menu switch to solo game" branch="true"/>
<on event="start" run="main menu switch to solo game" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
<conditional widget="main_menu/multiplayer_type_select/server_settings/server_settings_screen" if_failed="true"/>
</widget>
<widget name="main_menu/difficulty_select/difficulty_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items pass_handled_to_all_children" description="main_menu/difficulty_select/difficulty_ext_desc">
<data input="difficulty menu update desc"/>
<on event="created" run="difficulty menu init"/>
<child widget="main_menu/difficulty_select/kindergarten_difficulty_item"/>
<child widget="main_menu/difficulty_select/normal_difficulty_item"/>
<child widget="main_menu/difficulty_select/hard_difficulty_item"/>
<child widget="main_menu/difficulty_select/impossible_difficulty_item"/>
<child widget="main_menu/difficulty_select/difficulty_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/difficulty_select/difficulty_select_list_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<data input="warn if diff will nuke saved game"/>
<child widget="main_menu/difficulty_select/difficulty_select_list"/>
<child widget="main_menu/difficulty_select/warning_message" x="65" y="215"/>
<child widget="main_menu/difficulty_select/header_choose_difficulty"/>
</widget>
<widget name="main_menu/difficulty_select/hard_difficulty_item" type="text" controller="1" left="51" top="144" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/difficulty_select/difficulty_options" string_index="2" font="ui\large_ui" color="#FF0080FF" text_x="13" text_y="5">
<on event="left_mouse" run="mouse emit accept event"/>
<on event="a" run="difficulty item select"/>
<on event="start" run="difficulty item select"/>
</widget>
<widget name="main_menu/difficulty_select/header_choose_difficulty" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/difficulty_select/header_choose_difficulty">
</widget>
<widget name="main_menu/difficulty_select/impossible_difficulty_item" type="text" controller="1" left="51" top="177" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/difficulty_select/difficulty_options" string_index="3" font="ui\large_ui" color="#FF0080FF" text_x="13" text_y="5">
<on event="left_mouse" run="mouse emit accept event"/>
<on event="a" run="difficulty item select"/>
<on event="start" run="difficulty item select"/>
</widget>
<widget name="main_menu/difficulty_select/kindergarten_difficulty_item" type="text" controller="1" left="51" top="78" width="232" height="32" bitmap="bitmaps/list_item_bkd_top" string_list="main_menu/difficulty_select/difficulty_options" font="ui\large_ui" color="#FF0080FF" text_x="13" text_y="5">
<on event="left_mouse" run="mouse emit accept event"/>
<on event="a" run="difficulty item select"/>
<on event="start" run="difficulty item select"/>
</widget>
<widget name="main_menu/difficulty_select/normal_difficulty_item" type="text" controller="1" left="51" top="111" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/difficulty_select/difficulty_options" string_index="1" font="ui\large_ui" color="#FF0080FF" text_x="13" text_y="5">
<on event="left_mouse" run="mouse emit accept event"/>
<on event="a" run="difficulty item select"/>
<on event="start" run="difficulty item select"/>
</widget>
<widget name="main_menu/difficulty_select/warning_message" type="text" width="210" height="185" string_list="main_menu/difficulty_select/warning_message" font="ui\small_ui" color="#FFFFFFFF">
</widget>
</menus>
@@ -0,0 +1,64 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\gametype_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/gametype_select/gametype_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/gametype_select/gametype_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/gametype_select/gametype_right_data" type="text" controller="1" left="417" top="258" width="156" height="136" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/gametype_select/gametype_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/gametype_select/gametype_right_name"/>
<child widget="main_menu/gametype_select/gametype_right_pic"/>
<child widget="main_menu/gametype_select/gametype_right_data"/>
<child widget="main_menu/gametype_select/locked_gametype_icon" x="423" y="182"/>
</widget>
<widget name="main_menu/gametype_select/gametype_right_name" type="text" controller="1" left="417" top="204" width="146" height="43" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/gametype_select/gametype_right_pic" controller="1" left="419" top="87" width="140" height="114" bitmap="bitmaps/game_type_grafix">
</widget>
<widget name="main_menu/gametype_select/gametype_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/gametype_select/gametype_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/gametype_select/gametype_select_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/gametype_select/gametype_select_list_2" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/gametype_select/gametype_extended_desc">
<data input="gt select list update"/>
<on event="created" run="mp profiles list initialize"/>
<on event="deleted" run="mp profiles list dispose"/>
<on event="custom_activation" run="mp profile set for game" open="main_menu/multiplayer_type_select/server_settings/server_settings_screen"/>
<child widget="main_menu/gametype_select/list_item_0_chooser" x="82" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="15" y="373"/>
<child widget="main_menu/gametype_select/gametype_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/gametype_select/gametype_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="net server defer start"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/gametype_select/gametype_select_list_2"/>
<child widget="main_menu/gametype_select/header_select_gametype"/>
</widget>
<widget name="main_menu/gametype_select/header_select_gametype" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/gametype_select/header_select_gametype">
</widget>
<widget name="main_menu/gametype_select/list_item_0_chooser" controller="1" width="256" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds_sm" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<child widget="main_menu/gametype_select/list_item_0_chooser_spinner" x="15" y="2"/>
</widget>
<widget name="main_menu/gametype_select/list_item_0_chooser_spinner" type="spinner" controller="1" width="226" height="22" flags="left_right_tabs_items" string_list="main_menu/gametype_select/var_gametype_banks" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 226 19 232">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/gametype_select/locked_gametype_icon" controller="1" width="16" height="16" bitmap="bitmaps/locked_gametype">
</widget>
</menus>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\connected\4way_profile_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/connected/4way_profile_select/qtr_screen_profile_color_pic" controller="1" left="18" top="22" width="112" height="136" bitmap="ui\shell\bitmaps\colors_sm">
</widget>
</menus>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\connected (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/connected/connected_map_select_wrapper" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game tag_controller_index force_handle_mouse">
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_screen"/>
</widget>
<widget name="main_menu/multiplayer_type_select/connected/gametype_select_screen_wrapper" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game">
<child widget="main_menu/gametype_select/gametype_select_screen"/>
</widget>
</menus>
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_coop_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="port coop begin" open="main_menu/multiplayer_type_select/coop/player_2_profile_screen" branch="true"/>
<on event="start" run="port coop begin" open="main_menu/multiplayer_type_select/coop/player_2_profile_screen" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/player_2_profile_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/multiplayer_type_select/coop/player_2_profile_list"/>
<child widget="main_menu/multiplayer_type_select/coop/header_player_2"/>
<child widget="main_menu/multiplayer_type_select/coop/player_2_help" x="20" y="416"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/header_player_2" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/coop/header_player_2">
</widget>
<widget name="main_menu/multiplayer_type_select/coop/player_2_profile_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/profile_manager/player_profile_extended_desc">
<data input="3wide player profile list update"/>
<on event="created" run="port coop player 2 list initialize"/>
<on event="deleted" run="player profile list dispose"/>
<on event="custom_activation" run="port coop player 2" open="main_menu/solo_level_select/solo_level_select_screen" branch="true"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_0" x="20" y="73"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_1" x="20" y="103"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_2" x="20" y="133"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_3" x="20" y="163"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_4" x="20" y="193"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_5" x="20" y="223"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_6" x="20" y="253"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_7" x="20" y="283"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_8" x="20" y="313"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_9" x="20" y="343"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_10" x="20" y="373"/>
<child widget="main_menu/multiplayer_type_select/coop/player_2_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_0" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd_top" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_2" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_3" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_4" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_5" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_6" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_7" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_8" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_9" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/list_item_10" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/coop/player_2_help" type="text" width="350" height="24" text="Player 2: choose with your controller." font="ui\small_ui" color="#FF2896FF" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/coop/player_2_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/profile_manager/profile_manager_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
</menus>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\direct_ip (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/direct_ip_button_join" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_button_join" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="main_menu/multiplayer_type_select/server_settings/server_settings_options" string_index="4" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="direct ip connect go"/>
<on event="start" run="direct ip connect go"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_help" controller="1" left="68" top="321" width="482" height="79" color="#FFFFFFFF">
<child widget="main_menu/multiplayer_type_select/direct_ip/direct_ip_help_text"/>
<child widget="main_menu/current_profile_name"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_help_text" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/multiplayer_type_select/direct_ip/cap_direct_ip_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/direct_ip/direct_ip_help">
<data input="direct ip connect update"/>
<on event="created" run="direct ip connect init"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/op_server_address" x="54" y="73"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/op_server_password" x="54" y="103"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/direct_ip_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/direct_ip_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/multiplayer_type_select/direct_ip/header_direct_ip"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/direct_ip_menu"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/header_direct_ip" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/multiplayer_type_select/direct_ip/header_direct_ip">
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/op_server_address" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/server_address_label"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/server_address_value_label" x="255" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/op_server_password" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/server_password_label"/>
<child widget="main_menu/multiplayer_type_select/direct_ip/server_password_value_label" x="255" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/server_address_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/direct_ip/direct_ip_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/server_address_value_label" type="text" width="230" height="22" flags="pass_unhandled_to_focused_child" font="ui\small_ui" color="#FF2896FF" align="center" text_x="13" text_y="2" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="a" run="direct ip edit field"/>
<on event="start" run="direct ip edit field"/>
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/server_password_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/server_settings_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/direct_ip/server_password_value_label" type="text" width="230" height="22" flags="pass_unhandled_to_focused_child" font="ui\large_ui" color="#FF2896FF" align="center" text_x="13" text_y="2" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="a" run="direct ip edit field"/>
<on event="start" run="direct ip edit field"/>
</widget>
</menus>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\join_game\filters (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/join_game/filters/empty_servers_label" type="text" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/empty_servers_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="strings/var_boolean" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/filters_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/filters_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/filters_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="gamespy update filter settings"/>
<on event="start" run="gamespy update filter settings"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/filters_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/multiplayer_type_select/join_game/filters/cap_filter_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/filters_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/join_game/filters/filters_help">
<data input="game settings lists text update"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_empty_servers" x="54" y="73"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_full_servers" x="54" y="103"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_ping" x="54" y="133"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_game_type" x="54" y="163"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_game_options" x="54" y="193"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/op_installed_maps" x="54" y="223"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/filters_button_bar" y="449"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/filters_screen" width="640" height="480" flags="pass_unhandled_to_focused_child force_handle_mouse" bitmap="bitmaps/gradient_big">
<child widget="main_menu/multiplayer_type_select/join_game/filters/header_filters" y="-21"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/filters_options_menu"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/full_servers_label" type="text" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/full_servers_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="strings/var_boolean" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/game_options_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/game_options_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/multiplayer_type_select/join_game/filters/var_filter_game_options" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/game_type_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/game_type_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/multiplayer_type_select/join_game/filters/var_filter_gametype" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings one_tooltip" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/header_filters" controller="1" left="35" top="11" width="395" height="59" bitmap="main_menu/multiplayer_type_select/join_game/filters/header_filters">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/installed_maps_label" type="text" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/installed_maps_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="strings/var_boolean" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_empty_servers" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/empty_servers_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/empty_servers_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_full_servers" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/full_servers_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/full_servers_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_game_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/game_options_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/game_options_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_game_type" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/game_type_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/game_type_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_installed_maps" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/installed_maps_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/installed_maps_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/op_ping" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/filters/ping_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/ping_spinner" x="300" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/ping_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/join_game/filters/filter_options" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/filters/ping_spinner" type="spinner" left="3" top="2" width="187" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/multiplayer_type_select/join_game/filters/var_filter_ping" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings one_tooltip" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 190 19 196">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/join_game/header_server_browser" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/join_game/header_server_browser">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_direct_link" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/join_game/header_direct_link">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/button_clipboard" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="PASTE LINK" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="direct ip connect go"/>
<on event="start" run="direct ip connect go"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
</menus>
@@ -0,0 +1,458 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\join_game (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/join_game/browser_mode_spinner" type="spinner" left="3" top="2" width="97" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/multiplayer_type_select/join_game/join_game_mode" font="ui\large_ui" color="#FFCCCCCC" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 100 19 106">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/gamespy_error_fullscreen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/black">
<on event="a" run="gamespy dismiss error"/>
<on event="start" run="gamespy dismiss error"/>
<on event="b" run="gamespy dismiss error"/>
<on event="back" run="gamespy dismiss error"/>
<child widget="error/error_modal"/>
<child widget="error/error_modal_button_bar" x="194" y="309"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_internet" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/join_game/header_internet">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_join_game" controller="1" left="35" top="11" width="363" height="59">
<child widget="main_menu/multiplayer_type_select/join_game/header_internet"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_lan"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_server_browser"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_direct_link"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_lan" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/join_game/header_lan">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_sort_arrows" width="64" height="32">
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_up_arrow"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_down_arrow"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_sort_down_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_down">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/header_sort_up_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_up">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/item_ticker_player_info" controller="1" width="600" height="18" bitmap="bitmaps/server_item_bkds" color="#0000E500">
<child widget="main_menu/multiplayer_type_select/join_game/ticker_player_info_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/ticker_player_info" x="80"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/item_ticker_rules_info" controller="1" width="600" height="18" bitmap="bitmaps/server_item_bkds" font="ui\small_ui" color="#FFE5E500">
<child widget="main_menu/multiplayer_type_select/join_game/ticker_rules_info_label"/>
<child widget="main_menu/multiplayer_type_select/join_game/ticker_rules_info" x="80"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/multiplayer_type_select/join_game/join_game_button_refresh" y="1"/>
<child widget="main_menu/multiplayer_type_select/join_game/button_clipboard" x="128" y="1"/>
<child widget="main_menu/multiplayer_type_select/join_game/join_game_button_filters" x="256" y="1"/>
<child widget="main_menu/multiplayer_type_select/join_game/join_game_button_join" x="384" y="1"/>
<child widget="common_button_back" x="512" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_button_filters" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="main_menu/multiplayer_type_select/join_game/join_game_buttons" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="gamespy select button"/>
<on event="start" run="gamespy select button"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_button_join" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="main_menu/multiplayer_type_select/join_game/join_game_buttons" string_index="4" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="gamespy select button"/>
<on event="start" run="gamespy select button"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_button_refresh" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="main_menu/multiplayer_type_select/join_game/join_game_buttons" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="gamespy select button"/>
<on event="start" run="gamespy select button"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_button_update" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="main_menu/multiplayer_type_select/join_game/join_game_buttons" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="gamespy select button"/>
<on event="start" run="gamespy select button"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_header" type="column_list" width="640" height="18" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_locked" x="10"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_dedicated" x="30"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_server_name" x="50"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_map" x="300"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_classic" x="410"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_type" x="430"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_players" x="520"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_sort_header_ping" x="580"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_items_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" bitmap="bitmaps/join_game_border" description="main_menu/multiplayer_type_select/join_game/screen_stats_container">
<data input="gamespy screen update"/>
<child widget="main_menu/multiplayer_type_select/join_game/op_browser_mode" x="10" y="55"/>
<child widget="main_menu/multiplayer_type_select/join_game/join_game_header" y="83"/>
<child widget="main_menu/multiplayer_type_select/join_game/scroll_up_button" x="20" y="102"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_1" x="10" y="102"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_2" x="10" y="119"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_3" x="10" y="136"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_4" x="10" y="153"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_5" x="10" y="170"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_6" x="10" y="187"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_7" x="10" y="204"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_8" x="10" y="221"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_9" x="10" y="238"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_10" x="10" y="255"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_11" x="10" y="272"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_12" x="10" y="289"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_13" x="10" y="306"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_14" x="10" y="323"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_15" x="10" y="340"/>
<child widget="main_menu/multiplayer_type_select/join_game/scroll_down_button" x="20" y="375"/>
<child widget="main_menu/multiplayer_type_select/join_game/item_ticker_player_info" x="20" y="402"/>
<child widget="main_menu/multiplayer_type_select/join_game/item_ticker_rules_info" x="20" y="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/join_game_button_bar" y="449"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/join_game_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient_big">
<on event="created" run="gamespy screen init"/>
<on event="deleted" run="gamespy screen dispose"/>
<on event="b" run="gamespy back handler"/>
<on event="back" run="gamespy back handler"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_join_game" y="-21"/>
<child widget="main_menu/multiplayer_type_select/join_game/join_game_items_list"/>
<child widget="main_menu/multiplayer_type_select/join_game/gamespy_error_fullscreen"/>
<child widget="main_menu/multiplayer_type_select/join_game/filters/filters_screen"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_browser_mode" width="150" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds_sm2" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/join_game/browser_mode_spinner" x="25" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_classic" width="20" height="18" bitmap="bitmaps/server_header_background_0" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_classic"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_dedicated" width="20" height="18" bitmap="bitmaps/server_header_background_0" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_dedicated"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_locked" width="20" height="18" bitmap="bitmaps/server_header_background_0" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FF2896FF" text_y="1">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_locked"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_map" type="column_list" width="110" height="18" bitmap="bitmaps/server_header_background_2" color="#FF2896FF">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_arrows" x="36" y="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_map"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_ping" type="column_list" width="50" height="18" bitmap="bitmaps/server_header_background_1" color="#FF2896FF">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="gamespy select header"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_arrows" x="4" y="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_ping"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_players" type="column_list" width="60" height="18" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/server_header_background_1" color="#FF2896FF">
<on event="a" run="gamespy select header"/>
<on event="start" run="NULL"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_arrows" x="8" y="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_players"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_server_name" type="column_list" width="250" height="18" bitmap="bitmaps/server_header_background_3" color="#FF2896FF">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_arrows" x="104" y="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_server_name"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/op_sort_header_type" type="column_list" width="90" height="18" bitmap="bitmaps/server_header_background_2" color="#FF2896FF" align="center">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/header_sort_arrows" x="24" y="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/sort_header_type"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/page_count_label" type="text" controller="1" width="170" height="30" font="ui\small_ui" color="#FFFFFFFF" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/player_count_label" type="text" controller="1" width="170" height="30" font="ui\small_ui" color="#FFFFFFFF" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/screen_stats_container" controller="1" width="640" height="480" color="#FFFFFFFF" align="right">
<child widget="main_menu/multiplayer_type_select/join_game/server_count_label" x="450" y="60"/>
<child widget="main_menu/multiplayer_type_select/join_game/player_count_label" x="15" y="60"/>
<child widget="main_menu/multiplayer_type_select/join_game/page_count_label" x="310" y="60"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/scroll_down_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_down">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/scroll_down_button" controller="1" width="600" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/scroll_down_arrow" x="268" y="3"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/scroll_up_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_up">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/scroll_up_button" controller="1" width="600" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/join_game/scroll_up_arrow" x="268" y="3"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_count_label" type="text" controller="1" width="170" height="30" font="ui\small_ui" color="#FFFFFFFF" align="right" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_1" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_10" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_11" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_12" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_13" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_14" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_15" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_2" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_3" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_4" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_5" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_6" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_7" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_8" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_9" width="620" height="18" bitmap="bitmaps/server_item_bkds">
<on event="a" run="gamespy select item"/>
<on event="start" run="gamespy select item"/>
<on event="left_mouse" run="mouse emit accept event"/>
<on event="double_click" run="gamespy select item"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_locked" x="4"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_dedicated" x="20"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_server_name" x="40"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_map" x="290"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_classic" x="400"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_type" x="420"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_players" x="510"/>
<child widget="main_menu/multiplayer_type_select/join_game/server_item_ping" x="570"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_classic" width="16" height="18" bitmap="main_menu/multiplayer_type_select/join_game/classic_icon" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_dedicated" width="16" height="18" bitmap="main_menu/multiplayer_type_select/join_game/dedicated_icon" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_locked" width="16" height="18" bitmap="main_menu/multiplayer_type_select/join_game/locked_icon" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_map" type="text" width="107" height="18" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_ping" type="text" width="50" height="18" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_players" type="text" width="57" height="18" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_server_name" type="text" width="247" height="18" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/server_item_type" type="text" width="87" height="18" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_classic" width="20" height="18" bitmap="main_menu/multiplayer_type_select/join_game/classic_icon" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_dedicated" width="20" height="18" bitmap="main_menu/multiplayer_type_select/join_game/dedicated_icon" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FFFFFFFF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_locked" width="20" height="18" bitmap="main_menu/multiplayer_type_select/join_game/locked_icon" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FF2896FF" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_map" type="text" width="110" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="1" font="ui\small_ui" color="#FF2896FF" align="center" text_x="2" text_y="1">
<on event="a"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_ping" type="text" width="50" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="4" font="ui\small_ui" color="#FF2896FF" align="center" text_x="2" text_y="1">
<on event="a"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="gamespy select header"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_players" type="text" width="60" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="2" font="ui\small_ui" color="#FF2896FF" align="center" text_x="2" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_server_name" type="text" width="250" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" font="ui\small_ui" color="#FF2896FF" align="center" text_x="2" text_y="1">
<on event="a"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/sort_header_type" type="text" width="90" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_column_headers" string_index="3" font="ui\small_ui" color="#FF2896FF" align="center" text_x="2" text_y="1">
<on event="a" run="gamespy select header"/>
<on event="start" run="gamespy select header"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/ticker_player_info" type="text" controller="1" width="520" height="18" font="ui\small_ui" color="#FFE5E500" text_flags="no_focus_test" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/ticker_player_info_label" type="text" controller="1" width="80" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_ticker_labels" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/ticker_rules_info" type="text" controller="1" width="520" height="18" font="ui\small_ui" color="#FFE5E500" text_flags="no_focus_test" text_y="1">
</widget>
<widget name="main_menu/multiplayer_type_select/join_game/ticker_rules_info_label" type="text" controller="1" width="80" height="18" string_list="main_menu/multiplayer_type_select/join_game/join_game_ticker_labels" string_index="1" font="ui\small_ui" color="#FF2896FF">
</widget>
</menus>
@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_screen" width="640" height="480" flags="pass_unhandled_to_focused_child main_menu_if_no_history" bitmap="bitmaps/gradient">
<on event="created" run="port lobby open"/>
<on event="created" run="net server accept conx"/>
<on event="created" run="net server allow start"/>
<on event="b" run="port lobby leave" back="true"/>
<on event="back" run="port lobby leave" back="true"/>
<on event="start" run="port lobby join" open="main_menu/multiplayer_type_select/lobby/player_profile_screen" branch="true"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_list"/>
<child widget="main_menu/multiplayer_type_select/lobby/header_lobby"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_join_help"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/header_lobby" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/lobby/header_lobby">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_join_help" type="text" controller="1" left="355" top="446" width="275" height="24" font="ui\small_ui" color="#FF2896FF" align="right" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/lobby/lobby_desc">
<data input="net splitscreen prejoin players"/>
<data input="port lobby update"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_0" x="20" y="73"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_1" x="20" y="103"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_2" x="20" y="133"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_3" x="20" y="163"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_4" x="20" y="193"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_5" x="20" y="223"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_6" x="20" y="253"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_7" x="20" y="283"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_8" x="20" y="313"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_9" x="20" y="343"/>
<child widget="main_menu/multiplayer_type_select/lobby/list_item_10" x="20" y="373"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_0" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd_top" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_2" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_3" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_4" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_5" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_6" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_7" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_8" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_9" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/list_item_10" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="left right" run="swap player team"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/multiplayer_type_select/lobby/lobby_map_pic"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_map_name"/>
<child widget="main_menu/solo_level_select/replay_level_right_pic"/>
<child widget="main_menu/solo_level_select/replay_level_right_name"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_game_data"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_map_pic" controller="1" left="419" top="87" width="140" height="114" bitmap="ui\shell\bitmaps\mp_map_grafix">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_map_name" type="text" controller="1" left="417" top="204" width="146" height="43" string_list="main_menu/mp_map_list" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_game_data" type="text" controller="1" left="417" top="250" width="146" height="144" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/multiplayer_type_select/lobby/lobby_button_team" x="120" y="1"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_button_start" x="250" y="1"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_button_add" x="380" y="1"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_button_leave" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_button_add" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="ADD PLAYER" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port lobby add player"/>
<on event="start" run="port lobby add player"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_button_team" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="SWITCH TEAM" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="swap player team"/>
<on event="start" run="swap player team"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_button_start" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="START NOW" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="net game speed start"/>
<on event="start" run="net game speed start"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/lobby_button_leave" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="LEAVE" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/player_profile_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="net server defer start"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/multiplayer_type_select/lobby/player_profile_list"/>
<child widget="main_menu/multiplayer_type_select/lobby/header_add_player"/>
<child widget="main_menu/multiplayer_type_select/lobby/player_profile_help" x="20" y="416"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/header_add_player" controller="1" left="35" top="11" width="363" height="59" bitmap="main_menu/multiplayer_type_select/lobby/header_add_player">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/player_profile_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/profile_manager/player_profile_extended_desc">
<data input="3wide player profile list update"/>
<on event="created" run="port lobby player list initialize"/>
<on event="deleted" run="player profile list dispose"/>
<on event="custom_activation" run="port lobby player choose" back="true" branch="true"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_0" x="20" y="73"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_1" x="20" y="103"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_2" x="20" y="133"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_3" x="20" y="163"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_4" x="20" y="193"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_5" x="20" y="223"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_6" x="20" y="253"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_7" x="20" y="283"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_8" x="20" y="313"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_9" x="20" y="343"/>
<child widget="main_menu/multiplayer_type_select/coop/list_item_10" x="20" y="373"/>
<child widget="main_menu/multiplayer_type_select/coop/player_2_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/player_profile_help" type="text" width="350" height="24" text="The new player's profile." font="ui\small_ui" color="#FF2896FF" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="port lobby open"/>
<on event="b" run="port lobby preview leave" back="true"/>
<on event="back" run="port lobby preview leave" back="true"/>
<on event="start" run="port lobby preview add" open="main_menu/multiplayer_type_select/lobby/player_profile_screen" branch="true"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/multiplayer_type_select/lobby/preview_list"/>
<child widget="main_menu/multiplayer_type_select/lobby/header_lobby"/>
<child widget="main_menu/multiplayer_type_select/lobby/lobby_join_help"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/lobby/lobby_desc">
<data input="port lobby preview update"/>
<child widget="main_menu/multiplayer_type_select/lobby/preview_status" x="30" y="75"/>
<child widget="main_menu/multiplayer_type_select/lobby/preview_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_status" type="text" controller="1" width="360" height="300" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/multiplayer_type_select/lobby/preview_button_join" x="250" y="1"/>
<child widget="main_menu/multiplayer_type_select/lobby/preview_button_add" x="380" y="1"/>
<child widget="main_menu/multiplayer_type_select/lobby/preview_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_button_join" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="JOIN GAME" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port lobby preview join"/>
<on event="start" run="port lobby preview join"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_button_add" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="ADD PLAYER" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port lobby add player"/>
<on event="start" run="port lobby add player"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/lobby/preview_button_back" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="BACK" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
</menus>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select\mp_map_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/mp_map_select/header_select_map" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/multiplayer_type_select/mp_map_select/header_select_map">
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_data" type="text" controller="1" left="417" top="258" width="146" height="136" string_list="main_menu/multiplayer_type_select/mp_map_select/map_data" string_index="2" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_name"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_pic"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_data"/>
<child widget="main_menu/solo_level_select/replay_level_right_name"/>
<child widget="main_menu/solo_level_select/replay_level_right_pic"/>
<child widget="main_menu/solo_level_select/replay_level_right_data"/>
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_name" type="text" controller="1" left="417" top="204" width="146" height="43" string_list="main_menu/mp_map_list" string_index="2" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_pic" controller="1" left="419" top="87" width="140" height="114" bitmap="ui\shell\bitmaps\mp_map_grafix">
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_list_2" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/mp_map_select/mp_map_extended_desc">
<data input="mp map list update"/>
<on event="created" run="mp level list initialize"/>
<on event="deleted" run="mp level list dispose"/>
<on event="custom_activation" run="mp level select" open="main_menu/multiplayer_type_select/connected/gametype_select_screen_wrapper"/>
<on event="b" run="port map list back"/>
<on event="back" run="port map list back"/>
<child widget="main_menu/new_select/list_item_0_map_kind" x="82" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="created" run="net server defer start"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_select_list_2"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/header_select_map"/>
</widget>
</menus>
@@ -0,0 +1,238 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/server_settings/server_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" run="gamespy back handler"/>
<on event="back" run="gamespy back handler"/>
<child widget="main_menu/multiplayer_type_select/server_settings/header_server_settings"/>
<child widget="main_menu/multiplayer_type_select/server_settings/options_menu"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/header_server_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/multiplayer_type_select/server_settings/header_server_settings">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/help" type="text" controller="1" left="68" top="358" width="482" height="60" string_list="main_menu/multiplayer_type_select/server_settings/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/multiplayer_type_select/server_settings/help">
<data input="server settings update"/>
<on event="created" run="server settings init"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_server_name" x="54" y="73"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_max_players" x="54" y="101"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_invite" x="54" y="129"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_listing" x="54" y="157"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_friendly_fire" x="54" y="185"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_extra_enemies" x="54" y="213"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_enemies_per_player" x="54" y="241"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_enemies_multiplier" x="54" y="241"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_game_type" x="54" y="185"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_player_options" x="54" y="213"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_item_options" x="54" y="241"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_vehicle_options" x="54" y="269"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_indicator_options" x="54" y="297"/>
<child widget="main_menu/multiplayer_type_select/server_settings/op_team_options" x="54" y="325"/>
<child widget="main_menu/multiplayer_type_select/server_settings/button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/multiplayer_type_select/server_settings/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_server_name" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="ss edit server name"/>
<on event="start" run="ss edit server name"/>
<on event="b"/>
<on event="back"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/server_name_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/server_name_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/server_name_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/server_name_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_max_players" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/max_players_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/max_players_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/max_players_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/max_players_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="2|4|8|12|16|24|32|48|64|96|128" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_invite" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="ss copy invite"/>
<on event="start" run="ss copy invite"/>
<on event="b"/>
<on event="back"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/invite_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/invite_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/invite_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/invite_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_listing" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/listing_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/listing_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/listing_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="9" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/listing_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="PUBLIC|PRIVATE" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_friendly_fire" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/friendly_fire_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/friendly_fire_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/friendly_fire_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="10" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/friendly_fire_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="OFF|ON|SHIELD ONLY|EXPLOSIVES ONLY" setting="network.coop_friendly_fire" values="off|on|shields_only|explosives_only" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="created" run="port setting load"/>
<on event="deleted" run="port setting save"/>
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_extra_enemies" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/extra_enemies_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/extra_enemies_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/extra_enemies_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="11" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/extra_enemies_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="NONE|PER PLAYER|STATIC MULTIPLIER" setting="network.coop_enemies_mode" values="none|per_player|multiplier" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="created" run="port setting load"/>
<on event="deleted" run="port setting save"/>
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_enemies_per_player" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/enemies_per_player_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/enemies_per_player_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/enemies_per_player_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="12" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/enemies_per_player_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="25%|50%|100%|150%|200%" setting="network.coop_enemies" values="25|50|100|150|200" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="created" run="port setting load"/>
<on event="deleted" run="port setting save"/>
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_enemies_multiplier" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/multiplayer_type_select/server_settings/enemies_multiplier_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/enemies_multiplier_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/enemies_multiplier_label" type="text" controller="1" width="300" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="13" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/enemies_multiplier_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="2X|4X|8X|16X|32X" setting="network.coop_enemies_multiplier" values="2|4|8|16|32" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="created" run="port setting load"/>
<on event="deleted" run="port setting save"/>
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_game_type" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/game_type_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/game_type_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/game_type_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/game_type_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_player_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/player_options_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/player_options_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/player_options_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/player_options_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_item_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/item_options_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/item_options_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/item_options_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/item_options_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_vehicle_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/vehicle_options_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/vehicle_options_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/vehicle_options_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/vehicle_options_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_indicator_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/indicator_options_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/indicator_options_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/indicator_options_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/indicator_options_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/op_team_options" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_screen"/>
<on event="start" run="port setup edit" open="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/multiplayer_type_select/server_settings/team_options_label"/>
<child widget="main_menu/multiplayer_type_select/server_settings/team_options_value" x="230" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/team_options_label" type="text" controller="1" width="230" height="22" string_list="main_menu/multiplayer_type_select/server_settings/labels" string_index="8" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/team_options_value" type="text" controller="1" width="280" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/server_settings/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" text="START GAME" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="ss start game" open="main_menu/multiplayer_type_select/lobby/lobby_screen"/>
<on event="start" run="ss start game" open="main_menu/multiplayer_type_select/lobby/lobby_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/multiplayer_type_select/server_settings/labels">
<string text="GAME NAME:"/>
<string text="MAXIMUM PLAYERS:"/>
<string text="INVITE LINK:"/>
<string text="GAME TYPE:"/>
<string text="PLAYER OPTIONS:"/>
<string text="ITEM OPTIONS:"/>
<string text="VEHICLE OPTIONS:"/>
<string text="INDICATOR OPTIONS:"/>
<string text="TEAMPLAY OPTIONS:"/>
<string text="LISTING:"/>
<string text="FRIENDLY FIRE:"/>
<string text="EXTRA ENEMIES:"/>
<string text="PER PLAYER:"/>
<string text="MULTIPLIER:"/>
</strings>
<strings name="main_menu/multiplayer_type_select/server_settings/help_strings">
<string text=""/>
<string text="The name the game shows in the lists of games.\nEnter changes it."/>
<string text="The most players the game takes (up to 128)."/>
<string text="Players join this game by its invite link, or your\nDiscord invite. Enter copies the link again."/>
<string text="The gametype and its rules, for this game."/>
<string text="Lives, health, shields and respawning, for this game."/>
<string text="Weapons, grenades and starting equipment, for\nthis game."/>
<string text="Each team's vehicles and their respawn time, for\nthis game."/>
<string text="The motion tracker and nav points, for this game."/>
<string text="Friendly fire and team balance, for this game."/>
<string text="Anyone can see and join your game: it is listed\nin everyone's Server Browser."/>
<string text="Only players with your invite link can join."/>
<string text="Players can not be hurt by weapons and explosives\nfired by the other players."/>
<string text="Players can be hurt by weapons or explosives\nfired by the other players."/>
<string text="Damage from the other players will only reduce\nshields. Health will be unaffected."/>
<string text="Players can be hurt by damage from explosives\nfired by the other players."/>
<string text="Enemy squads are as the campaign has them."/>
<string text="Enemy squads grow with the players: by the amount\nbelow for each player past the first."/>
<string text="Enemy squads are the amount below times as large,\nhowever many players there are."/>
<string text="For each player past the first, enemy squads get\nthis much more of themselves (100%: as many again)."/>
<string text="Each enemy squad is this many times as large."/>
</strings>
</menus>
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\multiplayer_type_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/multiplayer_type_select/header_multiplayer" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/multiplayer_type_select/header_multiplayer">
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_options_pic" controller="1" left="288" top="82" width="307" height="244" bitmap="main_menu/multiplayer_type_select/mp_options">
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_options_txt" type="text" controller="1" left="290" top="285" width="290" height="105" string_list="main_menu/multiplayer_type_select/multiplayer_option_descriptions" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_create_internet_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="join controller to mp game"/>
<on event="a" run="mp type set mode" open="main_menu/multiplayer_type_select/connected/connected_map_select_wrapper"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_create_item" type="text" left="51" width="232" height="32" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_create_lan_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="join controller to mp game"/>
<on event="a" run="mp type set mode" open="main_menu/multiplayer_type_select/connected/connected_map_select_wrapper"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_gametypes_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/playlist_select/gametype_select_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/playlist_select/gametype_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_join_direct_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="start" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_join_internet_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5" string_index="6">
<on event="a" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="start" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_join_item" type="text" left="51" width="232" height="32" string_list="main_menu/multiplayer_type_select/multiplayer_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_join_lan_item" type="text" left="51" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/multiplayer_type_select/multiplayer_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="start" run="mp type set mode" open="main_menu/multiplayer_type_select/join_game/join_game_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_list_ext_desc" controller="1" left="275" top="78" width="320" height="322" bitmap="bitmaps/list_field" color="#FF0080FF">
<child widget="main_menu/multiplayer_type_select/multiplayer_options_pic"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_options_txt" y="37"/>
<child widget="main_menu/current_profile_name"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items" description="main_menu/multiplayer_type_select/multiplayer_type_list_ext_desc">
<data input="multiplayer type menu update desc"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_join_item" x="-32" y="78"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_join_internet_item" y="111"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_join_lan_item" y="144"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_join_direct_item" y="177"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_create_item" x="-32" y="210"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_create_internet_item" y="243"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_create_lan_item" y="276"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_coop_item" y="309"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_gametypes_item" y="375"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_button_bar" y="414"/>
</widget>
<widget name="main_menu/multiplayer_type_select/multiplayer_type_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="mp type menu initialize"/>
<child widget="main_menu/multiplayer_type_select/header_multiplayer"/>
<child widget="main_menu/multiplayer_type_select/multiplayer_type_select_list"/>
<child widget="main_menu/blueline" x="64" y="358"/>
</widget>
</menus>
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/new_select/list_item_0_map_kind" width="256" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds_sm" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<child widget="main_menu/new_select/list_item_0_map_kind_spinner" x="15" y="2"/>
</widget>
<widget name="main_menu/new_select/list_item_0_map_kind_spinner" type="spinner" width="226" height="22" flags="left_right_tabs_items" string_list="main_menu/new_select/var_map_kinds" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 226 19 232">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<strings name="main_menu/new_select/var_map_kinds">
<string text="SINGLEPLAYER"/>
<string text="MULTIPLAYER"/>
</strings>
</menus>
@@ -0,0 +1,129 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\new_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/new_select/list_item_0" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd_top" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_1" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_10" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_2" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_3" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_4" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_5" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_6" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_7" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_8" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_9" controller="1" width="390" height="28" bitmap="bitmaps/sel_list_item_bkd" font="ui\large_ui" color="#FF2896FF" align="center" text_y="3">
<on event="a" run="single prev cl item activated"/>
<on event="start" run="single prev cl item activated"/>
<on event="left_mouse" run="mouse emit accept event"/>
<child widget="main_menu/new_select/list_item_text" x="25"/>
<child widget="main_menu/new_select/list_item_arrows"/>
<child widget="main_menu/new_select/scroll_up_button" x="40"/>
<child widget="main_menu/new_select/scroll_down_button" x="40"/>
</widget>
<widget name="main_menu/new_select/list_item_arrows" controller="1" width="385" height="28" color="#FF2896FF" align="center">
<child widget="main_menu/new_select/sel_arrow_right" x="8" y="4"/>
<child widget="main_menu/new_select/sel_arrow_right" x="14" y="4"/>
<child widget="main_menu/new_select/sel_arrow_right" x="20" y="4"/>
<child widget="main_menu/new_select/sel_arrow_left" x="355" y="4"/>
<child widget="main_menu/new_select/sel_arrow_left" x="361" y="4"/>
<child widget="main_menu/new_select/sel_arrow_left" x="367" y="4"/>
</widget>
<widget name="main_menu/new_select/list_item_text" type="text" controller="1" width="330" height="28" font="ui\large_ui" color="#FF2896FF" align="center" text_flags="no_focus_test" text_y="3">
</widget>
<widget name="main_menu/new_select/scroll_down_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_down">
</widget>
<widget name="main_menu/new_select/scroll_down_button" controller="1" width="300" height="28" bitmap="bitmaps/option_bkds_sm">
<child widget="main_menu/new_select/scroll_down_arrow" x="134" y="8"/>
</widget>
<widget name="main_menu/new_select/scroll_up_arrow" width="64" height="32" bitmap="bitmaps/arrow_sm_up">
</widget>
<widget name="main_menu/new_select/scroll_up_button" controller="1" width="300" height="28" bitmap="bitmaps/option_bkds_sm">
<child widget="main_menu/new_select/scroll_up_arrow" x="134" y="8"/>
</widget>
<widget name="main_menu/new_select/sel_arrow_left" width="6" height="28" bitmap="bitmaps/arrow_sm_left">
</widget>
<widget name="main_menu/new_select/sel_arrow_right" width="6" height="28" bitmap="bitmaps/arrow_sm_right">
</widget>
<widget name="main_menu/new_select/sel_list_desc_bkd" controller="1" left="400" top="73" width="240" height="405" bitmap="bitmaps/sel_list_desc_bkd">
</widget>
</menus>
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\player_profiles_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/player_profiles_select/current_level" type="text" controller="1" width="150" height="50" string_list="main_menu/map_list" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/player_profiles_select/current_level_label" type="text" controller="1" width="150" height="25" string_list="main_menu/player_profiles_select/profile_description_labels" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/player_profiles_select/empty_profile_slot_text" type="text" controller="1" width="150" height="200" string_list="main_menu/player_profiles_select/profile_description_labels" string_index="4" font="ui\small_ui" color="#FF2896FF" align="center">
</widget>
<widget name="main_menu/player_profiles_select/header_select_profile" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/player_profiles_select/header_select_profile">
</widget>
<widget name="main_menu/player_profiles_select/joystick_controls" type="text" controller="1" width="150" height="25" string_list="main_menu/player_profiles_select/joystick_set_defaults_descriptions" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/player_profiles_select/joystick_controls_label" type="text" controller="1" width="150" height="25" string_list="main_menu/player_profiles_select/profile_description_labels" string_index="2" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/player_profiles_select/player_profile_right_data" controller="1" width="150" height="155">
<child widget="main_menu/player_profiles_select/empty_profile_slot_text"/>
<child widget="main_menu/player_profiles_select/current_level_label" y="89"/>
<child widget="main_menu/player_profiles_select/current_level" x="6" y="111"/>
<child widget="main_menu/player_profiles_select/skill_level_label" y="44"/>
<child widget="main_menu/player_profiles_select/skill_level" x="6" y="65"/>
<child widget="main_menu/player_profiles_select/joystick_controls_label"/>
<child widget="main_menu/player_profiles_select/joystick_controls" x="6" y="21"/>
</widget>
<widget name="main_menu/player_profiles_select/player_profile_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/player_profiles_select/player_profile_right_name" x="415" y="83"/>
<child widget="main_menu/multiplayer_type_select/connected/4way_profile_select/qtr_screen_profile_color_pic" x="438" y="82"/>
<child widget="main_menu/player_profiles_select/player_profile_right_data" x="416" y="242"/>
</widget>
<widget name="main_menu/player_profiles_select/player_profile_right_name" type="text" controller="1" width="147" height="22" font="ui\large_ui" color="#FF2896FF" align="center">
</widget>
<widget name="main_menu/player_profiles_select/skill_level" type="text" controller="1" width="150" height="25" string_list="main_menu/player_profiles_select/difficulty_names" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/player_profiles_select/skill_level_label" type="text" controller="1" width="150" height="25" string_list="main_menu/player_profiles_select/profile_description_labels" string_index="1" font="ui\large_ui" color="#FF2896FF">
</widget>
</menus>
@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\profile_manager (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/profile_manager/multiplayer_creating_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1">
<on event="deleted" run="new campaign decision" open="main_menu/profile_manager/multiplayer_saving_profile"/>
</widget>
<widget name="main_menu/profile_manager/multiplayer_saving_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="3000" auto_close_fade="1000">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<on event="deleted" run="NULL" open="main_menu/multiplayer_type_select/multiplayer_type_select_screen"/>
<child widget="error/warning_creating_player_profile_screen"/>
</widget>
<widget name="main_menu/profile_manager/player_profile_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/player_profiles_select/player_profile_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/profile_manager/player_profile_manager" width="640" height="480" flags="pass_unhandled_to_focused_child">
<child widget="main_menu/profile_manager/player_profile_manager_screen"/>
</widget>
<widget name="main_menu/profile_manager/player_profile_manager_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="x" run="request del player profile" open="error/confirm_delete_profile_modal_fullscreen"/>
<on event="y" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/profile_manager/profile_manager_select_list_2"/>
<child widget="main_menu/player_profiles_select/header_select_profile"/>
</widget>
<widget name="main_menu/profile_manager/pm_empty_creating_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1">
<on event="deleted" run="new campaign decision" open="main_menu/profile_manager/pm_empty_saving_profile"/>
</widget>
<widget name="main_menu/profile_manager/pm_empty_saving_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1000" auto_close_fade="500">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<on event="deleted" run="NULL"/>
<child widget="error/warning_creating_player_profile_screen"/>
</widget>
<widget name="main_menu/profile_manager/pm_empty_selected" width="640" height="480" flags="pass_unhandled_to_focused_child no_history">
<on event="a" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
<on event="start" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
<child widget="error/confirm_empty_profile"/>
<child widget="main_menu/profile_manager/pm_empty_selected_button_bar" x="194" y="309"/>
</widget>
<widget name="main_menu/profile_manager/pm_empty_selected_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="main_menu/profile_manager/pm_empty_selected_button_ok"/>
<child widget="common_button_cancel" x="128"/>
</widget>
<widget name="main_menu/profile_manager/pm_empty_selected_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/profile_manager/pm_entry_creating_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1">
<on event="deleted" run="new campaign decision" open="main_menu/profile_manager/pm_entry_saving_profile"/>
</widget>
<widget name="main_menu/profile_manager/pm_entry_saving_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1000" auto_close_fade="500">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<on event="deleted" run="NULL" open="main_menu/profile_manager/player_profile_manager_screen"/>
<child widget="error/warning_creating_player_profile_screen"/>
</widget>
<widget name="main_menu/profile_manager/profile_manager_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/profile_manager/profile_manager_button_new" y="1"/>
<child widget="main_menu/profile_manager/profile_manager_button_delete" x="130" y="1"/>
<child widget="main_menu/profile_manager/profile_manager_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/profile_manager/profile_manager_button_delete" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="5" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit x event"/>
<on event="start" run="mouse emit x event"/>
<on event="left_mouse" run="mouse emit x event"/>
</widget>
<widget name="main_menu/profile_manager/profile_manager_button_new" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="4" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
<on event="start" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
<on event="left_mouse" run="new campaign chosen" open="main_menu/profile_manager/pm_empty_creating_profile"/>
</widget>
<widget name="main_menu/profile_manager/profile_manager_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/profile_manager/profile_manager_select_list_2" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/profile_manager/player_profile_extended_desc">
<data input="3wide player profile list update"/>
<on event="created" run="player profile list initialize"/>
<on event="deleted" run="player profile list dispose"/>
<on event="custom_activation" run="profile manager select" back="true" branch="true"/>
<conditional widget="main_menu/profile_manager/pm_empty_selected" if_failed="true"/>
<child widget="main_menu/new_select/list_item_0" x="20" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/profile_manager/profile_manager_button_bar" y="414"/>
</widget>
<widget name="main_menu/profile_manager/settings_creating_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1">
<on event="deleted" run="new campaign decision" open="main_menu/profile_manager/settings_saving_profile"/>
</widget>
<widget name="main_menu/profile_manager/settings_saving_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1000" auto_close_fade="500">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<on event="deleted" run="NULL" open="main_menu/settings_select/player_setup/player_profile_edit/player_profile_edit_screen"/>
<child widget="error/warning_creating_player_profile_screen"/>
</widget>
</menus>
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\quit_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/quit_select/quit_button_bar" type="column_list" width="256" height="20" flags="pass_unhandled_to_focused_child up_down_tabs_items left_right_tabs_items">
<child widget="common_button_back" x="128"/>
<child widget="main_menu/quit_select/quit_button_ok"/>
</widget>
<widget name="main_menu/quit_select/quit_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="main menu quit game"/>
<on event="start" run="main menu quit game"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/quit_select/quit_screen" type="text" controller="1" left="180" top="160" width="280" height="160" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/alert_bkd" string_list="main_menu/quit_select/header_quit_game_prompt" font="ui\large_ui" color="#FF2896FF" align="center" text_x="-10" text_y="35">
<child widget="main_menu/quit_select/quit_button_bar" x="182" y="293"/>
<child widget="error/header_are_you_sure" x="182" y="164"/>
</widget>
</menus>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\indicator_options_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/header_indicator_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/indicator_options_edit/header_indicator_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set indicator opts" back="true"/>
<on event="start" run="mp profile set indicator opts" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_friends_on_screen_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_friends_on_screen_spinner" type="spinner" left="2" top="2" width="46" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/var_friends_on_screen" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 48 19 54">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/cap_indicator_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init indicator opts"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_radar display" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_players_on_radar" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_friends_on_screen" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_players_on_radar_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_players_on_radar_spinner" type="spinner" left="2" top="2" width="106" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/var_others_on_radar" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 108 19 114">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_radar display_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_radar display_spinner" type="spinner" left="3" top="2" width="183" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/var_radar display" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 186 19 192">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/header_indicator_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_friends_on_screen" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_friends_on_screen_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_friends_on_screen_spinner" x="366" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_players_on_radar" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_players_on_radar_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_players_on_radar_spinner" x="336" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/indicator_options_edit/op_radar display" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_radar display_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_radar display_spinner" x="297" y="1"/>
</widget>
</menus>
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's multiplayer screens, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_map_weapons" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/map_weapons_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/map_weapons_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/map_weapons_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="8" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/map_weapons_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_map_weapons" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_loadout" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/loadout_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/loadout_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/loadout_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/loadout_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_loadout" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_primary_weapon" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/primary_weapon_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/primary_weapon_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/primary_weapon_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/primary_weapon_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_loadout_weapon" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_secondary_weapon" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/secondary_weapon_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/secondary_weapon_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/secondary_weapon_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/secondary_weapon_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_loadout_weapon" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<strings name="main_menu/settings_select/multiplayer_setup/item_options_edit/var_map_weapons">
<string text="YES"/>
<string text="NO"/>
</strings>
<strings name="main_menu/settings_select/multiplayer_setup/item_options_edit/var_loadout">
<string text="CATEGORY"/>
<string text="CUSTOM"/>
</strings>
<strings name="main_menu/settings_select/multiplayer_setup/item_options_edit/var_loadout_weapon">
<string text="NONE"/>
<string text="RANDOM"/>
<string text="ASSAULT RIFLE"/>
<string text="PISTOL"/>
<string text="SHOTGUN"/>
<string text="SNIPER RIFLE"/>
<string text="ROCKET LAUNCHER"/>
<string text="PLASMA PISTOL"/>
<string text="PLASMA RIFLE"/>
<string text="NEEDLER"/>
</strings>
</menus>
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\item_options_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/header_item_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/item_options_edit/header_item_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set item options" back="true"/>
<on event="start" run="mp profile set item options" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/cap_item_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_infinite_grenades_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_infinite_grenades_spinner" type="spinner" left="2" top="2" width="104" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_infinite_grenades" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 108 19 114">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init item options"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_infinite_grenades" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_weapon_set" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_starting_equipment" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_map_weapons" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_loadout" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_primary_weapon" x="54" y="223"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/op_secondary_weapon" x="54" y="253"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/header_item_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_starting_equipment_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_starting_equipment_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_starting_equipment" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_weapon_set_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_weapon_set_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/item_options_edit/var_weapon_set" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_infinite_grenades" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_infinite_grenades_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_infinite_grenades_spinner" x="337" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_starting_equipment" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_starting_equipment_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_starting_equipment_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/item_options_edit/op_weapon_set" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_weapon_set_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_weapon_set_spinner" x="286" y="1"/>
</widget>
</menus>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\name_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/name_edit/gametype_name_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" auto_close="1" bitmap="bitmaps/gradient">
<on event="created" run="NULL"/>
<child widget="main_menu/settings_select/multiplayer_setup/name_edit/header_gametype_name"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/name_edit/header_gametype_name" controller="1" left="35" top="11" width="346" height="59" bitmap="main_menu/settings_select/multiplayer_setup/name_edit/header_gametype_name">
</widget>
</menus>
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\player_options_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/header_player_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/player_options_edit/header_player_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/invisible_players_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/invisible_players_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_invisible_players" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/maximum_health_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/maximum_health_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_maximum_health" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/number_of_lives_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/number_of_lives_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_number_of_lives" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/odd_man_out_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/odd_man_out_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_odd_man_out" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_invisible_players" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/invisible_players_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/invisible_players_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_maximum_health" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/maximum_health_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/maximum_health_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_number_of_lives" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/number_of_lives_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/number_of_lives_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_odd_man_out" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/odd_man_out_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/odd_man_out_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_respawn_time" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_respawn_time_growth" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_growth_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_growth_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_shields" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/shields_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/shields_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/op_suicide_penalty" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/suicide_penalty_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/suicide_penalty_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/player_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/player_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/player_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set player options" back="true"/>
<on event="start" run="mp profile set player options" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/cap_player_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init player opts"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_number_of_lives" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_maximum_health" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_shields" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_respawn_time" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_respawn_time_growth" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_odd_man_out" x="54" y="223"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_invisible_players" x="54" y="253"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/op_suicide_penalty" x="54" y="283"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/player_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/header_player_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_growth_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_growth_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_respawn_time_growh" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/respawn_time_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_respawn_time" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/shields_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/shields_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_shields" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/suicide_penalty_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/player_options_edit/suicide_penalty_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/player_options_edit/var_suicide_penalty" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\ctf_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/assault_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/assault_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_assault" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/captures_to_win_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/captures_to_win_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_captures_to_win" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set ctf rules" back="true"/>
<on event="start" run="mp profile set ctf rules" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_help" type="text" controller="1" left="68" top="311" width="482" height="99" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/cap_ctf" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init ctf rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_assault" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_single_flag" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_flag_must_reset" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_flag_at_home" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_captures_to_win" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_time_limit" x="54" y="223"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="NULL"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_at_home_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_at_home_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_flag_at_home" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_must_reset_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_must_reset_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_flag_must_reset" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_assault" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/assault_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/assault_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_captures_to_win" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/captures_to_win_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/captures_to_win_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_flag_at_home" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_at_home_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_at_home_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_flag_must_reset" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_must_reset_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/flag_must_reset_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_single_flag" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/single_flag_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/single_flag_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_time_limit" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/time_limit_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/time_limit_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/single_flag_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/single_flag_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_single_flag" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/time_limit_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/time_limit_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_time_limit" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\game_type_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_ctf_item" type="text" left="51" top="78" width="232" height="32" bitmap="bitmaps/list_item_bkd_top" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_screen"/>
<on event="start" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_koth_item" type="text" left="51" top="111" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_options_screen"/>
<on event="start" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items" description="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_ext_desc">
<data input="gametype select menu update desc"/>
<on event="created" run="mp profile init game engine"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_ctf_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_koth_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_slayer_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_oddball_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_race_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_ext_desc" controller="1" left="275" top="78" width="320" height="322" bitmap="bitmaps/list_field">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_list_ext_desc_text" y="-22"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_list_ext_desc_pic" x="20"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_oddball_item" type="text" left="51" top="177" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_screen"/>
<on event="start" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_race_item" type="text" left="51" top="210" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_options" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_screen"/>
<on event="start" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="mp type menu initialize"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/header_set_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_label" x="296" y="362"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_slayer_item" type="text" left="51" top="144" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_options" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_screen"/>
<on event="start" run="mp profile set game engine" open="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/playlist_edit/header_set_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_label" type="text" controller="1" width="275" height="22" string_list="multiplayer_game_text" font="ui\large_ui" color="#FFFFFFFF">
<data input="mp edit profile set rule text"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_list_ext_desc_pic" controller="1" left="285" top="95" width="256" height="250" bitmap="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/rules_list_ext_desc_text" type="text" controller="1" left="295" top="298" width="300" height="102" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_list_extended_dsc_text" font="ui\large_ui" color="#FF2896FF">
</widget>
</menus>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\koth_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set koth rules" back="true"/>
<on event="start" run="mp profile set koth rules" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/cap_koth" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_moving_hill_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_moving_hill_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/var_moving_hill" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init koth rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_moving_hill" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_score_to_win" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_team_play" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_time_limit" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="NULL"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_score_to_win_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_score_to_win_spinner" type="spinner" left="4" top="2" width="146" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/var_score_to_win" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_team_play_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/var_team_play" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_teams_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_moving_hill" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_moving_hill_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_moving_hill_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_score_to_win" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_score_to_win_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_score_to_win_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/op_team_play" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_teams_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/koth_edit/koth_team_play_spinner" x="320" y="1"/>
</widget>
</menus>
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\oddball_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_spawn_count_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_spawn_count_spinner" type="spinner" left="3" top="2" width="201" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_ball_spawn_count" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_type_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_type_spinner" type="spinner" left="2" top="2" width="202" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_ball_type" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set oddball rules" back="true"/>
<on event="start" run="mp profile set oddball rules" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_help" type="text" controller="1" left="68" top="341" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/cap_oddball" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init oddball rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_trait_with_ball" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_trait_without_ball" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_speed_with_ball" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_ball_type" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_random_start" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_ball_spawn_count" x="54" y="223"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_score_to_win" x="54" y="253"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_team_play" x="54" y="283"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_time_limit" x="54" y="313"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_ball_spawn_count" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_spawn_count_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_spawn_count_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_ball_type" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_type_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/ball_type_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_random_start" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/random_start_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/random_start_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_score_to_win" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/score_to_win_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/score_to_win_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_speed_with_ball" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/speed_with_ball_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/speed_with_ball_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_team_play" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/team_play_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/team_play_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_time_limit" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/time_limit_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/time_limit_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_trait_with_ball" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_with_ball_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_with_ball_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/op_trait_without_ball" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_without_ball_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_without_ball_spinner" x="288" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/random_start_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/random_start_spinner" type="spinner" left="2" top="2" width="202" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_random_start" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/score_to_win_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/score_to_win_spinner" type="spinner" left="2" top="2" width="202" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_score_to_win" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/speed_with_ball_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/speed_with_ball_spinner" type="spinner" left="3" top="2" width="201" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_speed_with_ball" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/team_play_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/team_play_spinner" type="spinner" left="2" top="2" width="202" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_team_play" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/time_limit_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/ctf_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/time_limit_spinner" type="spinner" left="2" top="2" width="202" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/var_time_limit" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_with_ball_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_with_ball_spinner" type="spinner" left="4" top="2" width="200" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_trait_with_ball" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_without_ball_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/oddball_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/trait_without_ball_spinner" type="spinner" left="4" top="2" width="200" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/oddball_edit/var_trait_without_ball" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 204 19 210">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\race_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/laps_to_win_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/laps_to_win_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/var_laps_to_win" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_laps_to_win" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/laps_to_win_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/laps_to_win_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_race_type" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_type_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_type_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_team_play" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_play_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_play_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_team_scoring" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_scoring_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_scoring_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set racing rules" back="true"/>
<on event="start" run="mp profile set racing rules" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/cap_race" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init racing rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_team_scoring" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_race_type" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_laps_to_win" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/op_team_play" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_time_limit" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_type_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_type_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/var_race_type" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_play_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_play_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/var_team_play" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_scoring_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/race_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/team_scoring_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/race_edit/var_team_scoring" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit\slayer_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/death_bonus_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/death_bonus_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/var_death_bonus" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_in_order_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_in_order_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/var_kill_in_order" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_penalty_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_penalty_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/indicator_options_edit/var_objectives_on_screen" font="ui\large_ui" color="#FF2896FF" align="center" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kills_to_win_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kills_to_win_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/var_kills_to_win" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_death_bonus" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/death_bonus_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/death_bonus_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kill_in_order" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_in_order_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_in_order_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kill_penalty" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_penalty_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kill_penalty_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kills_to_win" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kills_to_win_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/kills_to_win_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_team_play" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/team_play_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/team_play_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile set slayer rules" back="true"/>
<on event="start" run="mp profile set slayer rules" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_help" type="text" controller="1" left="68" top="321" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/cap_slayer" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp profile init slayer rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_death_bonus" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kill_penalty" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kill_in_order" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_kills_to_win" x="54" y="163"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/op_team_play" x="54" y="193"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/ctf_edit/op_time_limit" x="54" y="223"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="NULL"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/team_play_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/slayer_labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/team_play_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/slayer_edit/var_team_play" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,81 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/edit_playlist_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_list_extended_desc">
<data input="playlist settings menu update desc"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_name_list_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_game_type_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_player_opts_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_items_list_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_vehicles_list_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_indicators_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_team_item"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_edit_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<on event="created" run="close if not editing profile"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/header_edit_multiplayer_gametype"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/edit_playlist_select_list"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_label" x="294" y="360"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_label" type="text" controller="1" width="235" height="22" font="ui\large_ui" color="#FFFFFFFF">
<data input="get edit game settings name"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/header_edit_multiplayer_gametype" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/playlist_edit/header_edit_multiplayer_gametype">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/header_set_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/header_rules">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp profile save changes" open="error/warning_saving_file_screen"/>
<on event="start" run="mp profile save changes" open="error/warning_saving_file_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_ext_desc_pic" controller="1" left="290" top="80" width="284" height="208" bitmap="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_ext_desc_text" type="text" controller="1" left="294" top="276" width="321" height="124" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_list_extended_dsc_text" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_game_type_item" type="text" left="51" top="111" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/playlist_edit/game_type_select/gametype_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_indicators_item" type="text" left="51" top="243" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/indicator_options_edit/indicator_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_items_list_item" type="text" left="51" top="177" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/item_options_edit/item_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_list_extended_desc" controller="1" left="275" top="78" width="320" height="322" bitmap="bitmaps/list_field" text_x="20" text_y="240">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_ext_desc_text"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_ext_desc_pic"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_name_list_item" type="text" left="51" top="78" width="232" height="32" bitmap="bitmaps/list_item_bkd_top" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="mp profile change name" open="main_menu/settings_select/multiplayer_setup/name_edit/gametype_name_screen"/>
<on event="start" run="mp profile change name" open="main_menu/settings_select/multiplayer_setup/name_edit/gametype_name_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_player_opts_item" type="text" left="51" top="144" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/player_options_edit/player_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_team_item" type="text" left="51" top="276" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_vehicles_list_item" type="text" left="51" top="210" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/multiplayer_setup/playlist_edit/playlist_edit_options" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_screen"/>
<on event="start" open="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
</menus>
@@ -0,0 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\playlist_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/gametype_extended_desc" width="640" height="480">
<child widget="main_menu/gametype_select/gametype_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/gametype_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_select_list"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/header_select_gametype_to_edit"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/header_select_gametype_to_edit" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/playlist_select/header_select_gametype_to_edit">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_new" y="1"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_delete" x="130" y="1"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_delete" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="5" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit x event"/>
<on event="start" run="mouse emit x event"/>
<on event="left_mouse" run="mouse emit x event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_new" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="4" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="create&amp;edit playlist profile" open="main_menu/settings_select/multiplayer_setup/create_and_edit_new_gametype_screen"/>
<on event="start" run="create&amp;edit playlist profile" open="main_menu/settings_select/multiplayer_setup/create_and_edit_new_gametype_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/playlist_select/gametype_extended_desc">
<data input="gt edit list update"/>
<on event="created" run="mp profiles list initialize"/>
<on event="deleted" run="mp profiles list dispose"/>
<on event="custom_activation" run="mp profile begin editing" open="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_edit_screen"/>
<on event="x" run="request del playlist profile" open="error/confirm_delete_gametype_modal_fullscreen"/>
<child widget="main_menu/new_select/list_item_0" x="20" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/settings_select/multiplayer_setup/playlist_select/playlist_button_bar" y="414"/>
</widget>
</menus>
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\teamplay_options_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/autobalance_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/autobalance_spinner" type="spinner" left="2" top="2" width="148" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="strings/var_boolean" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_penalty_label" type="text" controller="1" width="320" height="22" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_penalty_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/var_friendly_fire_penalty" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/var_friendly_fire" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/header_teamplay_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/header_teamplay_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_autobalance" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/autobalance_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/autobalance_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_friendly_fire" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_friendly_fire_penalty" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_penalty_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/friendly_fire_penalty_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp prof save teamplay options" back="true"/>
<on event="start" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_help" type="text" controller="1" left="68" top="341" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/cap_teamplay_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_help">
<data input="game settings lists text update"/>
<on event="created" run="mp prof init teamplay options"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_friendly_fire" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_friendly_fire_penalty" x="54" y="103"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/op_autobalance" x="54" y="133"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/header_teamplay_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/teamplay_options_edit/teamplay_options_menu"/>
</widget>
</menus>
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup\vehicle_options_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/banshee_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/banshee_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/cgturret_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/cgturret_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/ghost_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/ghost_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/header_vehicle_options" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/header_vehicle_options">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_banshee" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/banshee_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/banshee_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_cgturret" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/cgturret_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/cgturret_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_ghost" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/ghost_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/ghost_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_rwarthog" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/rwarthog_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/rwarthog_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_scorpion" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/scorpion_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/scorpion_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_team" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/team_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/team_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_vehicle_presets" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_presets_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_presets_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_vehicles_respawn" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicles_respawn_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicles_respawn_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_warthog" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/warthog_label"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/warthog_spinner" x="286" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/rwarthog_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/rwarthog_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/scorpion_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/scorpion_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/team_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="8" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/team_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_team" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mp prof save vehicle options" back="true"/>
<on event="start" run="mp profile set item options" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_help" type="text" controller="1" left="68" top="341" width="482" height="79" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/cap_vehicle_options" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_help">
<data input="mp prof vehicles update"/>
<on event="created" run="mp prof init vehicle options"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_vehicles_respawn" x="54" y="73"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_team" x="54" y="126"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_vehicle_presets" x="54" y="152"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_warthog" x="54" y="178"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_ghost" x="54" y="204"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_scorpion" x="54" y="229"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_rwarthog" x="54" y="255"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_banshee" x="54" y="281"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/op_cgturret" x="54" y="307"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/header_vehicle_options"/>
<child widget="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_menu"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_presets_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_presets_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_set" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicles_respawn_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicles_respawn_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicles_respawn" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/warthog_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/vehicle_options_labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/warthog_spinner" type="spinner" top="2" width="206" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" string_list="main_menu/settings_select/multiplayer_setup/vehicle_options_edit/var_vehicle_options" font="ui\large_ui" color="#FF2896FF" align="center" text_y="4" list_flags="items_from_strings" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -13 19 -7" footer_bounds="7 208 19 214">
<on event="left_mouse" run="mouse spinner 1wide click"/>
</widget>
</menus>
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\multiplayer_setup (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/multiplayer_setup/create_and_edit_new_gametype_screen" width="640" height="480" flags="pass_unhandled_to_focused_child">
<child widget="main_menu/settings_select/multiplayer_setup/playlist_edit/gametype_edit_screen"/>
</widget>
</menus>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/audio_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/header_profile_audio_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/header_profile_audio_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/header_profile_audio_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/help">
<data input="port settings help"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_volume" x="54" y="73"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_music_volume" x="54" y="103"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_effects_volume" x="54" y="133"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_enabled" x="54" y="163"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_volume" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/volume_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/volume_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/volume_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/labels" string_index="0" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/volume_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="0|1|2|3|4|5|6|7|8|9|10" setting="audio.volume" values="0|0.1|0.2|0.3|0.4|0.5|0.6|0.7|0.8|0.9|1" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_music_volume" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/music_volume_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/music_volume_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/music_volume_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/music_volume_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="0|1|2|3|4|5|6|7|8|9|10" setting="audio.music_volume" values="0|0.1|0.2|0.3|0.4|0.5|0.6|0.7|0.8|0.9|1" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_effects_volume" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/effects_volume_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/effects_volume_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/effects_volume_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/effects_volume_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="0|1|2|3|4|5|6|7|8|9|10" setting="audio.effects_volume" values="0|0.1|0.2|0.3|0.4|0.5|0.6|0.7|0.8|0.9|1" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/op_enabled" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/enabled_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/enabled_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/enabled_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/enabled_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="audio.enabled" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings defaults"/>
<on event="start" run="port settings defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings save" back="true"/>
<on event="start" run="port settings save" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/labels">
<string text="MASTER VOLUME:"/>
<string text="MUSIC VOLUME:"/>
<string text="EFFECTS VOLUME:"/>
<string text="SOUND:"/>
</strings>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/help_strings">
<string text=""/>
<string text="The volume of everything."/>
<string text="The music's volume."/>
<string text="The volume of every other sound: effects and\nspeech."/>
<string text="Play sound at all; from the next time the game\nstarts."/>
</strings>
</menus>
@@ -0,0 +1,51 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\player_setup\player_profile_edit\color_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_name" x="415" y="85"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_pic" x="421" y="106"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_name" type="text" controller="1" width="147" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/color_edit/colors_list" string_index="2" font="ui\large_ui" color="#FF2896FF" align="center">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_pic" controller="1" width="143" height="294" bitmap="ui\shell\main_menu\settings_select\player_setup\player_profile_edit\color_edit\player_color_marine_large">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_list_2" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_extended_desc">
<data input="color picker update"/>
<on event="created" run="color picker menu initialize"/>
<on event="deleted" run="color picker menu dispose"/>
<on event="custom_activation" run="color picker select color" back="true"/>
<child widget="main_menu/new_select/list_item_0" x="20" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_list_2"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_edit/header_profile_color"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_edit/header_profile_color" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/color_edit/header_profile_color">
</widget>
</menus>
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/controls_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/header_profile_controls_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/header_profile_controls_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/header_profile_controls_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/help">
<data input="controls update menu"/>
<on event="created" run="controls screen init"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_group" x="54" y="73"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_1" x="54" y="103"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_2" x="54" y="133"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_3" x="54" y="163"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_4" x="54" y="193"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_5" x="54" y="223"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_6" x="54" y="253"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_7" x="54" y="283"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_group" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/group_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/group_spinner" x="200" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/group_label" type="text" controller="1" width="200" height="22" text="SHOW:" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/group_spinner" type="spinner" left="3" top="2" width="297" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="MOVEMENT|WEAPONS|ACTIONS" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 300 19 306">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_1" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_2" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_3" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_4" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_5" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_6" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/op_command_7" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<on event="a" run="controls begin binding"/>
<on event="start" run="controls begin binding"/>
<on event="left right" run="controls binding slot"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="200"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" x="356"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_label" type="text" controller="1" width="200" height="22" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/command_binding" type="text" controller="1" width="152" height="22" font="ui\small_ui" color="#FF2896FF" align="center" text_y="5" text_flags="no_focus_test">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="controls screen defaults"/>
<on event="start" run="controls screen defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="controls screen change set" back="true"/>
<on event="start" run="controls screen change set" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/help_strings">
<string text="Choose what to show, with left and right."/>
<string text="Enter sets the key chosen; left and right choose\nwhich of two. Then press the new key or button."/>
<string text="Press a key, a mouse button or turn the wheel...\nEscape cancels, Delete clears it."/>
</strings>
</menus>
@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/gamepad_setup_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/header_profile_controller_setting"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/header_profile_controller_setting" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/controller_edit/header_profile_controller_setting">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/help">
<data input="port settings help"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_look_sensitivity" x="54" y="73"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_invert_look" x="54" y="103"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_flight_inversion" x="54" y="133"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_autocenter" x="54" y="163"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_button_preset" x="54" y="193"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_joystick_preset" x="54" y="223"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_vibration" x="54" y="253"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_ingame_help" x="54" y="283"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_look_sensitivity" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/look_sensitivity_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/look_sensitivity_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/look_sensitivity_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="0" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/look_sensitivity_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="1|2|3|4|5|6|7|8|9|10" setting="profile.look_sensitivity" values="1|2|3|4|5|6|7|8|9|10" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_invert_look" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/invert_look_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/invert_look_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/invert_look_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/invert_look_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="YES|NO" setting="profile.invert_look" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_flight_inversion" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/flight_inversion_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/flight_inversion_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/flight_inversion_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/flight_inversion_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="YES|NO" setting="profile.flight_inversion" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_autocenter" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/autocenter_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/autocenter_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/autocenter_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/autocenter_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="YES|NO" setting="profile.autocenter" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_button_preset" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_preset_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_preset_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_preset_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_preset_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="DEFAULT|SWAP TRIGGERS|SWAP A, L TRIGGER|SWAP B, L TRIGGER|SWAP B, R STICK" setting="profile.button_preset" values="0|1|2|3|4" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_joystick_preset" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/joystick_preset_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/joystick_preset_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/joystick_preset_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/joystick_preset_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="DEFAULT|SOUTHPAW|LEGACY|LEGACY SOUTHPAW" setting="profile.joystick_preset" values="0|1|2|3" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_vibration" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/vibration_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/vibration_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/vibration_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/vibration_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="profile.vibration" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/op_ingame_help" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/ingame_help_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/ingame_help_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/ingame_help_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/ingame_help_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="profile.ingame_help" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings defaults"/>
<on event="start" run="port settings defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings save" back="true"/>
<on event="start" run="port settings save" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/labels">
<string text="LOOK SENSITIVITY:"/>
<string text="INVERT LOOK:"/>
<string text="INVERT FLIGHT:"/>
<string text="AUTO-CENTER LOOK:"/>
<string text="BUTTON LAYOUT:"/>
<string text="STICK LAYOUT:"/>
<string text="VIBRATION:"/>
<string text="IN-GAME HELP:"/>
</strings>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/help_strings">
<string text=""/>
<string text="How fast the right stick turns the view."/>
<string text="Pushing the right stick up looks down."/>
<string text="Flying vehicles pitch as aircraft do: pushing up\nflies down."/>
<string text="Level the view while walking."/>
<string text="Which of the controller's buttons does what (not\nthe keyboard's: Controls Setup sets those)."/>
<string text="Which stick moves and which looks."/>
<string text="Rumble the controller."/>
<string text="Show the game's hints about its controls."/>
</strings>
</menus>
@@ -0,0 +1,86 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/header_profile_mouse_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/header_profile_mouse_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/header_profile_mouse_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/help">
<data input="port settings help"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_sensitivity" x="54" y="73"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_vertical_sensitivity" x="54" y="103"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_invert_mouse" x="54" y="133"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_aim_assist" x="54" y="163"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_sensitivity" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_sensitivity_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_sensitivity_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_sensitivity_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/labels" string_index="0" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_sensitivity_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="0.25|0.5|0.75|1|1.25|1.5|1.75|2|2.5|3|4" setting="input.mouse_sensitivity" values="0.25|0.5|0.75|1|1.25|1.5|1.75|2|2.5|3|4" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_vertical_sensitivity" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_vertical_sensitivity_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_vertical_sensitivity_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_vertical_sensitivity_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_vertical_sensitivity_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="SAME|0.25|0.5|0.75|1|1.25|1.5|1.75|2|2.5|3|4" setting="input.mouse_vertical_sensitivity" values="0|0.25|0.5|0.75|1|1.25|1.5|1.75|2|2.5|3|4" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_invert_mouse" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/invert_mouse_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/invert_mouse_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/invert_mouse_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/invert_mouse_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="YES|NO" setting="input.invert_mouse" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/op_mouse_aim_assist" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_aim_assist_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_aim_assist_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_aim_assist_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_aim_assist_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="input.mouse_aim_assist" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings defaults"/>
<on event="start" run="port settings defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings save" back="true"/>
<on event="start" run="port settings save" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/labels">
<string text="HORIZONTAL SENSITIVITY:"/>
<string text="VERTICAL SENSITIVITY:"/>
<string text="INVERT VERTICAL AXIS:"/>
<string text="AIM ASSIST:"/>
</strings>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/help_strings">
<string text=""/>
<string text="How fast the view turns side to side for the\nmouse's movement."/>
<string text="How fast the view turns up and down; Same\nturns it as fast as side to side."/>
<string text="Moving the mouse forward looks down."/>
<string text="Slow and drag the view along with a target while\naiming with the mouse, as with a controller."/>
</strings>
</menus>
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\player_setup\player_profile_edit\name_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/name_edit/header_profile_name" controller="1" left="35" top="11" width="346" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/name_edit/header_profile_name">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/name_edit/profile_name_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" auto_close="1" bitmap="bitmaps/gradient">
<on event="created" run="NULL"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/name_edit/header_profile_name"/>
</widget>
</menus>
@@ -0,0 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/network_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/header_profile_network_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/header_profile_network_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/network_setup/header_profile_network_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/network_setup/help">
<data input="port settings help"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_online" x="54" y="73"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_allow_upnp" x="54" y="103"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_join_from_clipboard" x="54" y="133"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_auto" x="54" y="163"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_player_names" x="54" y="193"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_player_name_scale" x="54" y="223"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_scoreboard_team_layout" x="54" y="253"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_scoreboard_background" x="54" y="283"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_online" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/online_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/online_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/online_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="0" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/online_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="network.online" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_allow_upnp" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/allow_upnp_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/allow_upnp_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/allow_upnp_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/allow_upnp_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="network.allow_upnp" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_join_from_clipboard" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/join_from_clipboard_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/join_from_clipboard_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/join_from_clipboard_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/join_from_clipboard_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="network.join_from_clipboard" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_auto" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/auto_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/auto_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/auto_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/auto_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="update.auto" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_player_names" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_names_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_names_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_names_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_names_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ALL|ALLIES|ENEMIES|NONE" setting="display.player_names" values="all|allies|enemies|none" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_player_name_scale" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_name_scale_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_name_scale_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_name_scale_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/player_name_scale_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="0.5x|0.75x|1x|1.25x|1.5x|2x" setting="display.player_name_scale" values="0.5|0.75|1|1.25|1.5|2" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_scoreboard_team_layout" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_team_layout_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_team_layout_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_team_layout_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_team_layout_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="TEAMS|BY SCORE" setting="display.scoreboard_team_layout" values="teams|score" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/op_scoreboard_background" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_background_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_background_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_background_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/scoreboard_background_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.scoreboard_background" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings defaults"/>
<on event="start" run="port settings defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings save" back="true"/>
<on event="start" run="port settings save" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/labels">
<string text="INTERNET PLAY:"/>
<string text="UPNP PORT FORWARDING:"/>
<string text="JOIN FROM CLIPBOARD:"/>
<string text="CHECK FOR UPDATES:"/>
<string text="PLAYER NAMES:"/>
<string text="PLAYER NAME SIZE:"/>
<string text="SCOREBOARD LAYOUT:"/>
<string text="SCOREBOARD PANEL:"/>
</strings>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/network_setup/help_strings">
<string text=""/>
<string text="Host and join games over the internet by invite\nlinks; off keeps to the local network."/>
<string text="Let internet play ask the router to forward its\nport, for networks that stop connections."/>
<string text="Join the game of an invite link copied before\nswitching to the game."/>
<string text="Look for a new version when the game starts."/>
<string text="In multiplayer, whose names are drawn above their\nheads."/>
<string text="How large the players' names are drawn."/>
<string text="A team game's scoreboard: a column for each team,\nor every player in order of score."/>
<string text="Draw a panel behind the scoreboard, for clearer\ntext."/>
</strings>
</menus>
@@ -0,0 +1,158 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The port's settings screen, in the PC version's style (tools/port_settings.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/video_settings_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="b" back="true"/>
<on event="back" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/header_profile_video_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/options_menu"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/header_profile_video_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/video_settings/header_profile_video_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/help" type="text" controller="1" left="68" top="350" width="482" height="60" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/help_strings" font="ui\large_ui" color="#FFFFFFFF">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/options_menu" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/settings_select/player_setup/player_profile_edit/video_settings/help">
<data input="port settings help"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_mode" x="54" y="73" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_resolution" x="54" y="99" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_window_size" x="54" y="99" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_resolution_scaling" x="54" y="125" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_vsync" x="54" y="151"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_max_fps" x="54" y="177" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_interpolation" x="54" y="203"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_direct_camera" x="54" y="229" platform="desktop"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_high_res_hud" x="54" y="255"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_high_res_text" x="54" y="281"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_defaults" y="1"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_mode" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/mode_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/mode_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/mode_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="0" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/mode_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="FULLSCREEN|BORDERLESS|WINDOWED" setting="display.mode" values="fullscreen|borderless|windowed" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_resolution" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="NATIVE" setting="display.resolution" values="native" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_window_size" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/window_size_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/window_size_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/window_size_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/window_size_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="1280 x 960" setting="display.window_size" values="1280x960" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_resolution_scaling" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_scaling_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_scaling_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_scaling_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/resolution_scaling_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="NATIVE|ORIGINAL" setting="display.resolution_scaling" values="native|original" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_vsync" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/vsync_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/vsync_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/vsync_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/vsync_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.vsync" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_max_fps" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/max_fps_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/max_fps_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/max_fps_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/max_fps_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="AUTO|30|60|120|144|165|240|NONE" setting="display.max_fps" values="0|30|60|120|144|165|240|-1" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_interpolation" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/interpolation_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/interpolation_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/interpolation_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/interpolation_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.interpolation" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_direct_camera" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF" platform="desktop">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/direct_camera_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/direct_camera_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/direct_camera_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="7" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/direct_camera_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.direct_camera" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_high_res_hud" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_hud_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_hud_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_hud_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="8" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_hud_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.high_res_hud" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/op_high_res_text" width="512" height="28" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/option_bkds" color="#FF2896FF">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_text_label"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_text_spinner" x="320" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_text_label" type="text" controller="1" width="300" height="22" string_list="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels" string_index="9" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="4">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/high_res_text_spinner" type="spinner" left="3" top="2" width="147" height="20" flags="pass_unhandled_to_focused_child left_right_tabs_items" strings="ON|OFF" setting="display.high_res_text" values="true|false" font="ui\large_ui" color="#FF2896FF" align="center" text_y="1" header_bitmap="bitmaps/arrow_sm_left" footer_bitmap="bitmaps/arrow_sm_right" header_bounds="7 -6 19 0" footer_bounds="7 150 19 156">
<on event="created" run="port setting load"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_defaults" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="3" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings defaults"/>
<on event="start" run="port settings defaults"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="port settings save" back="true"/>
<on event="start" run="port settings save" back="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/labels">
<string text="DISPLAY MODE:"/>
<string text="RESOLUTION:"/>
<string text="WINDOW SIZE:"/>
<string text="RESOLUTION SCALING:"/>
<string text="V-SYNC:"/>
<string text="FRAME RATE LIMIT:"/>
<string text="SMOOTH MOTION:"/>
<string text="INSTANT AIM:"/>
<string text="HIGH-RES HUD:"/>
<string text="HIGH-RES TEXT:"/>
</strings>
<strings name="main_menu/settings_select/player_setup/player_profile_edit/video_settings/help_strings">
<string text=""/>
<string text="Fullscreen takes the display; borderless covers it\nwith a window. F11 switches to the window."/>
<string text="What fullscreen and borderless draw at. Fullscreen\nsets the display to it; borderless scales it."/>
<string text="The window's size: 4:3, then 16:10, 16:9 and 21:9\n(its edges can also be dragged)."/>
<string text="Native draws at the resolution; Original draws\nthe Xbox's 640x480 and scales it up."/>
<string text="Wait for the display between frames, so that the\npicture never tears."/>
<string text="With V-Sync off, the most frames a second. Auto:\ntwice the display's refresh rate."/>
<string text="Draw a frame for every display refresh, blending\nbetween the game's 30 ticks a second."/>
<string text="In first person, turn the view the moment the\nmouse moves, not up to two ticks later."/>
<string text="Draw the HUD from the high-res redraws; off\ndraws the game's own pictures."/>
<string text="Draw text and titles with high-res fonts; off\ndraws the game's own."/>
</strings>
</menus>
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\settings_select\player_setup\player_profile_edit (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/about_item" type="text" left="51" top="310" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="9" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="left_mouse" run="NULL"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/audio_settings_profile_item" type="text" left="51" top="210" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="4" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/audio_settings_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/audio_settings/audio_settings_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/color_profile_item" type="text" left="51" top="277" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="6" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/color_edit/color_select_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/controller_setup_profile_item" type="text" left="51" top="111" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="1" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/controls_settings_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/controls_setup/controls_settings_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/gamepads_profile_item" type="text" left="51" top="144" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="2" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/gamepad_setup_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/gamepad_setup/gamepad_setup_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/header_profile_settings" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/settings_select/player_setup/player_profile_edit/header_edit_profile_settings">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings_profile_item" type="text" left="51" top="177" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="3" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_settings_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings/mouse_settings_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/name_profile_item" type="text" left="51" top="78" width="232" height="32" bitmap="bitmaps/list_item_bkd_top" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" run="player profile change name" open="main_menu/settings_select/player_setup/player_profile_edit/name_edit/profile_name_screen"/>
<on event="start" run="player profile change name" open="main_menu/settings_select/player_setup/player_profile_edit/name_edit/profile_name_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/network_settings_profile_item" type="text" left="51" top="277" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="8" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/network_setup/network_settings_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/network_setup/network_settings_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/player_profile_edit_screen" width="640" height="480" flags="pass_unhandled_to_focused_child pause_game" bitmap="bitmaps/gradient">
<on event="created" run="close if not editing profile"/>
<on event="b" run="player profile end editing" back="true"/>
<on event="back" run="player profile end editing" back="true"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/header_profile_settings"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_select_list"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_label" x="293" y="375"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_button_ok" x="380" y="1"/>
<child widget="common_button_cancel" x="510" y="1"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="player profile save changes" open="error/warning_saving_file_screen"/>
<on event="start" run="player profile save changes" open="error/warning_saving_file_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_desc_pic" controller="1" left="288" top="85" width="279" height="202" bitmap="main_menu/settings_select/player_setup/player_profile_edit/profile_options">
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_desc_text" type="text" controller="1" left="294" top="290" width="296" height="110" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_descriptions" font="ui\large_ui" color="#FF2896FF">
<replace search="__BUILD__" function="build_number"/>
<replace search="__PID__" function="pid"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_description" controller="1" left="275" top="78" width="320" height="362" bitmap="bitmaps/list_field">
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_desc_text"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_desc_pic" x="4"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items" description="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_extended_description">
<data input="plyr prof edit select menu upd8"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/name_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/controller_setup_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/gamepads_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/mouse_settings_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/audio_settings_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/video_settings_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/network_settings_profile_item"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/color_profile_item" y="32"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/about_item" y="32"/>
<child widget="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_button_bar" y="414"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/profile_label" type="text" controller="1" width="400" height="22" font="ui\large_ui" color="#FFFFFFFF">
<data input="get edit plyr profile name"/>
</widget>
<widget name="main_menu/settings_select/player_setup/player_profile_edit/video_settings_profile_item" type="text" left="51" top="243" width="232" height="32" bitmap="bitmaps/list_item_bkd" string_list="main_menu/settings_select/player_setup/player_profile_edit/profile_edit_options" string_index="5" font="ui\large_ui" color="#FF2896FF" text_x="13" text_y="5">
<on event="a" open="main_menu/settings_select/player_setup/player_profile_edit/video_settings/video_settings_screen"/>
<on event="start" open="main_menu/settings_select/player_setup/player_profile_edit/video_settings/video_settings_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
</menus>
@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu\solo_level_select (tools/ce_menus.py) -->
<menus>
<widget name="main_menu/solo_level_select/difficulty_indicator" controller="1" width="44" height="48" bitmap="ui\shell\main_menu\difficulty_select\difficulty_options_small">
</widget>
<widget name="main_menu/solo_level_select/header_replay_level" controller="1" left="35" top="11" width="605" height="59" bitmap="main_menu/solo_level_select/header_load_level">
</widget>
<widget name="main_menu/solo_level_select/replay_level_right_data" type="text" controller="1" left="417" top="258" width="146" height="136" string_list="main_menu/solo_level_select/map_data" string_index="2" font="ui\small_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/solo_level_select/replay_level_right_item" controller="1" left="406" top="75" width="162" height="326" bitmap="bitmaps/spinner_list_3_wide_item_background">
<child widget="main_menu/solo_level_select/replay_level_right_name"/>
<child widget="main_menu/solo_level_select/replay_level_right_pic"/>
<child widget="main_menu/solo_level_select/replay_level_right_data"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="416" y="343"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="466" y="343"/>
<child widget="main_menu/solo_level_select/difficulty_indicator" x="516" y="343"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_name"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_pic"/>
<child widget="main_menu/multiplayer_type_select/mp_map_select/mp_map_right_data"/>
</widget>
<widget name="main_menu/solo_level_select/replay_level_right_name" type="text" controller="1" left="417" top="204" width="146" height="43" string_list="main_menu/map_list" string_index="2" font="ui\large_ui" color="#FF2896FF">
</widget>
<widget name="main_menu/solo_level_select/replay_level_right_pic" controller="1" left="419" top="87" width="140" height="114" bitmap="ui\shell\bitmaps\sp_levels">
</widget>
<widget name="main_menu/solo_level_select/solo_level_extended_desc" width="640" height="480">
<child widget="main_menu/current_profile_name"/>
<child widget="main_menu/solo_level_select/replay_level_right_item" x="22" y="2"/>
</widget>
<widget name="main_menu/solo_level_select/solo_level_select_button_bar" type="column_list" width="640" height="28" flags="pass_unhandled_to_focused_child left_right_tabs_items">
<data input="common button bar update"/>
<child widget="main_menu/solo_level_select/solo_level_select_button_ok" x="380" y="1"/>
<child widget="common_button_back" x="510" y="1"/>
</widget>
<widget name="main_menu/solo_level_select/solo_level_select_button_ok" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="1" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="emit custom activation event"/>
<on event="start" run="emit custom activation event"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/solo_level_select/solo_level_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_children" description="main_menu/solo_level_select/solo_level_extended_desc">
<data input="solo map list update"/>
<on event="created" run="initialize sp level list solo"/>
<on event="deleted" run="dispose sp level list"/>
<on event="custom_activation" run="solo level set map" open="main_menu/difficulty_select/difficulty_select_list_screen"/>
<child widget="main_menu/new_select/list_item_0_map_kind" x="82" y="73"/>
<child widget="main_menu/new_select/list_item_1" x="20" y="103"/>
<child widget="main_menu/new_select/list_item_2" x="20" y="133"/>
<child widget="main_menu/new_select/list_item_3" x="20" y="163"/>
<child widget="main_menu/new_select/list_item_4" x="20" y="193"/>
<child widget="main_menu/new_select/list_item_5" x="20" y="223"/>
<child widget="main_menu/new_select/list_item_6" x="20" y="253"/>
<child widget="main_menu/new_select/list_item_7" x="20" y="283"/>
<child widget="main_menu/new_select/list_item_8" x="20" y="313"/>
<child widget="main_menu/new_select/list_item_9" x="20" y="343"/>
<child widget="main_menu/new_select/list_item_10" x="20" y="373"/>
<child widget="main_menu/solo_level_select/solo_level_select_button_bar" y="414"/>
</widget>
<widget name="main_menu/solo_level_select/solo_level_select_screen" width="640" height="480" flags="pass_unhandled_to_focused_child" bitmap="bitmaps/gradient">
<child widget="main_menu/new_select/sel_list_desc_bkd"/>
<child widget="main_menu/solo_level_select/solo_level_select_list"/>
<child widget="main_menu/solo_level_select/header_replay_level"/>
</widget>
</menus>
+70
View File
@@ -0,0 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\main_menu (tools/ce_menus.py) -->
<menus root="main_menu/main_menu">
<widget name="main_menu/blueline" controller="1" width="192" height="2" bitmap="bitmaps/blue">
</widget>
<widget name="main_menu/build_number" type="text" controller="1" width="150" height="20" font="ui\small_ui" color="#FFFF8000">
<data input="build number textbox only"/>
</widget>
<widget name="main_menu/current_profile_name" type="text" controller="1" left="10" top="446" width="340" height="34" font="ui\large_ui" color="#FFCCCCCC">
</widget>
<widget name="main_menu/halo_logo" controller="1" width="640" height="256" bitmap="ui\shell\main_menu\halo_logo">
</widget>
<widget name="main_menu/main_menu" width="640" height="480" flags="pass_unhandled_to_focused_child">
<on event="created" run="main menu intialize" label="ring_loop"/>
<on event="back" open="main_menu/quit_select/quit_screen"/>
<on event="b" open="main_menu/quit_select/quit_screen"/>
<child widget="main_menu/halo_logo" y="28"/>
<child widget="main_menu/main_menu_select_list"/>
<child widget="main_menu/build_number" x="450" y="400"/>
</widget>
<widget name="main_menu/main_menu_item_load_camp" type="text" width="256" height="33" bitmap="main_menu/menu_load_campaign" string_list="main_menu/main_menu_options" string_index="1" font="ui\small_ui" color="#000080FF">
<on event="a" run="new game if no plyr profiles" label="load_campaign" open="main_menu/campaign_select/campaign_menu" branch="true"/>
<on event="start" run="new game if no plyr profiles" label="load_campaign" open="main_menu/campaign_select/campaign_menu" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
<conditional widget="main_menu/new_campaign_creating_profile" if_failed="true"/>
</widget>
<widget name="main_menu/main_menu_item_multiplayer" type="text" width="256" height="33" bitmap="main_menu/menu_multiplayer" string_list="main_menu/main_menu_options" string_index="2" font="ui\small_ui" color="#000080FF">
<on event="a" run="new game if no plyr profiles" open="main_menu/multiplayer_type_select/multiplayer_type_select_screen" branch="true"/>
<on event="start" run="new game if no plyr profiles" open="main_menu/multiplayer_type_select/multiplayer_type_select_screen" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
<conditional widget="main_menu/profile_manager/multiplayer_creating_profile" if_failed="true"/>
</widget>
<widget name="main_menu/main_menu_item_profile" type="text" width="256" height="33" bitmap="main_menu/menu_profile" string_list="main_menu/main_menu_options" string_index="2" font="ui\small_ui" color="#000080FF">
<on event="a" run="new game if no plyr profiles" open="main_menu/profile_manager/player_profile_manager" branch="true"/>
<on event="start" run="new game if no plyr profiles" open="main_menu/multiplayer_type_select/multiplayer_type_select_screen" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
<conditional widget="main_menu/profile_manager/pm_entry_creating_profile" if_failed="true"/>
</widget>
<widget name="main_menu/main_menu_item_quit_game" type="text" width="256" height="33" bitmap="main_menu/menu_quit">
<on event="start" open="main_menu/quit_select/quit_screen"/>
<on event="a" open="main_menu/quit_select/quit_screen"/>
<on event="left_mouse" run="mouse emit accept event"/>
</widget>
<widget name="main_menu/main_menu_item_settings" type="text" width="256" height="33" bitmap="main_menu/menu_settings" string_list="main_menu/main_menu_options" string_index="3" font="ui\small_ui" color="#000080FF">
<on event="a" run="profile set edit begin" label="settings" open="main_menu/settings_select/player_setup/player_profile_edit/player_profile_edit_screen" branch="true"/>
<on event="start" run="profile set edit begin" label="settings" open="main_menu/settings_select/player_setup/player_profile_edit/player_profile_edit_screen" branch="true"/>
<on event="left_mouse" run="mouse emit accept event"/>
<conditional widget="main_menu/profile_manager/settings_creating_profile" if_failed="true"/>
</widget>
<widget name="main_menu/main_menu_list_ext_desc" controller="1" left="-1" top="-1" width="1" height="1" bitmap="bitmaps/white" color="#FF0080FF">
</widget>
<widget name="main_menu/main_menu_select_list" type="column_list" width="640" height="480" flags="pass_unhandled_to_focused_child up_down_tabs_items" description="main_menu/main_menu_list_ext_desc">
<data input="main menu fake animate"/>
<on event="down"/>
<child widget="main_menu/main_menu_item_load_camp" x="194" y="247"/>
<child widget="main_menu/main_menu_item_multiplayer" x="192" y="283"/>
<child widget="main_menu/main_menu_item_profile" x="192" y="319"/>
<child widget="main_menu/main_menu_item_settings" x="192" y="355"/>
<child widget="main_menu/main_menu_item_quit_game" x="192" y="391"/>
</widget>
<widget name="main_menu/new_campaign_creating_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="1">
<on event="deleted" run="new campaign decision" open="main_menu/new_campaign_saving_profile"/>
</widget>
<widget name="main_menu/new_campaign_saving_profile" width="640" height="480" flags="pass_unhandled_to_focused_child no_history" auto_close="3000" auto_close_fade="1000">
<on event="b" run="NULL"/>
<on event="back" run="NULL"/>
<on event="deleted" run="NULL" open="main_menu/difficulty_select/difficulty_select_list_screen"/>
<child widget="error/warning_creating_player_profile_screen"/>
</widget>
</menus>
Binary file not shown.

After

Width:  |  Height:  |  Size: 75 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 305 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- The PC version's menus: ui\shell\shell (tools/ce_menus.py) -->
<menus>
<widget name="common_button_back" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
<on event="left_mouse" run="mouse emit back event"/>
</widget>
<widget name="common_button_cancel" type="text" width="128" height="24" bitmap="bitmaps/text_button_background" string_list="strings/common_button_captions" string_index="2" font="ui\small_ui" color="#FFFFFFFF" align="center" text_y="2">
<on event="a" run="mouse emit back event"/>
<on event="start" run="mouse emit back event"/>
<on event="left_mouse" run="mouse emit back event"/>
</widget>
</menus>
Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 552 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 593 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 487 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 493 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 534 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 465 B

Loaded 100 of 554 files, more files were not shown because too many files have changed in this diff. Show more