Serverside map icons.

This adjusts our titlescreen system to allow for hosting title screens
seperately from the codebase, for licensing reasons and other. It
supports both per-map title screens and "rare" screens, which are both
done by parsing in the form of naming the file.

Usage is covered in config/title_screens/README.txt, to summarize:
 - All title screens must have unique names. These can be anything, so
 long as they do not use the + or . characters. Example: NewLobby.png,
 DeadCats.jpg.
 - Any format BYOND can read is supported, the file extension doesn't
 really matter; Only exception is that .dmi files must only have *one*
 state, and it must not have a name.
 - Map-specific title screens are parsed by adding the MAP_NAME to the
 start of the image. Example: MetaStation+NewLobby.png,
 Cyberiad+NewLobby.png
   - I changed the MAP_NAME of the NSS Cyberiad from NSS Cyberiad to
   Cyberiad for this reason, to avoid any compatibility issues between
   filesystems.
 - Rare title screens can be made by using the format rare+name.ext.
 Example: rare+NyanCat.gif, rare+Mrowl.dmi
   - You cannot use both map-specific and rare modifiers at the same
   time to reduce parsing complexity.
This commit is contained in:
Tigercat2000
2017-04-24 10:23:21 -07:00
parent 3901e0d119
commit 756de5a716
8 changed files with 130 additions and 8 deletions
+1 -1
View File
@@ -23,7 +23,7 @@ z7 = empty
#include "map_files\cyberiad\z7.dmm"
#define MAP_FILE "cyberiad.dmm"
#define MAP_NAME "NSS Cyberiad"
#define MAP_NAME "Cyberiad"
#define MAP_TRANSITION_CONFIG list(\
DECLARE_LEVEL(MAIN_STATION, CROSSLINKED, list(STATION_LEVEL,STATION_CONTACT,REACHABLE,AI_OK)),\
DECLARE_LEVEL(CENTCOMM, SELFLOOPING, list(ADMIN_LEVEL, BLOCK_TELEPORT, IMPEDES_MAGIC)),\
+3 -3
View File
@@ -16,10 +16,10 @@
icon = 'icons/obj/doors/Doorele.dmi'
icon_state = "door_closed"
turf/unsimulated/wall/splashscreen
/turf/unsimulated/wall/splashscreen
name = "Space Station 13"
icon = 'icons/misc/fullscreen.dmi'
icon_state = "title"
icon = 'config/title_screens/images/blank.png'
icon_state = ""
layer = FLY_LAYER
/turf/unsimulated/wall/other
+33
View File
@@ -0,0 +1,33 @@
/hook/startup/proc/setup_title_screen()
var/list/provisional_title_screens = flist("config/title_screens/images/")
var/list/title_screens = list()
var/use_rare_screens = prob(1)
for(var/S in provisional_title_screens)
var/list/L = splittext(S,"+")
if(L.len == 1 && L[1] != "blank.png")
title_screens += S
else if(L.len > 1)
if(use_rare_screens && lowertext(L[1]) == "rare")
title_screens += S
else if(lowertext(L[1]) == lowertext(MAP_NAME))
title_screens += S
if(!isemptylist(title_screens))
if(length(title_screens) > 1)
for(var/S in title_screens)
var/list/L = splittext(S,".")
if(L.len != 2 || L[1] != "default")
continue
title_screens -= S
break
var/file_path = "config/title_screens/images/[pick(title_screens)]"
var/icon/icon = new(fcopy_rsc(file_path))
for(var/turf/unsimulated/wall/splashscreen/splash in world)
splash.icon = icon
return TRUE
return FALSE
+38
View File
@@ -0,0 +1,38 @@
---LICENSE NOTICE---
The server operator(s) is responsible for the copyright status of all images placed within the /config/title_screens/images folder unless otherwise noted.
If an image requires attribution and/or a specific license it is up to the operator(s) to make this information publicly available on either
a website associated with their server or on the server itself.
If operators(s) allow these configuration files to be public this file can serve that purpose by keeping it properly updated.
If in the future new images are published to these folders (i.e. in an online code repository) they must explicitly state their
license if said license is not the same as the default licensing found in README.md in the root directory of the project.
Do not remove this notice.
---END NOTICE---
---EXAMPLES (NOT PART OF ANY LICENSE)---
These are examples of properly attrubuted and licensed images.
They are not an actual part of any license under any circumstance.
rare+foobar.png was created by Mya Quinn on Feburary 28, 2557. It is licensed under a Combative Clowning 3.0 HO-NK license (http://example.com/license/url/).
Unless otherwise noted all images were created by Cuban Pete on July 26, 2555. They are licensed under the RUMBABEAT Public License.(http://example.com/license/url/).
---END EXAMPLES (NOT PART OF ANY LICENSE)---
---ADD LICENSING INFORMATION BELOW---
blank.png and default.dmi use the default licensing found in README.md in the root directory of the project.
+50
View File
@@ -0,0 +1,50 @@
The enclosed images folder holds the image files used as the title screen for the game. All common formats such as PNG, JPG, and GIF are supported.
Byond's DMI format is also supported, but if you use a DMI only include one image per file and do not give it an icon_state (the text label below the image).
Keep in mind that the area a title screen fills is a 480px square so you should scale/crop source images to these dimensions first.
The game won't scale these images for you, so smaller images will not fill the screen and larger ones will be cut off.
Using unnecessarily huge images can cause client side lag and should be avoided. Extremely large GIFs should preferentially be converted to DMIs.
Placing non-image files in the images folder can cause errors.
You may add as many title screens as you like, if there is more than one a random screen is chosen (see name conventions for specifics).
---
Naming Conventions:
Every title screen you add must have a unique name. It is allowed to name two things the same if they have different file types, but this should be discouraged.
Avoid using the plus sign "+" and the period "." in names, as these are used internally to classify images.
Common Titles:
Common titles are in the rotation to be displayed all the time. Any name that does not include the character "+" is considered a common title.
An example of a common title name is "clown".
The common title screen named "default" is special. It is only used if no other titles are available. You can overwrite "default" safely, but you
should have a title named "default" somewhere in your DMI file if you don't have any other common titles. Because default only runs in the
absence of other titles, if you want it to also appear in the general rotation you must rename it.
The common title screen named "blank.png" is also special. It is only used to fill space while the real title screen loads. You should leave this file alone.
Map Titles:
Map titles are tied to a specific in game map. To make a map title you format the name like this "(name of a map)+(name of your title)"
The spelling of the map name is important. It must match exactly the define MAP_NAME found in the relevant .DM file in the /_maps folder in
the root directory. It can also be seen in game in the status menu. Note that there are no spaces between the two names.
It is absolutely fine to have more than one title tied to the same map.
An example of a map title name is "Omegastation+splash".
Rare Titles:
Rare titles are a just for fun feature where they will only have a 1% chance of appear in in the title screen pool of a given round.
Add the phrase "rare+" to the beginning of the name. Again note there are no spaces. A title cannot be rare title and a map title at the same time.
An example of a rare title name is "rare+explosion"
Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Before

Width:  |  Height:  |  Size: 980 KiB

After

Width:  |  Height:  |  Size: 980 KiB

+5 -4
View File
@@ -1330,6 +1330,7 @@
#include "code\modules\examine\descriptions\weapons.dm"
#include "code\modules\ext_scripts\irc.dm"
#include "code\modules\ext_scripts\python.dm"
#include "code\modules\fancytitle\fancytitle.dm"
#include "code\modules\fish\fish_eggs.dm"
#include "code\modules\fish\fish_items.dm"
#include "code\modules\fish\fish_types.dm"
@@ -2214,10 +2215,10 @@
#include "code\modules\vehicle\speedbike.dm"
#include "code\modules\vehicle\sportscar.dm"
#include "code\modules\vehicle\vehicle.dm"
#include "code\modules\vr\vr_avatar.dm"
#include "code\modules\vr\vr_controller.dm"
#include "code\modules\vr\vr_goggles.dm"
#include "code\modules\vr\vr_outfits.dm"
#include "code\modules\VR\vr_avatar.dm"
#include "code\modules\VR\vr_controller.dm"
#include "code\modules\VR\vr_goggles.dm"
#include "code\modules\VR\vr_outfits.dm"
#include "goon\code\datums\browserOutput.dm"
#include "interface\interface.dm"
#include "interface\skin.dmf"