-
Notifications
You must be signed in to change notification settings - Fork 2
Theme Creation
Themes are located in base/themes and can be changed by selecting them from the Settings option, or by editing your base/config.ini manually.
The process of theme making is somewhat of a tedious one, though it is not incredibly difficult. All of the UI elements in your theme are positioned and resized according to their x, y, w, h coordinates, where x is the horizontal position with 0 being the left side of the screen and the positive number offsets from that (e.g. in a 800x600 resolution, the x coordinate would be 400 pixels from the left of the screen, aka the center). y position is similar, with top of the screen being 0.
So, in a 800x600 resolution, x = 0, y = 0 would be the top-left corner of the screen, while x = 800, y = 600 would be the bottom-right.
Next is the width-height argument. The width is the horizontal size in pixels from the x coordinate, so an element with x = 0 and width = 32 would be 32 pixels long from the x coordinate. Height is the similar way.
So if you wanted to center a hypothetical 64x64 ui_button on the screen, you can calculate it as such:
Our screen resolution is 800x600.
Our button size is 64x64.
Therefore, to center the button, we do it this way: x = 800/2 - 64/2, y = 600/2 - 64/2. And the result is:
ui_button = 368, 268, 64, 64
It is recommended to create a mock-up of how you want your theme to look like in a graphics editing program, as you can later region-select various elements to gather their x, y coordinates and width, height.
PLEASE BE WARNED: Some theme elements are relative position. This means that they're not using the global coordinate system, but the coordinate system relative to another ui element. Such is the case for showname, message, chat_arrow, which are relative to ic_chat_message/ao2_ic_chat_message,
evidence_button,
evidence_name,
evidence_load,
evidence_save,
evidence_transfer,
evidence_switch,
evidence_present,
evidence_buttons,
evidence_button_spacing,
evidence_button_size,
evidence_left,
evidence_right,
evidence_overlay which are relative to evidence_background, and finally,
evidence_delete,
evidence_image_name,
evidence_image_button,
evidence_x,
evidence_ok,
evidence_description which are relative to evidence_overlay.
You change the positioning and size of the ui elements in courtroom_design.ini of your theme.
; Client size. Changing it to something other than 714, 668 will stretch or
; compress courtroombackground.png accordingly.
courtroom = 0, 0, 714, 668
; **COORDINATE SYSTEM RELATIVE TO "courtroom"**
; x/y coordinates 0,0 will start at top-left of the "courtroom" for everything below until specified otherwise.
; ****
; IC Area. Changing 256, 192 will stretch or compress character gifs and the
; /bgs being used accordingly
viewport = 0, 0, 256, 192
; IC chatlog
ic_chatlog = 260, 0, 231, 319
; Master server chatlog
ms_chatlog = 490, 1, 224, 277
; OOC Chatlog
server_chatlog = 490, 1, 224, 277
; Where you type to make an OOC chat message
; NOTE: THIS DOES NOT HAVE ANY VISUAL APPEARANCE
ooc_chat_message = 492, 281, 222, 19
; Where you enter your OOC name, and also where it shows up
ooc_chat_name = 492, 300, 85, 19
; Toggle between Server and Master OOC chats
ooc_toggle = 580, 300, 133, 19
; The scrolling music name display
music_display = 490, 0, 224, 26
; WARNING: music_name x/y coordinates relative to music_display!
music_name = 0, 0, 224, 26
; Where the jukebox is
music_list = 490, 342, 224, 326
; Jukebox search bar
music_search = 490, 319, 100, 23
; Music list state colors
found_song_color = 144, 238, 144
missing_song_color = 255, 125, 125
; Labels and sliders for music/sfx/blips
music_label = 282, 607, 41, 16
sfx_label = 282, 627, 41, 16
blip_label = 282, 647, 41, 16
music_slider = 326, 608, 140, 16
sfx_slider = 326, 628, 140, 16
blip_slider = 326, 648, 140, 16
; Emote buttons - [490, 98] determines how many columns and rows of buttons are
; displayed per page. 49, 49 is the ABSOLUTE MINIMUM, and displays 1 button per
; page. Having either number lower than 49 crashes the client when you try to
; pick a character. If you want X columns and Y rows, you would change it to
; 49X, 49Y (ie. 490, 147 if you want 10 columns and 3 rows)
emotes = 5, 342, 490, 98
emote_button_spacing = 9, 9
emote_button_size = 40, 40
; Page togglers for emotes
emote_left = 5, 434, 60, 32
emote_right = 428, 434, 60, 32
; Emote dropdown/emote names - Change '125' to make it longer/shorter and
; display the full emote name or truncate it based on length
emote_dropdown = 5, 470, 105, 20
; Display the accessible iniswaps on this character (grabbed from iniswaps.ini)
iniswap_dropdown = 100, 442, 89, 20
; The button to remove the current iniswap
iniswap_remove = 78, 442, 20, 20
; Display the accessible sfx on this character (grabbed from soundlist.ini). If none found, courtroom_soundlist.ini will be used.
sfx_dropdown = 220, 442, 89, 20
; The button to remove the current iniswap
sfx_remove = 198, 442, 20, 20
; Display the list of overlay effects accessible
effects_dropdown = 330, 441, 89, 22
; The size of the icons for dropdown entries
effects_icon_size = 16, 16
; Hold it/Take That/Objection and the "BLING!" buttons
hold_it = 10, 310, 76, 28
objection = 90, 310, 76, 28
take_that = 170, 310, 76, 28
realization = 5, 515, 42, 42
; If the server supports it (AOV does not currently) - if a character has a
; custom.gif and custom.wav in their folder, this button acts as another
; Objection/Take That/Hold It for that character that uses the custom animation
; and sfx. (Think Satorah! Such Insolence!, Gotcha!)
custom_objection = 250, 310, 76, 28
; Text color dropdown menu
text_color = 115, 470, 80, 20
pos_dropdown = 200, 470, 80, 20
; Preanimation toggle
pre = 5, 490, 80, 21
; Flip button
flip = 64, 490, 51, 21
; Additive button
Additive = 114, 490, 80, 21
; Guard button
guard = 200, 580, 61, 21
pre_no_interrupt = 200, 490, 80, 21
; Penalty bars and judge's buttons for penalizing. Other than the bars, these
; ONLY show up on a character with /pos jud
defense_bar = 5, 566, 187, 9
prosecution_bar = 5, 582, 187, 9
defense_plus = 183, 566, 9, 9
defense_minus = 5, 566, 9, 9
prosecution_plus = 183, 582, 9, 9
prosecution_minus = 5, 582, 9, 9
; Judge's buttons for WT and CE. /pos jud
witness_testimony = 290, 470, 85, 42
cross_examination = 290, 515, 85, 42
; Buttons to change character/Reload theme/Call Mod
change_character = 5, 610, 120, 23
reload_theme = 5, 637, 94, 23
call_mod = 104, 637, 64, 23
; Mute button
mute_button = 150, 515, 42, 42
; Screenshake
screenshake = 51, 515, 42, 42
; Where the Mute list pops up when you click Mute
mute_list = 280, 469, 210, 198
; Character select widgets
char_select = 0, 0, 714, 668
back_to_lobby = 5, 5, 91, 23
char_password = 297, 7, 120, 22
char_buttons = 25, 36, 663, 596
char_button_spacing = 7, 7
char_select_left = 100, 5, 43, 24
char_select_right = 146, 5, 43, 24
spectator = 317, 640, 80, 23
; -------------------------
; New in 2.6.0
; -------------------------
; This is an input field that allows you to change your in-character showname.
ic_chat_name = 200, 534, 78, 23
; I am sure there are some differences between the 'ao2_' versions and the
; 'ao2_'-less versions of the IC text display and input, but I do not know
; what. Still, here you go!
ao2_ic_chat_name = 200, 534, 78, 23
; An in-game tickbox that allows you to set whether your client should show
; custom shownames where possible, or always keep to character names.
; This is useful if you suspect someone is impersonating others, for example,
; and they are using this in combination with ini-swapping to 'duplicate' a
; character.
showname_enable = 200, 510, 80, 21
; A simple button that opens up the settings menu.
; Equivalent to typing /settings in the OOC chat.
settings = 130, 610, 60, 23
; The character search text input in the character selecton screen.
; The moment you enter some text, it immediately starts filtering.
char_search = 420, 7, 120, 22
; A tickbox that filters based on if a character requires password to access or not.
; Note that this is actually only partially implemented in AO.
; The interface exists for it, but no way to actually password the characters.
char_passworded = 545, 7, 100, 22
; A tickbox that filters characters based on if they are taken.
char_taken = 635, 7, 80, 22
; These buttons are similar to the CE / WT buttons, except they show a
; Not Guilty or Guilty animation instead.
not_guilty = 380, 470, 85, 42
guilty = 380, 515, 85, 42
; These are responsible for the pairing stuff.
; These work much like muting, actually.
pair_button = 104, 515, 42, 42
pair_list = 280, 490, 210, 177
pair_offset_spinbox = 280, 470, 110, 20
pair_order_dropdown = 390, 470, 100, 20
; This button allows switching between music and areas.
switch_area_music = 590, 319, 35, 23
; These are colours for the various statuses an area can be in.
area_free_color = 144, 238, 144
area_lfp_color = 127, 255, 0
area_casing_color = 255, 215, 0
area_recess_color = 255, 246, 143
area_rp_color = 135, 206, 255
area_gaming_color = 171, 130, 255
area_locked_color = 165, 43, 43
; These two are casing-related inputs.
; "casing" is a tickbox that toggles whether you should receive case alerts or
; not (you can set your preferences, and its default value, in the Settings!)
; "casing_button" is an interface to help you announce a case (you have to be
; a CM first to be able to announce cases).
casing = 200, 560, 80, 21
casing_button = 173, 637, 60, 23
;
; Chat system
;
; IC chatbox
chatbox = 0, 178, 256, 104
; IC chatbox if the current background's folder contains stand.png,
; defensedesk.png and prosecutiondesk.png
ao2_chatbox = 0, 178, 256, 104
; Where you type to make an IC chat message
ic_chat_message = 2, 283, 250, 23
; IC chat message if the current background's folder contains stand.png,
; defensedesk.png and prosecutiondesk.png
ao2_ic_chat_message = 2, 283, 250, 23
; **COORDINATE SYSTEM RELATIVE TO "chatbox"/"ao2_chatbox"**
; x/y coordinates 0,0 will start at top-left of the "chatbox"/"ao2_chatbox" for everything below until specified otherwise.
; ****
; Textbox for custom IC name (the "showname"), width is the smallest size
showname = 1, 0, 46, 15
; The chatbox image used for smallest possible size is "chat". "chatblank" is used if the showname is whitespace-only.
; "chatmed" will be used if the showname size exceeds the width, at which point the showname will receive showname_extra_width.
; "chatbig" will be used if the showname size exceeds the "chatmed" width, at which point the showname will receive showname_extra_width again.
; Text any bigger than that will be cut off. If "chatmed" or "chatbig" are missing, showname will not be resized.
showname_extra_width = 24
; IC message, positioned within the chatbox. Changing 250 affects how
; long text goes on before going onto the next line. Changing 89 affects
; how many lines you can see before the message starts scrolling, based on
; Every line height is 25 if the font size is 10 and the Sans font is used.
; There's 4 pixels from X position until the symbol is displayed.
; the formula of n = 25+(n-1)*16, where n is the number of lines to be
; displayed. (ie, set it to 25 for 1 line, 41 for 2, 57 for 3, 73 for 4,
; 89 for 5, 105 for 6... Less than 25 displays nothing)
message = 10, 12, 242, 89
; A chat indicator alerting us the chat ticker isn't active (text is no longer being processed).
chat_arrow = 245, 84, 11, 9
;
; Evidence system
;
; **COORDINATE SYSTEM RELATIVE TO "viewport"**
; x/y coordinates 0,0 will start at top-left of the "viewport" for everything below until specified otherwise.
; ****
left_evidence_icon = 13, 13, 70, 70
right_evidence_icon = 173, 13, 70, 70
; **COORDINATE SYSTEM RELATIVE TO "courtroom"**
; x/y coordinates 0,0 will start at top-left of the "courtroom" for everything below until specified otherwise.
; ****
evidence_background = 0, 385, 490, 284
; **COORDINATE SYSTEM RELATIVE TO "evidence_background"**
; x/y coordinates 0,0 will start at top-left of the "evidence_background" for everything below until specified otherwise.
; ****
evidence_button = 627, 322, 85, 18
evidence_name = 112, 4, 264, 19
evidence_load = 402, 2, 20, 20
evidence_save = 424, 2, 20, 20
evidence_transfer = 446, 2, 20, 20
evidence_switch = 468, 2, 20, 20
evidence_present = 165, 247, 158, 41
evidence_buttons = 28, 27, 430, 216
evidence_button_spacing = 2, 3
evidence_button_size = 70, 70
evidence_left = 28, 0, 60, 24
evidence_right = 400, 0, 60, 24
evidence_overlay = 24, 24, 439, 222
; **COORDINATE SYSTEM RELATIVE TO "evidence_overlay"**
; x/y coordinates 0,0 will start at top-left of the "evidence_overlay" (which is parented to "evidence_background") for everything below until specified otherwise.
; ****
evidence_delete = 78, 8, 70, 20
evidence_image_name = 150, 8, 109, 20
evidence_image_button = 259, 8, 60, 20
evidence_x = 341, 8, 20, 20
evidence_ok = 320, 8, 20, 20
evidence_description = 78, 28, 281, 166