From 0d73be34a8fe77be66d84a191f24090511a1cbb6 Mon Sep 17 00:00:00 2001 From: Marisa the Magician Date: Mon, 22 Aug 2022 18:11:32 +0200 Subject: [PATCH] Souls-style area name display from sidemods. --- credits.txt | 1 + cvarinfo.base | 1 + graphics/dsmapfont.json | 199 +++++++++++++++++++++++++ graphics/dsmapfont.license | 93 ++++++++++++ graphics/dsmapfont.png | Bin 0 -> 59254 bytes graphics/dsmapfont.txt | 257 +++++++++++++++++++++++++++++++++ graphics/dsmapfont_sub.json | 199 +++++++++++++++++++++++++ graphics/dsmapfont_sub.png | Bin 0 -> 12478 bytes graphics/dsmapfont_sub.txt | 257 +++++++++++++++++++++++++++++++++ language.def_menu | 2 + language.es_menu | 2 + language.version | 4 +- menudef.txt | 1 + sndinfo.base | 1 + zscript/hud/swwm_hudextra.zsc | 247 +++++++++++++++++++++++++++++++ zscript/swwm_statichandler.zsc | 5 + 16 files changed, 1267 insertions(+), 2 deletions(-) create mode 100644 graphics/dsmapfont.json create mode 100644 graphics/dsmapfont.license create mode 100644 graphics/dsmapfont.png create mode 100644 graphics/dsmapfont.txt create mode 100644 graphics/dsmapfont_sub.json create mode 100644 graphics/dsmapfont_sub.png create mode 100644 graphics/dsmapfont_sub.txt diff --git a/credits.txt b/credits.txt index 1003cc342..b4f30a799 100644 --- a/credits.txt +++ b/credits.txt @@ -28,6 +28,7 @@ Most of the work here is original, but there are some notable exceptions: - The crash handler uses a short clip of the Curb Your Enthusiasm theme. - Tewi font by lucy (https://github.com/lucy/tewi-font). Modified to add gradients and drop shadow. - Miniwi font by Josuah Demangeon (http://josuah.net). Modified to add gradients and drop shadow. + - EB Garamond font by Octavio Pardo et al (https://github.com/octaviopardo/EBGaramond12). Rendered to texture atlas with outline. - Nashgore footprint texture by Valerie Lavender. - Slope alignment utility code by ZZYZX & Nash. - Intermission fanart: diff --git a/cvarinfo.base b/cvarinfo.base index 318b3a3b3..e0b87cd13 100644 --- a/cvarinfo.base +++ b/cvarinfo.base @@ -85,6 +85,7 @@ nosave bool swwm_hudallammo = false; // only show ammo for owned weapons nosave bool swwm_nointroex = false; // does not play the "explosions" intro sequence server bool swwm_bonkhammer = false; // combat hammer makes bonk sounds when hitting enemies server int swwm_friendlyfire = 0; // 0: allow all friendly fire, 1: block incoming damage, 2: block incoming and outgoing damage +nosave bool swwm_showmaptitle = false; // shows the name of the map when entering, just like in dark souls! // minimap settings nosave bool swwm_mm_enable = true; // show a minimap below the score counter diff --git a/graphics/dsmapfont.json b/graphics/dsmapfont.json new file mode 100644 index 000000000..0d1451479 --- /dev/null +++ b/graphics/dsmapfont.json @@ -0,0 +1,199 @@ +{ + "name": "EB Garamond Medium", + "size": 36, + "bold": false, + "italic": false, + "width": 597, + "height": 203, + "characters": { + "0":{"x":201,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "1":{"x":429,"y":130,"width":17,"height":27,"originX":-1,"originY":25,"advance":18}, + "2":{"x":159,"y":130,"width":21,"height":27,"originX":1,"originY":25,"advance":18}, + "3":{"x":274,"y":74,"width":19,"height":29,"originX":0,"originY":25,"advance":18}, + "4":{"x":71,"y":130,"width":22,"height":27,"originX":2,"originY":25,"advance":18}, + "5":{"x":293,"y":74,"width":18,"height":29,"originX":0,"originY":25,"advance":18}, + "6":{"x":469,"y":74,"width":19,"height":28,"originX":0,"originY":26,"advance":18}, + "7":{"x":408,"y":74,"width":21,"height":28,"originX":1,"originY":25,"advance":18}, + "8":{"x":301,"y":130,"width":19,"height":27,"originX":0,"originY":25,"advance":18}, + "9":{"x":449,"y":74,"width":20,"height":28,"originX":0,"originY":25,"advance":18}, + "!":{"x":0,"y":157,"width":9,"height":27,"originX":0,"originY":25,"advance":10}, + "\"":{"x":268,"y":184,"width":13,"height":13,"originX":0,"originY":26,"advance":13}, + "#":{"x":429,"y":74,"width":20,"height":28,"originX":2,"originY":23,"advance":17}, + "$":{"x":346,"y":40,"width":18,"height":33,"originX":1,"originY":27,"advance":16}, + "%":{"x":357,"y":74,"width":28,"height":28,"originX":2,"originY":25,"advance":24}, + "&":{"x":9,"y":157,"width":31,"height":26,"originX":1,"originY":24,"advance":28}, + "'":{"x":281,"y":184,"width":8,"height":13,"originX":0,"originY":26,"advance":8}, + "(":{"x":145,"y":0,"width":13,"height":37,"originX":1,"originY":27,"advance":11}, + ")":{"x":158,"y":0,"width":13,"height":37,"originX":1,"originY":27,"advance":11}, + "*":{"x":218,"y":184,"width":15,"height":15,"originX":1,"originY":26,"advance":12}, + "+":{"x":191,"y":157,"width":23,"height":22,"originX":1,"originY":20,"advance":21}, + ",":{"x":233,"y":184,"width":11,"height":14,"originX":2,"originY":7,"advance":9}, + "-":{"x":387,"y":184,"width":13,"height":8,"originX":1,"originY":11,"advance":10}, + ".":{"x":362,"y":184,"width":9,"height":9,"originX":0,"originY":7,"advance":9}, + "/":{"x":516,"y":40,"width":18,"height":30,"originX":2,"originY":25,"advance":14}, + ":":{"x":43,"y":184,"width":9,"height":19,"originX":0,"originY":17,"advance":9}, + ";":{"x":180,"y":157,"width":11,"height":24,"originX":2,"originY":16,"advance":8}, + "<":{"x":229,"y":157,"width":22,"height":21,"originX":1,"originY":19,"advance":20}, + "=":{"x":289,"y":184,"width":23,"height":12,"originX":1,"originY":15,"advance":21}, + ">":{"x":251,"y":157,"width":22,"height":21,"originX":1,"originY":19,"advance":20}, + "?":{"x":530,"y":130,"width":14,"height":27,"originX":0,"originY":25,"advance":14}, + "@":{"x":328,"y":74,"width":29,"height":28,"originX":1,"originY":21,"advance":27}, + "A":{"x":565,"y":40,"width":30,"height":29,"originX":2,"originY":27,"advance":25}, + "B":{"x":533,"y":103,"width":25,"height":27,"originX":2,"originY":25,"advance":22}, + "C":{"x":425,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":26}, + "D":{"x":193,"y":103,"width":30,"height":27,"originX":1,"originY":25,"advance":27}, + "E":{"x":48,"y":130,"width":23,"height":27,"originX":1,"originY":25,"advance":20}, + "F":{"x":180,"y":130,"width":21,"height":27,"originX":1,"originY":25,"advance":19}, + "G":{"x":369,"y":103,"width":28,"height":27,"originX":1,"originY":25,"advance":26}, + "H":{"x":69,"y":103,"width":31,"height":27,"originX":1,"originY":25,"advance":29}, + "I":{"x":514,"y":130,"width":16,"height":27,"originX":2,"originY":25,"advance":13}, + "J":{"x":349,"y":0,"width":19,"height":35,"originX":5,"originY":25,"advance":13}, + "K":{"x":253,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":26}, + "L":{"x":558,"y":103,"width":24,"height":27,"originX":1,"originY":25,"advance":21}, + "M":{"x":550,"y":74,"width":36,"height":27,"originX":2,"originY":25,"advance":33}, + "N":{"x":36,"y":103,"width":33,"height":27,"originX":2,"originY":25,"advance":29}, + "O":{"x":282,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":27}, + "P":{"x":0,"y":130,"width":24,"height":27,"originX":2,"originY":25,"advance":21}, + "Q":{"x":38,"y":0,"width":35,"height":37,"originX":1,"originY":25,"advance":27}, + "R":{"x":100,"y":103,"width":31,"height":27,"originX":2,"originY":25,"advance":26}, + "S":{"x":320,"y":130,"width":19,"height":27,"originX":1,"originY":25,"advance":17}, + "T":{"x":0,"y":74,"width":28,"height":29,"originX":1,"originY":27,"advance":24}, + "U":{"x":131,"y":103,"width":31,"height":27,"originX":2,"originY":25,"advance":27}, + "V":{"x":311,"y":103,"width":29,"height":27,"originX":2,"originY":25,"advance":25}, + "W":{"x":511,"y":74,"width":39,"height":27,"originX":2,"originY":25,"advance":34}, + "X":{"x":162,"y":103,"width":31,"height":27,"originX":3,"originY":25,"advance":26}, + "Y":{"x":397,"y":103,"width":28,"height":27,"originX":2,"originY":25,"advance":22}, + "Z":{"x":56,"y":74,"width":24,"height":29,"originX":1,"originY":27,"advance":22}, + "[":{"x":217,"y":0,"width":12,"height":36,"originX":-2,"originY":27,"advance":12}, + "\\":{"x":534,"y":40,"width":18,"height":30,"originX":2,"originY":25,"advance":14}, + "]":{"x":204,"y":0,"width":13,"height":36,"originX":2,"originY":27,"advance":12}, + "^":{"x":183,"y":184,"width":20,"height":16,"originX":1,"originY":24,"advance":18}, + "_":{"x":414,"y":184,"width":24,"height":6,"originX":2,"originY":-3,"advance":19}, + "`":{"x":312,"y":184,"width":10,"height":11,"originX":1,"originY":25,"advance":8}, + "a":{"x":521,"y":157,"width":18,"height":19,"originX":1,"originY":17,"advance":15}, + "b":{"x":126,"y":74,"width":22,"height":29,"originX":2,"originY":27,"advance":19}, + "c":{"x":539,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":15}, + "d":{"x":472,"y":40,"width":22,"height":30,"originX":1,"originY":27,"advance":19}, + "e":{"x":556,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":14}, + "f":{"x":234,"y":74,"width":20,"height":29,"originX":2,"originY":27,"advance":12}, + "g":{"x":192,"y":74,"width":21,"height":29,"originX":2,"originY":17,"advance":16}, + "h":{"x":449,"y":40,"width":23,"height":30,"originX":2,"originY":28,"advance":19}, + "i":{"x":558,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "j":{"x":171,"y":0,"width":12,"height":37,"originX":3,"originY":25,"advance":9}, + "k":{"x":80,"y":74,"width":23,"height":29,"originX":2,"originY":27,"advance":18}, + "l":{"x":552,"y":40,"width":13,"height":30,"originX":2,"originY":28,"advance":9}, + "m":{"x":273,"y":157,"width":32,"height":20,"originX":2,"originY":18,"advance":28}, + "n":{"x":305,"y":157,"width":23,"height":20,"originX":2,"originY":18,"advance":19}, + "o":{"x":481,"y":157,"width":20,"height":19,"originX":1,"originY":17,"advance":18}, + "p":{"x":494,"y":40,"width":22,"height":30,"originX":2,"originY":18,"advance":19}, + "q":{"x":148,"y":74,"width":22,"height":29,"originX":1,"originY":17,"advance":19}, + "r":{"x":391,"y":157,"width":16,"height":20,"originX":1,"originY":18,"advance":13}, + "s":{"x":15,"y":184,"width":14,"height":19,"originX":1,"originY":17,"advance":12}, + "t":{"x":214,"y":157,"width":15,"height":22,"originX":1,"originY":20,"advance":12}, + "u":{"x":328,"y":157,"width":22,"height":20,"originX":1,"originY":18,"advance":19}, + "v":{"x":350,"y":157,"width":21,"height":20,"originX":2,"originY":17,"advance":16}, + "w":{"x":407,"y":157,"width":30,"height":19,"originX":2,"originY":17,"advance":26}, + "x":{"x":460,"y":157,"width":21,"height":19,"originX":2,"originY":17,"advance":16}, + "y":{"x":213,"y":74,"width":21,"height":29,"originX":2,"originY":17,"advance":16}, + "z":{"x":573,"y":157,"width":17,"height":19,"originX":1,"originY":17,"advance":14}, + "{":{"x":368,"y":0,"width":16,"height":35,"originX":1,"originY":27,"advance":14}, + "|":{"x":22,"y":0,"width":8,"height":39,"originX":-1,"originY":27,"advance":10}, + "}":{"x":384,"y":0,"width":16,"height":35,"originX":2,"originY":27,"advance":14}, + "~":{"x":332,"y":184,"width":20,"height":9,"originX":1,"originY":16,"advance":19}, + "¡":{"x":502,"y":74,"width":9,"height":28,"originX":0,"originY":20,"advance":10}, + "¢":{"x":162,"y":157,"width":18,"height":25,"originX":1,"originY":22,"advance":15}, + "£":{"x":385,"y":74,"width":23,"height":28,"originX":3,"originY":25,"advance":19}, + "¤":{"x":371,"y":157,"width":20,"height":20,"originX":1,"originY":19,"advance":18}, + "¥":{"x":452,"y":103,"width":27,"height":27,"originX":2,"originY":25,"advance":22}, + "¦":{"x":30,"y":0,"width":8,"height":39,"originX":-1,"originY":27,"advance":10}, + "§":{"x":364,"y":40,"width":17,"height":33,"originX":1,"originY":25,"advance":15}, + "¨":{"x":371,"y":184,"width":16,"height":8,"originX":2,"originY":24,"advance":11}, + "©":{"x":479,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":24}, + "ª":{"x":29,"y":184,"width":14,"height":19,"originX":1,"originY":22,"advance":12}, + "«":{"x":52,"y":184,"width":22,"height":18,"originX":0,"originY":17,"advance":21}, + "¬":{"x":137,"y":184,"width":23,"height":17,"originX":1,"originY":16,"advance":22}, + "­":{"x":438,"y":184,"width":3,"height":3,"originX":1,"originY":1,"advance":0}, + "®":{"x":506,"y":103,"width":27,"height":27,"originX":1,"originY":25,"advance":24}, + "¯":{"x":400,"y":184,"width":14,"height":7,"originX":1,"originY":23,"advance":11}, + "°":{"x":254,"y":184,"width":14,"height":13,"originX":1,"originY":25,"advance":11}, + "±":{"x":139,"y":157,"width":23,"height":25,"originX":1,"originY":25,"advance":21}, + "²":{"x":203,"y":184,"width":15,"height":16,"originX":2,"originY":30,"advance":11}, + "³":{"x":160,"y":184,"width":12,"height":17,"originX":1,"originY":31,"advance":10}, + "´":{"x":322,"y":184,"width":10,"height":11,"originX":1,"originY":25,"advance":8}, + "µ":{"x":170,"y":74,"width":22,"height":29,"originX":0,"originY":17,"advance":20}, + "¶":{"x":100,"y":0,"width":24,"height":37,"originX":1,"originY":25,"advance":22}, + "·":{"x":352,"y":184,"width":10,"height":9,"originX":1,"originY":12,"advance":8}, + "¸":{"x":244,"y":184,"width":10,"height":14,"originX":1,"originY":2,"advance":8}, + "¹":{"x":172,"y":184,"width":11,"height":17,"originX":1,"originY":31,"advance":9}, + "º":{"x":0,"y":184,"width":15,"height":19,"originX":2,"originY":22,"advance":11}, + "»":{"x":74,"y":184,"width":22,"height":18,"originX":0,"originY":17,"advance":21}, + "¼":{"x":397,"y":40,"width":26,"height":31,"originX":1,"originY":27,"advance":24}, + "½":{"x":28,"y":74,"width":28,"height":29,"originX":1,"originY":25,"advance":26}, + "¾":{"x":423,"y":40,"width":26,"height":31,"originX":1,"originY":27,"advance":23}, + "¿":{"x":488,"y":74,"width":14,"height":28,"originX":0,"originY":20,"advance":14}, + "À":{"x":464,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Á":{"x":494,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Â":{"x":524,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Ã":{"x":554,"y":0,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Ä":{"x":264,"y":40,"width":30,"height":33,"originX":2,"originY":31,"advance":25}, + "Å":{"x":0,"y":40,"width":30,"height":34,"originX":2,"originY":32,"advance":25}, + "Æ":{"x":0,"y":103,"width":36,"height":27,"originX":3,"originY":25,"advance":32}, + "Ç":{"x":73,"y":0,"width":27,"height":37,"originX":1,"originY":25,"advance":26}, + "È":{"x":116,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "É":{"x":139,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "Ê":{"x":162,"y":40,"width":23,"height":34,"originX":1,"originY":32,"advance":20}, + "Ë":{"x":323,"y":40,"width":23,"height":33,"originX":1,"originY":31,"advance":20}, + "Ì":{"x":185,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Í":{"x":201,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Î":{"x":217,"y":40,"width":16,"height":34,"originX":2,"originY":32,"advance":13}, + "Ï":{"x":381,"y":40,"width":16,"height":33,"originX":2,"originY":31,"advance":13}, + "Ð":{"x":223,"y":103,"width":30,"height":27,"originX":1,"originY":25,"advance":27}, + "Ñ":{"x":400,"y":0,"width":33,"height":34,"originX":2,"originY":32,"advance":29}, + "Ò":{"x":291,"y":0,"width":29,"height":35,"originX":1,"originY":33,"advance":27}, + "Ó":{"x":320,"y":0,"width":29,"height":35,"originX":1,"originY":33,"advance":27}, + "Ô":{"x":30,"y":40,"width":29,"height":34,"originX":1,"originY":32,"advance":27}, + "Õ":{"x":59,"y":40,"width":29,"height":34,"originX":1,"originY":32,"advance":27}, + "Ö":{"x":294,"y":40,"width":29,"height":33,"originX":1,"originY":31,"advance":27}, + "×":{"x":118,"y":184,"width":19,"height":18,"originX":-1,"originY":18,"advance":21}, + "Ø":{"x":340,"y":103,"width":29,"height":27,"originX":1,"originY":25,"advance":28}, + "Ù":{"x":229,"y":0,"width":31,"height":35,"originX":2,"originY":33,"advance":27}, + "Ú":{"x":260,"y":0,"width":31,"height":35,"originX":2,"originY":33,"advance":27}, + "Û":{"x":433,"y":0,"width":31,"height":34,"originX":2,"originY":32,"advance":27}, + "Ü":{"x":233,"y":40,"width":31,"height":33,"originX":2,"originY":31,"advance":27}, + "Ý":{"x":88,"y":40,"width":28,"height":34,"originX":2,"originY":32,"advance":22}, + "Þ":{"x":24,"y":130,"width":24,"height":27,"originX":2,"originY":25,"advance":21}, + "ß":{"x":103,"y":74,"width":23,"height":29,"originX":2,"originY":27,"advance":19}, + "à":{"x":339,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "á":{"x":357,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "â":{"x":375,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "ã":{"x":393,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "ä":{"x":105,"y":157,"width":18,"height":26,"originX":1,"originY":24,"advance":15}, + "å":{"x":411,"y":130,"width":18,"height":27,"originX":1,"originY":25,"advance":15}, + "æ":{"x":437,"y":157,"width":23,"height":19,"originX":1,"originY":17,"advance":21}, + "ç":{"x":311,"y":74,"width":17,"height":29,"originX":1,"originY":17,"advance":15}, + "è":{"x":446,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "é":{"x":463,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ê":{"x":480,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ë":{"x":497,"y":130,"width":17,"height":27,"originX":1,"originY":25,"advance":14}, + "ì":{"x":571,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "í":{"x":544,"y":130,"width":14,"height":27,"originX":2,"originY":25,"advance":9}, + "î":{"x":584,"y":130,"width":13,"height":27,"originX":2,"originY":25,"advance":9}, + "ï":{"x":123,"y":157,"width":16,"height":26,"originX":3,"originY":24,"advance":9}, + "ð":{"x":254,"y":74,"width":20,"height":29,"originX":1,"originY":27,"advance":18}, + "ñ":{"x":40,"y":157,"width":23,"height":26,"originX":2,"originY":24,"advance":19}, + "ò":{"x":221,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ó":{"x":241,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ô":{"x":261,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "õ":{"x":281,"y":130,"width":20,"height":27,"originX":1,"originY":25,"advance":18}, + "ö":{"x":85,"y":157,"width":20,"height":26,"originX":1,"originY":24,"advance":18}, + "÷":{"x":96,"y":184,"width":22,"height":18,"originX":0,"originY":18,"advance":21}, + "ø":{"x":501,"y":157,"width":20,"height":19,"originX":1,"originY":17,"advance":18}, + "ù":{"x":93,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "ú":{"x":115,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "û":{"x":137,"y":130,"width":22,"height":27,"originX":1,"originY":25,"advance":19}, + "ü":{"x":63,"y":157,"width":22,"height":26,"originX":1,"originY":24,"advance":19}, + "ý":{"x":124,"y":0,"width":21,"height":37,"originX":2,"originY":25,"advance":16}, + "þ":{"x":0,"y":0,"width":22,"height":40,"originX":2,"originY":28,"advance":19}, + "ÿ":{"x":183,"y":0,"width":21,"height":36,"originX":2,"originY":24,"advance":16} + } +} diff --git a/graphics/dsmapfont.license b/graphics/dsmapfont.license new file mode 100644 index 000000000..7436817b0 --- /dev/null +++ b/graphics/dsmapfont.license @@ -0,0 +1,93 @@ +Copyright 2017 The EB Garamond Project Authors (https://github.com/octaviopardo/EBGaramond12) + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/graphics/dsmapfont.png b/graphics/dsmapfont.png new file mode 100644 index 0000000000000000000000000000000000000000..89c9033c3c4a66566785dce98a54a7818c24a3f7 GIT binary patch literal 59254 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 literal 0 HcmV?d00001 diff --git a/graphics/dsmapfont.txt b/graphics/dsmapfont.txt new file mode 100644 index 000000000..345dc361f --- /dev/null +++ b/graphics/dsmapfont.txt @@ -0,0 +1,257 @@ +36 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 7 +0 157 9 27 0 25 10 +268 184 13 13 0 26 13 +429 74 20 28 2 23 17 +346 40 18 33 1 27 16 +357 74 28 28 2 25 24 +9 157 31 26 1 24 28 +281 184 8 13 0 26 8 +145 0 13 37 1 27 11 +158 0 13 37 1 27 11 +218 184 15 15 1 26 12 +191 157 23 22 1 20 21 +233 184 11 14 2 7 9 +387 184 13 8 1 11 10 +362 184 9 9 0 7 9 +516 40 18 30 2 25 14 +201 130 20 27 1 25 18 +429 130 17 27 -1 25 18 +159 130 21 27 1 25 18 +274 74 19 29 0 25 18 +71 130 22 27 2 25 18 +293 74 18 29 0 25 18 +469 74 19 28 0 26 18 +408 74 21 28 1 25 18 +301 130 19 27 0 25 18 +449 74 20 28 0 25 18 +43 184 9 19 0 17 9 +180 157 11 24 2 16 8 +229 157 22 21 1 19 20 +289 184 23 12 1 15 21 +251 157 22 21 1 19 20 +530 130 14 27 0 25 14 +328 74 29 28 1 21 27 +565 40 30 29 2 27 25 +533 103 25 27 2 25 22 +425 103 27 27 1 25 26 +193 103 30 27 1 25 27 +48 130 23 27 1 25 20 +180 130 21 27 1 25 19 +369 103 28 27 1 25 26 +69 103 31 27 1 25 29 +514 130 16 27 2 25 13 +349 0 19 35 5 25 13 +253 103 29 27 1 25 26 +558 103 24 27 1 25 21 +550 74 36 27 2 25 33 +36 103 33 27 2 25 29 +282 103 29 27 1 25 27 +0 130 24 27 2 25 21 +38 0 35 37 1 25 27 +100 103 31 27 2 25 26 +320 130 19 27 1 25 17 +0 74 28 29 1 27 24 +131 103 31 27 2 25 27 +311 103 29 27 2 25 25 +511 74 39 27 2 25 34 +162 103 31 27 3 25 26 +397 103 28 27 2 25 22 +56 74 24 29 1 27 22 +217 0 12 36 -2 27 12 +534 40 18 30 2 25 14 +204 0 13 36 2 27 12 +183 184 20 16 1 24 18 +414 184 24 6 2 -3 19 +312 184 10 11 1 25 8 +521 157 18 19 1 17 15 +126 74 22 29 2 27 19 +539 157 17 19 1 17 15 +472 40 22 30 1 27 19 +556 157 17 19 1 17 14 +234 74 20 29 2 27 12 +192 74 21 29 2 17 16 +449 40 23 30 2 28 19 +558 130 13 27 2 25 9 +171 0 12 37 3 25 9 +80 74 23 29 2 27 18 +552 40 13 30 2 28 9 +273 157 32 20 2 18 28 +305 157 23 20 2 18 19 +481 157 20 19 1 17 18 +494 40 22 30 2 18 19 +148 74 22 29 1 17 19 +391 157 16 20 1 18 13 +15 184 14 19 1 17 12 +214 157 15 22 1 20 12 +328 157 22 20 1 18 19 +350 157 21 20 2 17 16 +407 157 30 19 2 17 26 +460 157 21 19 2 17 16 +213 74 21 29 2 17 16 +573 157 17 19 1 17 14 +368 0 16 35 1 27 14 +22 0 8 39 -1 27 10 +384 0 16 35 2 27 14 +332 184 20 9 1 16 19 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +502 74 9 28 0 20 10 +162 157 18 25 1 22 15 +385 74 23 28 3 25 19 +371 157 20 20 1 19 18 +452 103 27 27 2 25 22 +30 0 8 39 -1 27 10 +364 40 17 33 1 25 15 +371 184 16 8 2 24 11 +479 103 27 27 1 25 24 +29 184 14 19 1 22 12 +52 184 22 18 0 17 21 +137 184 23 17 1 16 22 +438 184 3 3 1 1 0 +506 103 27 27 1 25 24 +400 184 14 7 1 23 11 +254 184 14 13 1 25 11 +139 157 23 25 1 25 21 +203 184 15 16 2 30 11 +160 184 12 17 1 31 10 +322 184 10 11 1 25 8 +170 74 22 29 0 17 20 +100 0 24 37 1 25 22 +352 184 10 9 1 12 8 +244 184 10 14 1 2 8 +172 184 11 17 1 31 9 +0 184 15 19 2 22 11 +74 184 22 18 0 17 21 +397 40 26 31 1 27 24 +28 74 28 29 1 25 26 +423 40 26 31 1 27 23 +488 74 14 28 0 20 14 +464 0 30 34 2 32 25 +494 0 30 34 2 32 25 +524 0 30 34 2 32 25 +554 0 30 34 2 32 25 +264 40 30 33 2 31 25 +0 40 30 34 2 32 25 +0 103 36 27 3 25 32 +73 0 27 37 1 25 26 +116 40 23 34 1 32 20 +139 40 23 34 1 32 20 +162 40 23 34 1 32 20 +323 40 23 33 1 31 20 +185 40 16 34 2 32 13 +201 40 16 34 2 32 13 +217 40 16 34 2 32 13 +381 40 16 33 2 31 13 +223 103 30 27 1 25 27 +400 0 33 34 2 32 29 +291 0 29 35 1 33 27 +320 0 29 35 1 33 27 +30 40 29 34 1 32 27 +59 40 29 34 1 32 27 +294 40 29 33 1 31 27 +118 184 19 18 -1 18 21 +340 103 29 27 1 25 28 +229 0 31 35 2 33 27 +260 0 31 35 2 33 27 +433 0 31 34 2 32 27 +233 40 31 33 2 31 27 +88 40 28 34 2 32 22 +24 130 24 27 2 25 21 +103 74 23 29 2 27 19 +339 130 18 27 1 25 15 +357 130 18 27 1 25 15 +375 130 18 27 1 25 15 +393 130 18 27 1 25 15 +105 157 18 26 1 24 15 +411 130 18 27 1 25 15 +437 157 23 19 1 17 21 +311 74 17 29 1 17 15 +446 130 17 27 1 25 14 +463 130 17 27 1 25 14 +480 130 17 27 1 25 14 +497 130 17 27 1 25 14 +571 130 13 27 2 25 9 +544 130 14 27 2 25 9 +584 130 13 27 2 25 9 +123 157 16 26 3 24 9 +254 74 20 29 1 27 18 +40 157 23 26 2 24 19 +221 130 20 27 1 25 18 +241 130 20 27 1 25 18 +261 130 20 27 1 25 18 +281 130 20 27 1 25 18 +85 157 20 26 1 24 18 +96 184 22 18 0 18 21 +501 157 20 19 1 17 18 +93 130 22 27 1 25 19 +115 130 22 27 1 25 19 +137 130 22 27 1 25 19 +63 157 22 26 1 24 19 +124 0 21 37 2 25 16 +0 0 22 40 2 28 19 +183 0 21 36 2 24 16 diff --git a/graphics/dsmapfont_sub.json b/graphics/dsmapfont_sub.json new file mode 100644 index 000000000..63a8100aa --- /dev/null +++ b/graphics/dsmapfont_sub.json @@ -0,0 +1,199 @@ +{ + "name": "EB Garamond Medium", + "size": 12, + "bold": false, + "italic": false, + "width": 245, + "height": 100, + "characters": { + "0":{"x":65,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "1":{"x":60,"y":68,"width":9,"height":12,"originX":1,"originY":10,"advance":6}, + "2":{"x":75,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "3":{"x":85,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "4":{"x":95,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "5":{"x":69,"y":68,"width":9,"height":12,"originX":1,"originY":10,"advance":6}, + "6":{"x":105,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "7":{"x":115,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "8":{"x":125,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "9":{"x":135,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "!":{"x":175,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "\"":{"x":133,"y":91,"width":8,"height":7,"originX":2,"originY":10,"advance":4}, + "#":{"x":55,"y":56,"width":10,"height":12,"originX":2,"originY":9,"advance":6}, + "$":{"x":43,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + "%":{"x":21,"y":30,"width":12,"height":13,"originX":2,"originY":10,"advance":8}, + "&":{"x":166,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "'":{"x":162,"y":91,"width":6,"height":7,"originX":2,"originY":10,"advance":3}, + "(":{"x":77,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":4}, + ")":{"x":85,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":4}, + "*":{"x":91,"y":91,"width":8,"height":8,"originX":2,"originY":10,"advance":4}, + "+":{"x":32,"y":80,"width":11,"height":10,"originX":2,"originY":8,"advance":7}, + ",":{"x":141,"y":91,"width":7,"height":7,"originX":2,"originY":3,"advance":3}, + "-":{"x":218,"y":91,"width":7,"height":5,"originX":2,"originY":5,"advance":3}, + ".":{"x":186,"y":91,"width":7,"height":6,"originX":2,"originY":4,"advance":3}, + "/":{"x":52,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + ":":{"x":60,"y":91,"width":7,"height":9,"originX":2,"originY":7,"advance":3}, + ";":{"x":18,"y":80,"width":7,"height":11,"originX":2,"originY":7,"advance":3}, + "<":{"x":54,"y":80,"width":10,"height":10,"originX":2,"originY":8,"advance":7}, + "=":{"x":122,"y":91,"width":11,"height":7,"originX":2,"originY":6,"advance":7}, + ">":{"x":64,"y":80,"width":10,"height":10,"originX":2,"originY":8,"advance":7}, + "?":{"x":159,"y":68,"width":8,"height":12,"originX":2,"originY":10,"advance":5}, + "@":{"x":179,"y":30,"width":13,"height":12,"originX":2,"originY":8,"advance":9}, + "A":{"x":8,"y":30,"width":13,"height":13,"originX":2,"originY":11,"advance":8}, + "B":{"x":151,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "C":{"x":91,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":9}, + "D":{"x":192,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "E":{"x":162,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "F":{"x":145,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "G":{"x":205,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "H":{"x":138,"y":30,"width":14,"height":12,"originX":2,"originY":10,"advance":10}, + "I":{"x":167,"y":68,"width":8,"height":12,"originX":2,"originY":10,"advance":4}, + "J":{"x":197,"y":16,"width":9,"height":14,"originX":3,"originY":10,"advance":4}, + "K":{"x":218,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "L":{"x":173,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "M":{"x":108,"y":30,"width":15,"height":12,"originX":2,"originY":10,"advance":11}, + "N":{"x":152,"y":30,"width":14,"height":12,"originX":2,"originY":10,"advance":10}, + "O":{"x":231,"y":30,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "P":{"x":184,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "Q":{"x":10,"y":0,"width":15,"height":15,"originX":2,"originY":10,"advance":9}, + "R":{"x":0,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "S":{"x":155,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "T":{"x":13,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":8}, + "U":{"x":26,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "V":{"x":39,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":8}, + "W":{"x":92,"y":30,"width":16,"height":12,"originX":2,"originY":10,"advance":11}, + "X":{"x":52,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Y":{"x":103,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":7}, + "Z":{"x":195,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "[":{"x":109,"y":0,"width":7,"height":15,"originX":1,"originY":10,"advance":4}, + "\\":{"x":61,"y":30,"width":9,"height":13,"originX":2,"originY":10,"advance":5}, + "]":{"x":116,"y":0,"width":7,"height":15,"originX":2,"originY":10,"advance":4}, + "^":{"x":81,"y":91,"width":10,"height":8,"originX":2,"originY":9,"advance":6}, + "_":{"x":199,"y":91,"width":11,"height":5,"originX":2,"originY":1,"advance":6}, + "`":{"x":148,"y":91,"width":7,"height":7,"originX":2,"originY":10,"advance":3}, + "a":{"x":225,"y":80,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "b":{"x":165,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "c":{"x":234,"y":80,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "d":{"x":206,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "e":{"x":0,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "f":{"x":175,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":4}, + "g":{"x":185,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":6}, + "h":{"x":33,"y":30,"width":10,"height":13,"originX":2,"originY":11,"advance":6}, + "i":{"x":25,"y":80,"width":7,"height":11,"originX":2,"originY":9,"advance":3}, + "j":{"x":93,"y":0,"width":8,"height":15,"originX":3,"originY":10,"advance":3}, + "k":{"x":195,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "l":{"x":78,"y":30,"width":7,"height":13,"originX":2,"originY":11,"advance":3}, + "m":{"x":92,"y":80,"width":14,"height":9,"originX":2,"originY":7,"advance":9}, + "n":{"x":119,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "o":{"x":185,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":6}, + "p":{"x":205,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":6}, + "q":{"x":217,"y":44,"width":11,"height":12,"originX":2,"originY":7,"advance":6}, + "r":{"x":9,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":4}, + "s":{"x":36,"y":91,"width":8,"height":9,"originX":2,"originY":7,"advance":4}, + "t":{"x":84,"y":80,"width":8,"height":10,"originX":2,"originY":8,"advance":4}, + "u":{"x":43,"y":80,"width":11,"height":10,"originX":2,"originY":8,"advance":6}, + "v":{"x":195,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":5}, + "w":{"x":106,"y":80,"width":13,"height":9,"originX":2,"originY":7,"advance":9}, + "x":{"x":205,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":5}, + "y":{"x":215,"y":56,"width":10,"height":12,"originX":2,"originY":7,"advance":5}, + "z":{"x":18,"y":91,"width":9,"height":9,"originX":2,"originY":7,"advance":5}, + "{":{"x":68,"y":0,"width":9,"height":15,"originX":2,"originY":10,"advance":5}, + "|":{"x":123,"y":0,"width":5,"height":15,"originX":1,"originY":10,"advance":3}, + "}":{"x":101,"y":0,"width":8,"height":15,"originX":2,"originY":10,"advance":5}, + "~":{"x":168,"y":91,"width":10,"height":6,"originX":2,"originY":7,"advance":6}, + "¡":{"x":85,"y":30,"width":7,"height":13,"originX":2,"originY":8,"advance":3}, + "¢":{"x":224,"y":68,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "£":{"x":225,"y":56,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "¤":{"x":74,"y":80,"width":10,"height":10,"originX":2,"originY":9,"advance":6}, + "¥":{"x":115,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":7}, + "¦":{"x":128,"y":0,"width":5,"height":15,"originX":1,"originY":10,"advance":3}, + "§":{"x":206,"y":16,"width":9,"height":14,"originX":2,"originY":10,"advance":5}, + "¨":{"x":178,"y":91,"width":8,"height":6,"originX":2,"originY":9,"advance":4}, + "©":{"x":127,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":8}, + "ª":{"x":44,"y":91,"width":8,"height":9,"originX":2,"originY":9,"advance":4}, + "«":{"x":130,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "¬":{"x":141,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "­":{"x":225,"y":91,"width":3,"height":3,"originX":1,"originY":1,"advance":0}, + "®":{"x":139,"y":44,"width":12,"height":12,"originX":2,"originY":10,"advance":8}, + "¯":{"x":210,"y":91,"width":8,"height":5,"originX":2,"originY":9,"advance":4}, + "°":{"x":99,"y":91,"width":8,"height":8,"originX":2,"originY":10,"advance":4}, + "±":{"x":228,"y":44,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "²":{"x":107,"y":91,"width":8,"height":8,"originX":2,"originY":12,"advance":4}, + "³":{"x":67,"y":91,"width":7,"height":9,"originX":2,"originY":13,"advance":3}, + "´":{"x":155,"y":91,"width":7,"height":7,"originX":2,"originY":10,"advance":3}, + "µ":{"x":235,"y":56,"width":10,"height":12,"originX":1,"originY":7,"advance":7}, + "¶":{"x":37,"y":0,"width":11,"height":15,"originX":2,"originY":10,"advance":7}, + "·":{"x":193,"y":91,"width":6,"height":6,"originX":2,"originY":6,"advance":3}, + "¸":{"x":115,"y":91,"width":7,"height":8,"originX":2,"originY":3,"advance":3}, + "¹":{"x":74,"y":91,"width":7,"height":9,"originX":2,"originY":13,"advance":3}, + "º":{"x":52,"y":91,"width":8,"height":9,"originX":2,"originY":9,"advance":4}, + "»":{"x":152,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "¼":{"x":117,"y":16,"width":12,"height":14,"originX":2,"originY":11,"advance":8}, + "½":{"x":147,"y":0,"width":13,"height":14,"originX":2,"originY":11,"advance":9}, + "¾":{"x":129,"y":16,"width":12,"height":14,"originX":2,"originY":11,"advance":8}, + "¿":{"x":70,"y":30,"width":8,"height":13,"originX":2,"originY":8,"advance":5}, + "À":{"x":160,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Á":{"x":173,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Â":{"x":186,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Ã":{"x":199,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Ä":{"x":212,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Å":{"x":225,"y":0,"width":13,"height":14,"originX":2,"originY":12,"advance":8}, + "Æ":{"x":123,"y":30,"width":15,"height":12,"originX":2,"originY":10,"advance":11}, + "Ç":{"x":25,"y":0,"width":12,"height":15,"originX":2,"originY":10,"advance":9}, + "È":{"x":153,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "É":{"x":164,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ê":{"x":175,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ë":{"x":186,"y":16,"width":11,"height":14,"originX":2,"originY":12,"advance":7}, + "Ì":{"x":215,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Í":{"x":223,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Î":{"x":231,"y":16,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Ï":{"x":0,"y":30,"width":8,"height":14,"originX":2,"originY":12,"advance":4}, + "Ð":{"x":65,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Ñ":{"x":133,"y":0,"width":14,"height":14,"originX":2,"originY":12,"advance":10}, + "Ò":{"x":0,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ó":{"x":13,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ô":{"x":26,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Õ":{"x":39,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ö":{"x":52,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "×":{"x":27,"y":91,"width":9,"height":9,"originX":1,"originY":8,"advance":7}, + "Ø":{"x":78,"y":44,"width":13,"height":12,"originX":2,"originY":10,"advance":9}, + "Ù":{"x":65,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ú":{"x":78,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Û":{"x":91,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ü":{"x":104,"y":16,"width":13,"height":14,"originX":2,"originY":12,"advance":9}, + "Ý":{"x":141,"y":16,"width":12,"height":14,"originX":2,"originY":12,"advance":7}, + "Þ":{"x":0,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "ß":{"x":0,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "à":{"x":78,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "á":{"x":87,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "â":{"x":96,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ã":{"x":105,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ä":{"x":233,"y":68,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "å":{"x":114,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "æ":{"x":163,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "ç":{"x":123,"y":68,"width":9,"height":12,"originX":2,"originY":7,"advance":5}, + "è":{"x":132,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "é":{"x":141,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ê":{"x":150,"y":68,"width":9,"height":12,"originX":2,"originY":10,"advance":5}, + "ë":{"x":0,"y":80,"width":9,"height":11,"originX":2,"originY":9,"advance":5}, + "ì":{"x":182,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "í":{"x":189,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "î":{"x":196,"y":68,"width":7,"height":12,"originX":2,"originY":10,"advance":3}, + "ï":{"x":9,"y":80,"width":9,"height":11,"originX":3,"originY":9,"advance":3}, + "ð":{"x":10,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ñ":{"x":11,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":7}, + "ò":{"x":20,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ó":{"x":30,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ô":{"x":40,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "õ":{"x":50,"y":68,"width":10,"height":12,"originX":2,"originY":10,"advance":6}, + "ö":{"x":214,"y":68,"width":10,"height":11,"originX":2,"originY":9,"advance":6}, + "÷":{"x":174,"y":80,"width":11,"height":9,"originX":2,"originY":7,"advance":7}, + "ø":{"x":215,"y":80,"width":10,"height":9,"originX":2,"originY":7,"advance":6}, + "ù":{"x":22,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "ú":{"x":33,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "û":{"x":44,"y":56,"width":11,"height":12,"originX":2,"originY":10,"advance":6}, + "ü":{"x":203,"y":68,"width":11,"height":11,"originX":2,"originY":9,"advance":6}, + "ý":{"x":48,"y":0,"width":10,"height":15,"originX":2,"originY":10,"advance":5}, + "þ":{"x":0,"y":0,"width":10,"height":16,"originX":2,"originY":11,"advance":6}, + "ÿ":{"x":58,"y":0,"width":10,"height":15,"originX":2,"originY":10,"advance":5} + } +} diff --git a/graphics/dsmapfont_sub.png b/graphics/dsmapfont_sub.png new file mode 100644 index 0000000000000000000000000000000000000000..2b8877e22e8ccb1d3e1a8f0ddf47d1657210f0fa GIT binary patch literal 12478 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 literal 0 HcmV?d00001 diff --git a/graphics/dsmapfont_sub.txt b/graphics/dsmapfont_sub.txt new file mode 100644 index 000000000..b6954092c --- /dev/null +++ b/graphics/dsmapfont_sub.txt @@ -0,0 +1,257 @@ +12 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 3 +175 68 7 12 2 10 3 +133 91 8 7 2 10 4 +55 56 10 12 2 9 6 +43 30 9 13 2 10 5 +21 30 12 13 2 10 8 +166 30 13 12 2 10 9 +162 91 6 7 2 10 3 +77 0 8 15 2 10 4 +85 0 8 15 2 10 4 +91 91 8 8 2 10 4 +32 80 11 10 2 8 7 +141 91 7 7 2 3 3 +218 91 7 5 2 5 3 +186 91 7 6 2 4 3 +52 30 9 13 2 10 5 +65 56 10 12 2 10 6 +60 68 9 12 1 10 6 +75 56 10 12 2 10 6 +85 56 10 12 2 10 6 +95 56 10 12 2 10 6 +69 68 9 12 1 10 6 +105 56 10 12 2 10 6 +115 56 10 12 2 10 6 +125 56 10 12 2 10 6 +135 56 10 12 2 10 6 +60 91 7 9 2 7 3 +18 80 7 11 2 7 3 +54 80 10 10 2 8 7 +122 91 11 7 2 6 7 +64 80 10 10 2 8 7 +159 68 8 12 2 10 5 +179 30 13 12 2 8 9 +8 30 13 13 2 11 8 +151 44 11 12 2 10 7 +91 44 12 12 2 10 9 +192 30 13 12 2 10 9 +162 44 11 12 2 10 7 +145 56 10 12 2 10 6 +205 30 13 12 2 10 9 +138 30 14 12 2 10 10 +167 68 8 12 2 10 4 +197 16 9 14 3 10 4 +218 30 13 12 2 10 9 +173 44 11 12 2 10 7 +108 30 15 12 2 10 11 +152 30 14 12 2 10 10 +231 30 13 12 2 10 9 +184 44 11 12 2 10 7 +10 0 15 15 2 10 9 +0 44 13 12 2 10 9 +155 56 10 12 2 10 6 +13 44 13 12 2 10 8 +26 44 13 12 2 10 9 +39 44 13 12 2 10 8 +92 30 16 12 2 10 11 +52 44 13 12 2 10 9 +103 44 12 12 2 10 7 +195 44 11 12 2 10 7 +109 0 7 15 1 10 4 +61 30 9 13 2 10 5 +116 0 7 15 2 10 4 +81 91 10 8 2 9 6 +199 91 11 5 2 1 6 +148 91 7 7 2 10 3 +225 80 9 9 2 7 5 +165 56 10 12 2 10 6 +234 80 9 9 2 7 5 +206 44 11 12 2 10 6 +0 91 9 9 2 7 5 +175 56 10 12 2 10 4 +185 56 10 12 2 7 6 +33 30 10 13 2 11 6 +25 80 7 11 2 9 3 +93 0 8 15 3 10 3 +195 56 10 12 2 10 6 +78 30 7 13 2 11 3 +92 80 14 9 2 7 9 +119 80 11 9 2 7 7 +185 80 10 9 2 7 6 +205 56 10 12 2 7 6 +217 44 11 12 2 7 6 +9 91 9 9 2 7 4 +36 91 8 9 2 7 4 +84 80 8 10 2 8 4 +43 80 11 10 2 8 6 +195 80 10 9 2 7 5 +106 80 13 9 2 7 9 +205 80 10 9 2 7 5 +215 56 10 12 2 7 5 +18 91 9 9 2 7 5 +68 0 9 15 2 10 5 +123 0 5 15 1 10 3 +101 0 8 15 2 10 5 +168 91 10 6 2 7 6 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +0 0 0 0 0 0 0 +85 30 7 13 2 8 3 +224 68 9 11 2 9 5 +225 56 10 12 2 10 6 +74 80 10 10 2 9 6 +115 44 12 12 2 10 7 +128 0 5 15 1 10 3 +206 16 9 14 2 10 5 +178 91 8 6 2 9 4 +127 44 12 12 2 10 8 +44 91 8 9 2 9 4 +130 80 11 9 2 7 7 +141 80 11 9 2 7 7 +225 91 3 3 1 1 0 +139 44 12 12 2 10 8 +210 91 8 5 2 9 4 +99 91 8 8 2 10 4 +228 44 11 12 2 10 7 +107 91 8 8 2 12 4 +67 91 7 9 2 13 3 +155 91 7 7 2 10 3 +235 56 10 12 1 7 7 +37 0 11 15 2 10 7 +193 91 6 6 2 6 3 +115 91 7 8 2 3 3 +74 91 7 9 2 13 3 +52 91 8 9 2 9 4 +152 80 11 9 2 7 7 +117 16 12 14 2 11 8 +147 0 13 14 2 11 9 +129 16 12 14 2 11 8 +70 30 8 13 2 8 5 +160 0 13 14 2 12 8 +173 0 13 14 2 12 8 +186 0 13 14 2 12 8 +199 0 13 14 2 12 8 +212 0 13 14 2 12 8 +225 0 13 14 2 12 8 +123 30 15 12 2 10 11 +25 0 12 15 2 10 9 +153 16 11 14 2 12 7 +164 16 11 14 2 12 7 +175 16 11 14 2 12 7 +186 16 11 14 2 12 7 +215 16 8 14 2 12 4 +223 16 8 14 2 12 4 +231 16 8 14 2 12 4 +0 30 8 14 2 12 4 +65 44 13 12 2 10 9 +133 0 14 14 2 12 10 +0 16 13 14 2 12 9 +13 16 13 14 2 12 9 +26 16 13 14 2 12 9 +39 16 13 14 2 12 9 +52 16 13 14 2 12 9 +27 91 9 9 1 8 7 +78 44 13 12 2 10 9 +65 16 13 14 2 12 9 +78 16 13 14 2 12 9 +91 16 13 14 2 12 9 +104 16 13 14 2 12 9 +141 16 12 14 2 12 7 +0 56 11 12 2 10 7 +0 68 10 12 2 10 6 +78 68 9 12 2 10 5 +87 68 9 12 2 10 5 +96 68 9 12 2 10 5 +105 68 9 12 2 10 5 +233 68 9 11 2 9 5 +114 68 9 12 2 10 5 +163 80 11 9 2 7 7 +123 68 9 12 2 7 5 +132 68 9 12 2 10 5 +141 68 9 12 2 10 5 +150 68 9 12 2 10 5 +0 80 9 11 2 9 5 +182 68 7 12 2 10 3 +189 68 7 12 2 10 3 +196 68 7 12 2 10 3 +9 80 9 11 3 9 3 +10 68 10 12 2 10 6 +11 56 11 12 2 10 7 +20 68 10 12 2 10 6 +30 68 10 12 2 10 6 +40 68 10 12 2 10 6 +50 68 10 12 2 10 6 +214 68 10 11 2 9 6 +174 80 11 9 2 7 7 +215 80 10 9 2 7 6 +22 56 11 12 2 10 6 +33 56 11 12 2 10 6 +44 56 11 12 2 10 6 +203 68 11 11 2 9 6 +48 0 10 15 2 10 5 +0 0 10 16 2 11 6 +58 0 10 15 2 10 5 diff --git a/language.def_menu b/language.def_menu index 6ce6e8f60..30fe4e45a 100644 --- a/language.def_menu +++ b/language.def_menu @@ -189,6 +189,7 @@ SWWM_FF_UNRESTRICTED = "Unrestricted"; SWWM_FF_INCOMING = "Block Incoming"; SWWM_FF_ALL = "Block All"; SWWM_DAMNUMS_COLOR = "Color Damage Numbers"; +SWWM_SHOWMAPTITLE = "Animated Map Title"; SWWM_MM_ENABLE = "Show Minimap"; SWWM_MM_MISSILES = "Projectiles In Minimap"; SWWM_MM_COLORSET = "Minimap Color Set"; @@ -288,6 +289,7 @@ TOOLTIP_SWWM_TAGCOLOR = "Changes the color for the glowing tags on various parts TOOLTIP_SWWM_BONKHAMMER = "The Combat Hammer will make funny sounds when hitting enemies."; TOOLTIP_SWWM_FRIENDLYFIRE = "Controls whether friendlies can deal damage to or take damage from the player."; TOOLTIP_SWWM_DAMNUMS_COLOR = "Damage numbers will change color based on the type of damage dealt. Otherwise, default to red."; +TOOLTIP_SWWM_SHOWMAPTITLE = "Shows an animated title card when entering a map. It's just like Dark Souls!"; TOOLTIP_SWWMACHIEVEMENTMENU = "View your achievements."; TOOLTIP_SWWM_MM_ENABLE = "Displays a minimap on the top right corner of the screen."; TOOLTIP_SWWM_MM_MISSILES = "Displays projectiles in the minimap. Can be toggled if this clutters too much."; diff --git a/language.es_menu b/language.es_menu index 22b05a2dc..3a69e1823 100644 --- a/language.es_menu +++ b/language.es_menu @@ -183,6 +183,7 @@ SWWM_UTITLE = "Opciones de Interfaz"; SWWM_BONKHAMMER = "Martillo Loco"; SWWM_FRIENDLYFIRE = "Fuego Amigo"; SWWM_DAMNUMS_COLOR = "Colorear Números de Daño"; +SWWM_SHOWMAPTITLE = "Título de Mapa Animado"; SWWM_FF_UNRESTRICTED = "Sin Restricción"; SWWM_FF_INCOMING = "Bloquear Entrante"; SWWM_FF_ALL = "Bloquear Todo"; @@ -286,6 +287,7 @@ TOOLTIP_SWWM_TAGCOLOR = "Cambia el color de las marcas brillantes en varias part TOOLTIP_SWWM_BONKHAMMER = "El Martillo de Combate hará ruídos graciosos al golpear enemigos."; TOOLTIP_SWWM_FRIENDLYFIRE = "Controla el que los aliados puedan causar daño o ser dañados por el jugador."; TOOLTIP_SWWM_DAMNUMS_COLOR = "Los números de daño cambiarán color en base al tipo de daño. De lo contrario, serán siempre rojos."; +TOOLTIP_SWWM_SHOWMAPTITLE = "Muestra una animación de título al entrar en un mapa. ¡Es igualito que Dark Souls!"; TOOLTIP_SWWMACHIEVEMENTMENU = "Revisa tus logros."; TOOLTIP_SWWM_MM_ENABLE = "Muestra un minimapa en la esquina superior derecha de la pantalla."; TOOLTIP_SWWM_MM_MISSILES = "Muestra proyectiles en el minimapa. Puede ser desactivado si causa problemas de visibilidad."; diff --git a/language.version b/language.version index 49f05f428..403152a32 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r360 \cu(Mon 22 Aug 17:51:39 CEST 2022)\c-"; -SWWM_SHORTVER="\cw1.3pre r360 \cu(2022-08-22 17:51:39)\c-"; +SWWM_MODVER="\cyDEMOLITIONIST \cw1.3pre r361 \cu(Mon 22 Aug 18:11:32 CEST 2022)\c-"; +SWWM_SHORTVER="\cw1.3pre r361 \cu(2022-08-22 18:11:32)\c-"; diff --git a/menudef.txt b/menudef.txt index b06714ec8..98ac7486e 100644 --- a/menudef.txt +++ b/menudef.txt @@ -170,6 +170,7 @@ OptionMenu "SWWMOptionMenu" } Option "$SWWM_NOINTROEX", "swwm_nointroex", "YesNo" Option "$SWWM_FILTERACHIEVEMENTS", "swwm_filterachievements", "SWWMFilterAchievements" + Option "$SWWM_SHOWMAPTITLE", "swwm_showmaptitle", "YesNo" StaticText " " StaticText "$SWWM_ETITLE", 1 Option "$SWWM_SHADOWS", "swwm_shadows", "YesNo" diff --git a/sndinfo.base b/sndinfo.base index 050ca6d1f..306cacf57 100644 --- a/sndinfo.base +++ b/sndinfo.base @@ -83,6 +83,7 @@ $random misc/flame { misc/flame1 misc/flame2 smisc/flame3 misc/flame4 } $limit misc/flame 32 misc/magitem sounds/general/magitem.ogg $limit misc/magitem 16 +misc/newarea sounds/general/AreaName.ogg misc/underwater sounds/general/uWater1a.ogg misc/underslime sounds/general/uGoop1.ogg diff --git a/zscript/hud/swwm_hudextra.zsc b/zscript/hud/swwm_hudextra.zsc index f2385ae40..97d681027 100644 --- a/zscript/hud/swwm_hudextra.zsc +++ b/zscript/hud/swwm_hudextra.zsc @@ -538,3 +538,250 @@ Class SWWMDialogueTrigger : Actor } override void Tick() {} } + +// I'm just doing this as an experiment, don't mind me + +Class DSMapTitle : HUDMessageBase +{ + Struct FntGlyph + { + int x, y, width, height, xofs, yofs, advance; + }; + + TextureID atlas, atlas_sub; + FntGlyph glyphs[256], glyphs_sub[256]; + int fheight, fheight_sub; + + String txt, txtsub; + int tics, holdtics, fadeintics, fadeouttics; + int ultics; + + // all the actual hard code + int MyStringWidth( String str ) + { + int w = 0; + int lw = 0; + int len = str.CodePointCount(); + for ( int i=0, pos=0; i 255 ) continue; + lw += glyphs[ch].advance; + // newline, restart line width + if ( ch == 0x0a ) + { + w = max(w,lw); + lw = 0; + } + } + w = max(w,lw); + return w; + } + int MySubStringWidth( String str ) + { + int w = 0; + int lw = 0; + int len = str.CodePointCount(); + for ( int i=0, pos=0; i 255 ) continue; + lw += glyphs_sub[ch].advance; + // newline, restart line width + if ( ch == 0x0a ) + { + w = max(w,lw); + lw = 0; + } + } + w = max(w,lw); + return w; + } + void MyDrawText( String str, double x, double y, Vector2 ss, double alpha = 1. ) + { + int len = str.CodePointCount(); + double xx = x; + double yy = y; + for ( int i=0, pos=0; i 255 ) continue; + if ( glyphs[ch].width && glyphs[ch].height ) + { + Screen.DrawTexture(atlas,false,xx-glyphs[ch].xofs,yy-glyphs[ch].yofs, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[ch].x,DTA_SrcY,glyphs[ch].y, + DTA_SrcWidth,glyphs[ch].width,DTA_SrcHeight,glyphs[ch].height, + DTA_DestWidth,glyphs[ch].width,DTA_DestHeight,glyphs[ch].height, + DTA_Alpha,alpha); + } + xx += glyphs[ch].advance; + // newline + if ( ch == 0x0a ) + { + xx = x; + yy += fheight; + } + } + } + void MySubDrawText( String str, double x, double y, Vector2 ss, double alpha = 1. ) + { + int len = str.CodePointCount(); + double xx = x; + double yy = y; + for ( int i=0, pos=0; i 255 ) continue; + if ( glyphs_sub[ch].width && glyphs_sub[ch].height ) + { + Screen.DrawTexture(atlas_sub,false,xx-glyphs_sub[ch].xofs,yy-glyphs_sub[ch].yofs, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs_sub[ch].x,DTA_SrcY,glyphs_sub[ch].y, + DTA_SrcWidth,glyphs_sub[ch].width,DTA_SrcHeight,glyphs_sub[ch].height, + DTA_DestWidth,glyphs_sub[ch].width,DTA_DestHeight,glyphs_sub[ch].height, + DTA_Alpha,alpha); + } + xx += glyphs_sub[ch].advance; + // newline + if ( ch == 0x0a ) + { + xx = x; + yy += fheight_sub; + } + } + } + // stretches the "_" glyph over a specific width, center-aligned + void DrawUnderline( double x, double y, Vector2 ss, double width, double alpha = 1. ) + { + double xx = x-width/2; + // l stem + Screen.DrawTexture(atlas,false,xx-4,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x,DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,4,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,4,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + // long + Screen.DrawTexture(atlas,false,xx,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x+4,DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,glyphs[95].width-8,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,width,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + // r stem + Screen.DrawTexture(atlas,false,xx+width,y, + DTA_VirtualWidthF,ss.x,DTA_VirtualHeightF,ss.y,DTA_KeepRatio,true, + DTA_SrcX,glyphs[95].x+(glyphs[95].width-4),DTA_SrcY,glyphs[95].y, + DTA_SrcWidth,4,DTA_SrcHeight,glyphs[95].height, + DTA_DestWidthF,4,DTA_DestHeight,glyphs[95].height, + DTA_Alpha,alpha); + } + + DSMapTitle Init() + { + txt = level.levelname; + txtsub = level.authorname; + if ( txt.Left(1) == "$" ) txt = StringTable.Localize(txt); + if ( txtsub.Left(1) == "$" ) txtsub = StringTable.Localize(txtsub); + tics = -10; + holdtics = 140; + fadeintics = 20; + fadeouttics = 40; + ultics = 50; + atlas = TexMan.CheckForTexture("graphics/dsmapfont.png",TexMan.Type_Any); + if ( !atlas.IsValid() || atlas.IsNull() ) ThrowAbortException("font atlas texture not found"); + let lmp = Wads.CheckNumForFullname("graphics/dsmapfont.txt"); + if ( lmp == -1 ) ThrowAbortException("font definition file not found"); + String dat = Wads.ReadLump(lmp); + Array list, ln; + // fucking Windows + dat.Replace("\r",""); + list.Clear(); + dat.Split(list,"\n"); + int ch = 0; + for ( int i=0; i holdtics+fadeintics+fadeouttics); + } + + override void Draw( int bottom, int visibility ) + { + if ( tics <= 0 ) return; + double hs = max(min(floor(Screen.GetWidth()/640.),floor(Screen.GetHeight()/360.)),1.); + Vector2 ss = (Screen.GetWidth(),Screen.GetHeight())/hs; + double fractic = System.GetTimeFrac(); + double ftics = tics+fractic; + double alpha = (ftics 0 ) mttics--; maptime++; // in case we start late? if ( multiplayer && !mpwarned ) @@ -435,6 +438,8 @@ Class SWWMStaticHandler : StaticEventHandler pt.SetInt(ct+1); } if ( gamestate != GS_LEVEL ) return; + if ( (mttics == 1) && swwm_showmaptitle ) + StatusBar.AttachMessage(new("DSMapTitle").Init(),-7777); CheckAllAchievements(); if ( gametic != checktic ) return; String cver = StringTable.Localize("$SWWM_SHORTVER");