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 000000000..89c9033c3 Binary files /dev/null and b/graphics/dsmapfont.png differ 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 000000000..2b8877e22 Binary files /dev/null and b/graphics/dsmapfont_sub.png differ 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");