Merge pull request #458 from NQNStudios:credits-overhaul
Auto-generated credits / Update the credits from IndieGOGO
This commit is contained in:
12
pkg/credits/Code.txt
Normal file
12
pkg/credits/Code.txt
Normal file
@@ -0,0 +1,12 @@
|
||||
Confirmed:
|
||||
- Khoth
|
||||
- Ormus
|
||||
- Chokboyz
|
||||
- Celtic Minstrel
|
||||
- Ben Scott
|
||||
- Sylae Corell
|
||||
- xq
|
||||
- Daerogami
|
||||
- NQNStudios
|
||||
- Sei Satzparad
|
||||
- Brendan Miller
|
||||
38
pkg/credits/Funding.txt
Normal file
38
pkg/credits/Funding.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
Confirmed:
|
||||
- Alan Elkins
|
||||
- Alan Monroe
|
||||
- Amanda Klecker
|
||||
- Andrew Flicker
|
||||
- Anonymous
|
||||
- Baste Nesse Buanes
|
||||
- Bret Rodabaugh
|
||||
- Dylan Nugent
|
||||
- Evan Mulrooney
|
||||
- Jake Harrelson
|
||||
- Jared Forcinito
|
||||
- Jeff Potter
|
||||
- Jeff Vogel
|
||||
- Jeremy Bracegirdle
|
||||
- Joel Joslin
|
||||
- Joshua Murphy
|
||||
- Juan Dionicio Becerra
|
||||
- Kelandon
|
||||
- Kelson (Andulos)
|
||||
- K L
|
||||
- Laura Nelson
|
||||
- Mariann Krizsan
|
||||
- Mike Lapinsky
|
||||
- Nick Chaimov
|
||||
- Nick Fisher
|
||||
- Nicole Tietz-Sokolskaya
|
||||
- Nikki Jeffery
|
||||
- Noah Nelson
|
||||
- Ruby Paterson
|
||||
- Samael
|
||||
- Sean Hayden
|
||||
- Souren Papazian
|
||||
- Tony Martyn
|
||||
- Tony Vazquez
|
||||
- Trent Nelson
|
||||
- Vida Krevs
|
||||
- William Hensley
|
||||
7
pkg/credits/Graphics.txt
Normal file
7
pkg/credits/Graphics.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Confirmed:
|
||||
- The Almighty
|
||||
Doer of Stuff
|
||||
- Mistb0rn
|
||||
- Celtic Minstrel
|
||||
- Kelyar-Ihrno
|
||||
- Jewels
|
||||
3
pkg/credits/Testing.txt
Normal file
3
pkg/credits/Testing.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
Confirmed:
|
||||
- The Almighty
|
||||
Doer of Stuff
|
||||
76
pkg/credits/about-boe-template.xml
Normal file
76
pkg/credits/about-boe-template.xml
Normal file
@@ -0,0 +1,76 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<!--
|
||||
{{Warning}}
|
||||
-->
|
||||
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
|
||||
<dialog defbtn='okay'>
|
||||
<!--
|
||||
TODO: This dialog contains out-of-date information, such as pricing.
|
||||
-->
|
||||
<pict type='dlog' num='16' top='6' left='6'/>
|
||||
<text top='6' left='50' width='420' height='33'>
|
||||
Blades of Exile v2.0 alpha <br/>
|
||||
Copyright 1997-2015, Spiderweb Software, Inc., All rights reserved.
|
||||
</text>
|
||||
<pane top='42' left='50' width='400' height='100'>
|
||||
<text size='large' top='42' left='150' width='300' height='17'>------ CREDITS ------</text>
|
||||
<!-- The height of this text needs to be 10 times the number of lines. -->
|
||||
<text top='52' left='50' width='400' height='240'>
|
||||
ORIGINAL GAME: <br/><br/><br/><br/><br/><br/>
|
||||
OPEN SOURCE CREDITS: {{0}}<br/><br/>
|
||||
SCENARIO FIXES AND UPDATES: <br/><br/>
|
||||
</text>
|
||||
<!-- This text is right-aligned and fills out the above text with sub-headings -->
|
||||
<text top='52' left='50' width='180' height='{{Height}}' align='right'>
|
||||
<br/>
|
||||
Concept, Design, Programming: <br/>
|
||||
Graphics: <br/>
|
||||
Business Manager: <br/>
|
||||
Title/Splash Screens: <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
Programming: {{1}}
|
||||
Graphics: {{2}}
|
||||
Testing and Troubleshooting: {{3}}
|
||||
Funding: {{4}}
|
||||
<br/><br/>
|
||||
Bandit Busywork: <br/>
|
||||
</text>
|
||||
<text top='52' left='250' width='230' height='{{Height}}'>
|
||||
<!-- ORIGINAL GAME --><br/>
|
||||
<!-- Concept, Design, Programming -->Jeff Vogel <br/>
|
||||
<!-- Graphics -->Andrew Hunter <br/>
|
||||
<!-- Business Manager -->Mariann Krizsan <br/>
|
||||
<!-- Title/Splash Screens -->James Ernest <br/>
|
||||
<br/><!-- OPEN SOURCE CREDITS --><br/>
|
||||
<!-- Programming -->{{5}}
|
||||
<!-- Graphics -->{{6}}
|
||||
<!-- Testing and Troubleshooting -->{{7}}
|
||||
<!-- Funding -->{{8}}
|
||||
<br/><!-- SCENARIO FIXES AND UPDATES --><br/>
|
||||
<!-- Bandit Busywork -->The Almighty Doer of Stuff <br/>
|
||||
</text>
|
||||
</pane>
|
||||
<text top='153' left='50' width='410' height='51'>
|
||||
Blades of Exile is brought to you by Spiderweb Software - <br/>
|
||||
"Where our aberrations become your reality." <br/>
|
||||
"Blades of Exile" and Spiderweb Software are trademarks of Spiderweb Software.
|
||||
</text>
|
||||
<text relative='pos-in pos' rel-anchor='prev' top='0' left='-8' width='424'>
|
||||
Open Blades of Exile is sustained by the hard work of passionate volunteers.
|
||||
We sincerely hope you enjoy, share, and discuss this game, and maybe even make and release your own scenario!<br/>
|
||||
Open Blades of Exile is a modification of Blades of Exile, created by Spiderweb Software, Inc. in 1997.
|
||||
It is released under GNU GPL 2.0+. The source code can be found here:
|
||||
</text>
|
||||
<text name= 'src' relative='pos-in pos' rel-anchor='prev' top='10' left='16' colour='link' underline='true'>
|
||||
https://github.com/calref/cboe/
|
||||
</text>
|
||||
<text relative='neg pos' rel-anchor='prev' top='0' left='16' width='353'>
|
||||
Comments and questions? The maintainers of Open Blades of Exile want to hear them.<br/>
|
||||
Open a ticket here:
|
||||
</text>
|
||||
<text name= 'issues' relative='pos-in pos' rel-anchor='prev' top='0' left='16' colour='link' underline='true'>
|
||||
https://github.com/calref/cboe/issues
|
||||
</text>
|
||||
<button name='okay' relative='neg' type='regular' top='30' left='70'>OK</button>
|
||||
</dialog>
|
||||
957
pkg/credits/font-8.bdf
Normal file
957
pkg/credits/font-8.bdf
Normal file
@@ -0,0 +1,957 @@
|
||||
STARTFONT 2.1
|
||||
FONT -FontForge-Untitled1-Regular-R-Normal--8-80-75-75-P-61-ISO8859-1
|
||||
SIZE 8 75 75
|
||||
FONTBOUNDINGBOX 15 11 -5 -2
|
||||
COMMENT "Generated by fontforge, http://fontforge.sourceforge.net"
|
||||
COMMENT "Copyright (c) 2024, Nat"
|
||||
STARTPROPERTIES 32
|
||||
FOUNDRY "FontForge"
|
||||
FAMILY_NAME "Untitled1"
|
||||
WEIGHT_NAME "Regular"
|
||||
SLANT "R"
|
||||
SETWIDTH_NAME "Normal"
|
||||
ADD_STYLE_NAME ""
|
||||
PIXEL_SIZE 8
|
||||
POINT_SIZE 80
|
||||
RESOLUTION_X 75
|
||||
RESOLUTION_Y 75
|
||||
SPACING "P"
|
||||
AVERAGE_WIDTH 61
|
||||
CHARSET_REGISTRY "ISO8859"
|
||||
CHARSET_ENCODING "1"
|
||||
FONTNAME_REGISTRY ""
|
||||
CHARSET_COLLECTIONS "ISOLatin1Encoding"
|
||||
FONT_NAME "Untitled1"
|
||||
FACE_NAME "Untitled1"
|
||||
COPYRIGHT "Copyright (c) 2024, Nat"
|
||||
FONT_VERSION "001.000"
|
||||
FONT_ASCENT 6
|
||||
FONT_DESCENT 2
|
||||
UNDERLINE_POSITION -1
|
||||
UNDERLINE_THICKNESS 1
|
||||
X_HEIGHT 5
|
||||
CAP_HEIGHT 7
|
||||
RAW_ASCENT 800
|
||||
RAW_DESCENT 200
|
||||
NORM_SPACE 3
|
||||
FIGURE_WIDTH 7
|
||||
AVG_LOWERCASE_WIDTH 59
|
||||
AVG_UPPERCASE_WIDTH 71
|
||||
ENDPROPERTIES
|
||||
CHARS 65
|
||||
STARTCHAR space
|
||||
ENCODING 32
|
||||
SWIDTH 375 0
|
||||
DWIDTH 3 0
|
||||
BBX 1 1 1 0
|
||||
BITMAP
|
||||
00
|
||||
ENDCHAR
|
||||
STARTCHAR exclam
|
||||
ENCODING 33
|
||||
SWIDTH 375 0
|
||||
DWIDTH 3 0
|
||||
BBX 2 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
00
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR quotedbl
|
||||
ENCODING 34
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 3 0 5
|
||||
BITMAP
|
||||
FC
|
||||
6C
|
||||
D8
|
||||
ENDCHAR
|
||||
STARTCHAR quotesingle
|
||||
ENCODING 39
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 3 0 5
|
||||
BITMAP
|
||||
E0
|
||||
60
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR parenleft
|
||||
ENCODING 40
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 8 1 0
|
||||
BITMAP
|
||||
60
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
60
|
||||
ENDCHAR
|
||||
STARTCHAR parenright
|
||||
ENCODING 41
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR comma
|
||||
ENCODING 44
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 3 0 -2
|
||||
BITMAP
|
||||
60
|
||||
60
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR hyphen
|
||||
ENCODING 45
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 1 0 3
|
||||
BITMAP
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR period
|
||||
ENCODING 46
|
||||
SWIDTH 375 0
|
||||
DWIDTH 3 0
|
||||
BBX 2 1 0 0
|
||||
BITMAP
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR slash
|
||||
ENCODING 47
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
18
|
||||
18
|
||||
30
|
||||
30
|
||||
60
|
||||
60
|
||||
C0
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR zero
|
||||
ENCODING 48
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
DC
|
||||
FC
|
||||
EC
|
||||
CC
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR colon
|
||||
ENCODING 58
|
||||
SWIDTH 375 0
|
||||
DWIDTH 3 0
|
||||
BBX 2 5 0 0
|
||||
BITMAP
|
||||
C0
|
||||
00
|
||||
00
|
||||
00
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR question
|
||||
ENCODING 63
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
0C
|
||||
18
|
||||
30
|
||||
30
|
||||
00
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR A
|
||||
ENCODING 65
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
30
|
||||
30
|
||||
78
|
||||
78
|
||||
CC
|
||||
FC
|
||||
CC
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR B
|
||||
ENCODING 66
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
F8
|
||||
CC
|
||||
CC
|
||||
F8
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR C
|
||||
ENCODING 67
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR D
|
||||
ENCODING 68
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
F0
|
||||
D8
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
D8
|
||||
F0
|
||||
ENDCHAR
|
||||
STARTCHAR E
|
||||
ENCODING 69
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
F8
|
||||
C0
|
||||
C0
|
||||
F0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR F
|
||||
ENCODING 70
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
F8
|
||||
C0
|
||||
C0
|
||||
F0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR G
|
||||
ENCODING 71
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
C0
|
||||
C0
|
||||
DC
|
||||
CC
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR H
|
||||
ENCODING 72
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
FC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR I
|
||||
ENCODING 73
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
FC
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
FC
|
||||
ENDCHAR
|
||||
STARTCHAR J
|
||||
ENCODING 74
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
0C
|
||||
0C
|
||||
0C
|
||||
0C
|
||||
0C
|
||||
CC
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR K
|
||||
ENCODING 75
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
D8
|
||||
F0
|
||||
E0
|
||||
E0
|
||||
F0
|
||||
D8
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR L
|
||||
ENCODING 76
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
F8
|
||||
ENDCHAR
|
||||
STARTCHAR M
|
||||
ENCODING 77
|
||||
SWIDTH 1125 0
|
||||
DWIDTH 9 0
|
||||
BBX 8 8 0 0
|
||||
BITMAP
|
||||
C3
|
||||
E7
|
||||
FF
|
||||
DB
|
||||
C3
|
||||
C3
|
||||
C3
|
||||
C3
|
||||
ENDCHAR
|
||||
STARTCHAR N
|
||||
ENCODING 78
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
EC
|
||||
EC
|
||||
FC
|
||||
FC
|
||||
DC
|
||||
DC
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR O
|
||||
ENCODING 79
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR P
|
||||
ENCODING 80
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
F8
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
F8
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR Q
|
||||
ENCODING 81
|
||||
SWIDTH 1000 0
|
||||
DWIDTH 8 0
|
||||
BBX 8 10 0 -2
|
||||
BITMAP
|
||||
7C
|
||||
C6
|
||||
C6
|
||||
C6
|
||||
C6
|
||||
D6
|
||||
DE
|
||||
7C
|
||||
06
|
||||
03
|
||||
ENDCHAR
|
||||
STARTCHAR R
|
||||
ENCODING 82
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
F8
|
||||
CC
|
||||
CC
|
||||
CC
|
||||
F8
|
||||
D8
|
||||
CC
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR S
|
||||
ENCODING 83
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
78
|
||||
CC
|
||||
C0
|
||||
78
|
||||
0C
|
||||
0C
|
||||
CC
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR T
|
||||
ENCODING 84
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
FC
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR U
|
||||
ENCODING 85
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR V
|
||||
ENCODING 86
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
CC
|
||||
78
|
||||
78
|
||||
78
|
||||
30
|
||||
30
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR W
|
||||
ENCODING 87
|
||||
SWIDTH 1375 0
|
||||
DWIDTH 11 0
|
||||
BBX 10 8 0 0
|
||||
BITMAP
|
||||
C0C0
|
||||
CCC0
|
||||
6D80
|
||||
7F80
|
||||
7F80
|
||||
3300
|
||||
3300
|
||||
3300
|
||||
ENDCHAR
|
||||
STARTCHAR X
|
||||
ENCODING 88
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
CC
|
||||
78
|
||||
30
|
||||
78
|
||||
FC
|
||||
CC
|
||||
CC
|
||||
ENDCHAR
|
||||
STARTCHAR Y
|
||||
ENCODING 89
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
CC
|
||||
CC
|
||||
FC
|
||||
78
|
||||
30
|
||||
30
|
||||
30
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR Z
|
||||
ENCODING 90
|
||||
SWIDTH 875 0
|
||||
DWIDTH 7 0
|
||||
BBX 6 8 0 0
|
||||
BITMAP
|
||||
FC
|
||||
0C
|
||||
0C
|
||||
38
|
||||
70
|
||||
C0
|
||||
C0
|
||||
FC
|
||||
ENDCHAR
|
||||
STARTCHAR a
|
||||
ENCODING 97
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
78
|
||||
D8
|
||||
D8
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR b
|
||||
ENCODING 98
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
C0
|
||||
F0
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
F0
|
||||
ENDCHAR
|
||||
STARTCHAR c
|
||||
ENCODING 99
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
C0
|
||||
C0
|
||||
D8
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR d
|
||||
ENCODING 100
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
18
|
||||
18
|
||||
78
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR e
|
||||
ENCODING 101
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
F8
|
||||
C0
|
||||
D8
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR f
|
||||
ENCODING 102
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
38
|
||||
60
|
||||
F0
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
ENDCHAR
|
||||
STARTCHAR g
|
||||
ENCODING 103
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 -2
|
||||
BITMAP
|
||||
78
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
78
|
||||
18
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR h
|
||||
ENCODING 104
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
C0
|
||||
F0
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
ENDCHAR
|
||||
STARTCHAR i
|
||||
ENCODING 105
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 8 0 0
|
||||
BITMAP
|
||||
60
|
||||
00
|
||||
E0
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
ENDCHAR
|
||||
STARTCHAR j
|
||||
ENCODING 106
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 8 11 -5 -2
|
||||
BITMAP
|
||||
80
|
||||
03
|
||||
00
|
||||
07
|
||||
03
|
||||
03
|
||||
03
|
||||
03
|
||||
03
|
||||
03
|
||||
0E
|
||||
ENDCHAR
|
||||
STARTCHAR k
|
||||
ENCODING 107
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 0
|
||||
BITMAP
|
||||
C0
|
||||
C0
|
||||
D8
|
||||
F0
|
||||
E0
|
||||
E0
|
||||
F0
|
||||
D8
|
||||
ENDCHAR
|
||||
STARTCHAR l
|
||||
ENCODING 108
|
||||
SWIDTH 500 0
|
||||
DWIDTH 4 0
|
||||
BBX 3 8 0 0
|
||||
BITMAP
|
||||
E0
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
ENDCHAR
|
||||
STARTCHAR m
|
||||
ENCODING 109
|
||||
SWIDTH 1125 0
|
||||
DWIDTH 9 0
|
||||
BBX 8 6 0 0
|
||||
BITMAP
|
||||
FE
|
||||
DB
|
||||
DB
|
||||
DB
|
||||
DB
|
||||
DB
|
||||
ENDCHAR
|
||||
STARTCHAR n
|
||||
ENCODING 110
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
F0
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
ENDCHAR
|
||||
STARTCHAR o
|
||||
ENCODING 111
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR p
|
||||
ENCODING 112
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 -2
|
||||
BITMAP
|
||||
F0
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
F0
|
||||
C0
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR q
|
||||
ENCODING 113
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 -2
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
78
|
||||
18
|
||||
18
|
||||
ENDCHAR
|
||||
STARTCHAR r
|
||||
ENCODING 114
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
F8
|
||||
E0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
C0
|
||||
ENDCHAR
|
||||
STARTCHAR s
|
||||
ENCODING 115
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
70
|
||||
D8
|
||||
70
|
||||
18
|
||||
D8
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR t
|
||||
ENCODING 116
|
||||
SWIDTH 625 0
|
||||
DWIDTH 5 0
|
||||
BBX 4 8 0 0
|
||||
BITMAP
|
||||
60
|
||||
60
|
||||
F0
|
||||
60
|
||||
60
|
||||
60
|
||||
60
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR u
|
||||
ENCODING 117
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
78
|
||||
ENDCHAR
|
||||
STARTCHAR v
|
||||
ENCODING 118
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 6 6 0 0
|
||||
BITMAP
|
||||
CC
|
||||
CC
|
||||
78
|
||||
78
|
||||
30
|
||||
30
|
||||
ENDCHAR
|
||||
STARTCHAR w
|
||||
ENCODING 119
|
||||
SWIDTH 1125 0
|
||||
DWIDTH 9 0
|
||||
BBX 8 6 0 0
|
||||
BITMAP
|
||||
C3
|
||||
C3
|
||||
7E
|
||||
7E
|
||||
3C
|
||||
3C
|
||||
ENDCHAR
|
||||
STARTCHAR x
|
||||
ENCODING 120
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
D8
|
||||
D8
|
||||
70
|
||||
70
|
||||
D8
|
||||
D8
|
||||
ENDCHAR
|
||||
STARTCHAR y
|
||||
ENCODING 121
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 8 0 -2
|
||||
BITMAP
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
D8
|
||||
78
|
||||
18
|
||||
70
|
||||
ENDCHAR
|
||||
STARTCHAR z
|
||||
ENCODING 122
|
||||
SWIDTH 750 0
|
||||
DWIDTH 6 0
|
||||
BBX 5 6 0 0
|
||||
BITMAP
|
||||
F8
|
||||
18
|
||||
30
|
||||
60
|
||||
C0
|
||||
F8
|
||||
ENDCHAR
|
||||
ENDFONT
|
||||
637
pkg/credits/font.sfd
Normal file
637
pkg/credits/font.sfd
Normal file
@@ -0,0 +1,637 @@
|
||||
SplineFontDB: 3.2
|
||||
FontName: Untitled1
|
||||
FullName: Untitled1
|
||||
FamilyName: Untitled1
|
||||
Weight: Regular
|
||||
Copyright: Copyright (c) 2024, Nat
|
||||
UComments: "2024-11-17: Created with FontForge (http://fontforge.org)"
|
||||
Version: 001.000
|
||||
ItalicAngle: 0
|
||||
UnderlinePosition: -100
|
||||
UnderlineWidth: 50
|
||||
Ascent: 800
|
||||
Descent: 200
|
||||
InvalidEm: 0
|
||||
LayerCount: 2
|
||||
Layer: 0 0 "Back" 1
|
||||
Layer: 1 0 "Fore" 0
|
||||
XUID: [1021 797 1039558778 2183619]
|
||||
OS2Version: 0
|
||||
OS2_WeightWidthSlopeOnly: 0
|
||||
OS2_UseTypoMetrics: 1
|
||||
CreationTime: 1731889305
|
||||
ModificationTime: 1731937948
|
||||
OS2TypoAscent: 0
|
||||
OS2TypoAOffset: 1
|
||||
OS2TypoDescent: 0
|
||||
OS2TypoDOffset: 1
|
||||
OS2TypoLinegap: 0
|
||||
OS2WinAscent: 0
|
||||
OS2WinAOffset: 1
|
||||
OS2WinDescent: 0
|
||||
OS2WinDOffset: 1
|
||||
HheadAscent: 0
|
||||
HheadAOffset: 1
|
||||
HheadDescent: 0
|
||||
HheadDOffset: 1
|
||||
OS2Vendor: 'PfEd'
|
||||
DEI: 91125
|
||||
Encoding: ISO8859-1
|
||||
UnicodeInterp: none
|
||||
NameList: AGL For New Fonts
|
||||
DisplaySize: 8
|
||||
AntiAlias: 1
|
||||
FitToEm: 0
|
||||
WidthSeparation: 1
|
||||
WinInfo: 0 19 7
|
||||
OnlyBitmaps: 1
|
||||
BeginChars: 256 65
|
||||
|
||||
StartChar: A
|
||||
Encoding: 65 65 0
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: B
|
||||
Encoding: 66 66 1
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: C
|
||||
Encoding: 67 67 2
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: D
|
||||
Encoding: 68 68 3
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: E
|
||||
Encoding: 69 69 4
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: F
|
||||
Encoding: 70 70 5
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: G
|
||||
Encoding: 71 71 6
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: H
|
||||
Encoding: 72 72 7
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: I
|
||||
Encoding: 73 73 8
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: J
|
||||
Encoding: 74 74 9
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: K
|
||||
Encoding: 75 75 10
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: L
|
||||
Encoding: 76 76 11
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: M
|
||||
Encoding: 77 77 12
|
||||
Width: 1125
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: N
|
||||
Encoding: 78 78 13
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: O
|
||||
Encoding: 79 79 14
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: P
|
||||
Encoding: 80 80 15
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: Q
|
||||
Encoding: 81 81 16
|
||||
Width: 1000
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: R
|
||||
Encoding: 82 82 17
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: S
|
||||
Encoding: 83 83 18
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: T
|
||||
Encoding: 84 84 19
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: U
|
||||
Encoding: 85 85 20
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: V
|
||||
Encoding: 86 86 21
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: W
|
||||
Encoding: 87 87 22
|
||||
Width: 1375
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: X
|
||||
Encoding: 88 88 23
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: Y
|
||||
Encoding: 89 89 24
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: Z
|
||||
Encoding: 90 90 25
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: a
|
||||
Encoding: 97 97 26
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: b
|
||||
Encoding: 98 98 27
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: c
|
||||
Encoding: 99 99 28
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: d
|
||||
Encoding: 100 100 29
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: e
|
||||
Encoding: 101 101 30
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: f
|
||||
Encoding: 102 102 31
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: g
|
||||
Encoding: 103 103 32
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: h
|
||||
Encoding: 104 104 33
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: i
|
||||
Encoding: 105 105 34
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: j
|
||||
Encoding: 106 106 35
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: k
|
||||
Encoding: 107 107 36
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: l
|
||||
Encoding: 108 108 37
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: m
|
||||
Encoding: 109 109 38
|
||||
Width: 1125
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: n
|
||||
Encoding: 110 110 39
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: o
|
||||
Encoding: 111 111 40
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: p
|
||||
Encoding: 112 112 41
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: q
|
||||
Encoding: 113 113 42
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: r
|
||||
Encoding: 114 114 43
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: s
|
||||
Encoding: 115 115 44
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: t
|
||||
Encoding: 116 116 45
|
||||
Width: 625
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: u
|
||||
Encoding: 117 117 46
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: v
|
||||
Encoding: 118 118 47
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: w
|
||||
Encoding: 119 119 48
|
||||
Width: 1125
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: x
|
||||
Encoding: 120 120 49
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: y
|
||||
Encoding: 121 121 50
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: z
|
||||
Encoding: 122 122 51
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: space
|
||||
Encoding: 32 32 52
|
||||
Width: 375
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: hyphen
|
||||
Encoding: 45 45 53
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: quotesingle
|
||||
Encoding: 39 39 54
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: parenleft
|
||||
Encoding: 40 40 55
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: parenright
|
||||
Encoding: 41 41 56
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: comma
|
||||
Encoding: 44 44 57
|
||||
Width: 500
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: period
|
||||
Encoding: 46 46 58
|
||||
Width: 375
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: slash
|
||||
Encoding: 47 47 59
|
||||
Width: 750
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: exclam
|
||||
Encoding: 33 33 60
|
||||
Width: 375
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: quotedbl
|
||||
Encoding: 34 34 61
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: question
|
||||
Encoding: 63 63 62
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: zero
|
||||
Encoding: 48 48 63
|
||||
Width: 875
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
|
||||
StartChar: colon
|
||||
Encoding: 58 58 64
|
||||
Width: 375
|
||||
Flags: W
|
||||
LayerCount: 2
|
||||
EndChar
|
||||
EndChars
|
||||
BitmapFont: 8 65 6 2 1
|
||||
BDFChar: 0 65 7 0 5 0 7
|
||||
0JI`rbl#]/
|
||||
BDFChar: 1 66 7 0 5 0 7
|
||||
prptWbfn<+
|
||||
BDFChar: 2 67 7 0 5 0 7
|
||||
Gg*t=^qe0=
|
||||
BDFChar: 3 68 7 0 5 0 7
|
||||
nCYt/bfn`/
|
||||
BDFChar: 4 69 6 0 4 0 7
|
||||
pqX]7^qdb\
|
||||
BDFChar: 5 70 6 0 4 0 7
|
||||
pqX]7^qdb$
|
||||
BDFChar: 6 71 7 0 5 0 7
|
||||
Gg*t=gs!ue
|
||||
BDFChar: 7 72 7 0 5 0 7
|
||||
bfn</bfn;T
|
||||
BDFChar: 8 73 7 0 5 0 7
|
||||
r%KfY0JG3Y
|
||||
BDFChar: 9 74 7 0 5 0 7
|
||||
$k*OQ%*Zq?
|
||||
BDFChar: 10 75 7 0 5 0 7
|
||||
bh2FCi:,CC
|
||||
BDFChar: 11 76 6 0 4 0 7
|
||||
^qdb$^qdb\
|
||||
BDFChar: 12 77 9 0 7 0 7
|
||||
_rq'S_o'C0
|
||||
BDFChar: 13 78 7 0 5 0 7
|
||||
bj=]or7p)O
|
||||
BDFChar: 14 79 7 0 5 0 7
|
||||
Gg+CUbfn:U
|
||||
BDFChar: 15 80 7 0 5 0 7
|
||||
prpt+pqX\\
|
||||
BDFChar: 16 81 8 0 7 -2 7
|
||||
I)a1G`n'!o"p4i*
|
||||
BDFChar: 17 82 7 0 5 0 7
|
||||
prpt+pt3g7
|
||||
BDFChar: 18 83 7 0 5 0 7
|
||||
Gg*sJ$k1@)
|
||||
BDFChar: 19 84 7 0 5 0 7
|
||||
r%KfY0JG17
|
||||
BDFChar: 20 85 6 0 4 0 7
|
||||
f\"j/f\"hq
|
||||
BDFChar: 21 86 7 0 5 0 7
|
||||
bfk<VGVCg*
|
||||
BDFChar: 22 87 11 0 9 0 7
|
||||
^qe10D1I+dIt0<T1B932
|
||||
BDFChar: 23 88 7 0 5 0 7
|
||||
bfk;cGl5e0
|
||||
BDFChar: 24 89 7 0 5 0 7
|
||||
bfp!00JG17
|
||||
BDFChar: 25 90 7 0 5 0 7
|
||||
r!WunE599e
|
||||
BDFChar: 26 97 6 0 4 0 5
|
||||
E7fEffQ[Ar
|
||||
BDFChar: 27 98 6 0 4 0 7
|
||||
^qfHlf\"jG
|
||||
BDFChar: 28 99 6 0 4 0 5
|
||||
E7htAfPgfj
|
||||
BDFChar: 29 100 6 0 4 0 7
|
||||
(`7MMf\"i$
|
||||
BDFChar: 30 101 6 0 4 0 5
|
||||
E7js$fPgfj
|
||||
BDFChar: 31 102 6 0 4 0 7
|
||||
3+25`?smAM
|
||||
BDFChar: 32 103 6 0 4 -2 5
|
||||
GhC[$fQ\6P
|
||||
BDFChar: 33 104 6 0 4 0 7
|
||||
^qfHlf\"j/
|
||||
BDFChar: 34 105 4 0 2 0 7
|
||||
?i]+m?smAM
|
||||
BDFChar: 35 106 4 -5 2 -2 8
|
||||
J-,cV!s8W-!s9#5
|
||||
BDFChar: 36 107 6 0 4 0 7
|
||||
^qeUli8F+W
|
||||
BDFChar: 37 108 4 0 2 0 7
|
||||
i*]r#?smAM
|
||||
BDFChar: 38 109 9 0 7 0 5
|
||||
rnH2^gY2].
|
||||
BDFChar: 39 110 6 0 4 0 5
|
||||
nCZCGf[p0(
|
||||
BDFChar: 40 111 6 0 4 0 5
|
||||
E7igqfPgfj
|
||||
BDFChar: 41 112 6 0 4 -2 5
|
||||
nCZCGf^Q\l
|
||||
BDFChar: 42 113 6 0 4 -2 5
|
||||
E7igqfQ\5M
|
||||
BDFChar: 43 114 6 0 4 0 5
|
||||
pu&s'^q]pM
|
||||
BDFChar: 44 115 6 0 4 0 5
|
||||
E7f+HfPgfj
|
||||
BDFChar: 45 116 5 0 3 0 7
|
||||
?srJ3?sm@r
|
||||
BDFChar: 46 117 6 0 4 0 5
|
||||
f\"j/fQ[Ar
|
||||
BDFChar: 47 118 6 0 5 0 5
|
||||
bfk<V0JEJ,
|
||||
BDFChar: 48 119 9 0 7 0 5
|
||||
_o$qP4?NTD
|
||||
BDFChar: 49 120 6 0 4 0 5
|
||||
f[t.^f[p0(
|
||||
BDFChar: 50 121 6 0 4 -2 5
|
||||
f\"j/fQ\6P
|
||||
BDFChar: 51 122 6 0 4 0 5
|
||||
p_Y\m_"[m0
|
||||
BDFChar: 52 32 3 1 1 0 0
|
||||
z
|
||||
BDFChar: 53 45 6 0 4 3 3
|
||||
p](9o
|
||||
BDFChar: 54 39 4 0 2 5 7
|
||||
i*a>#
|
||||
BDFChar: 55 40 4 1 3 0 7
|
||||
@)0Rn^qd`n
|
||||
BDFChar: 56 41 4 0 2 0 7
|
||||
^gLPX?smBX
|
||||
BDFChar: 57 44 4 0 2 -2 0
|
||||
?spbM
|
||||
BDFChar: 58 46 3 0 1 0 0
|
||||
^]4?7
|
||||
BDFChar: 59 47 6 0 4 0 7
|
||||
(`4q\?spdc
|
||||
BDFChar: 60 33 3 0 1 0 7
|
||||
^qdb$^q]rc
|
||||
BDFChar: 61 34 7 0 5 5 7
|
||||
r+t!c
|
||||
BDFChar: 62 63 7 0 5 0 7
|
||||
Gg$R50JEJ\
|
||||
BDFChar: 63 48 7 0 5 0 7
|
||||
Gg+t@m**[u
|
||||
BDFChar: 64 58 3 0 1 0 4
|
||||
^]4?7^]4?7
|
||||
EndBitmapFont
|
||||
EndSplineFont
|
||||
BIN
pkg/credits/startanim-original.png
Normal file
BIN
pkg/credits/startanim-original.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 11 KiB |
BIN
pkg/credits/startanim-pt-1.png
Normal file
BIN
pkg/credits/startanim-pt-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
pkg/credits/startanim-pt-3.png
Normal file
BIN
pkg/credits/startanim-pt-3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 2.3 KiB |
BIN
pkg/credits/startanim1.exr
Normal file
BIN
pkg/credits/startanim1.exr
Normal file
Binary file not shown.
144
pkg/generate-credits.py
Normal file
144
pkg/generate-credits.py
Normal file
@@ -0,0 +1,144 @@
|
||||
# Call this manually every time the metadata in pkg/credits changes.
|
||||
# Commit the generated files.
|
||||
|
||||
# Requires:
|
||||
# - ImageMagick
|
||||
# - Git Bash (on Windows)
|
||||
|
||||
# Usage: python pkg/generate-credits.py
|
||||
|
||||
from glob import glob
|
||||
from os.path import basename, splitext
|
||||
from subprocess import run
|
||||
|
||||
def get_confirmed_names(filename):
|
||||
with open(filename, 'r') as file:
|
||||
lines = [line.rstrip() for line in file]
|
||||
# The first line should always be Confirmed:
|
||||
lines = lines[1:]
|
||||
# After the confirmed names, there may be Not Confirmed: names.
|
||||
if 'Not Confirmed:' in lines:
|
||||
lines = lines[0:lines.index('Not Confirmed:')]
|
||||
|
||||
# Lines should either start with "- " or " " if continuing the previous name, wrapped and indented:
|
||||
return [line[2:] for line in lines if len(line) > 0]
|
||||
|
||||
def main():
|
||||
# Generate about-boe.xml from about-boe-template.xml:
|
||||
with open('pkg/credits/about-boe-template.xml', 'r') as template_file:
|
||||
template = template_file.read()
|
||||
content = template
|
||||
|
||||
name_files = glob('pkg/credits/*.txt')
|
||||
name_dict = {}
|
||||
num_dict = {}
|
||||
total_num = 0
|
||||
for name_file in name_files:
|
||||
heading, _ = splitext(basename(name_file))
|
||||
name_dict[heading] = get_confirmed_names(name_file)
|
||||
num_dict[heading] = len(name_dict[heading])
|
||||
total_num += len(name_dict[heading])
|
||||
|
||||
def replace_tabbed_lines(placeholder, lines, tabs):
|
||||
return content.replace(placeholder, ('\n' + ('\t' * tabs)).join(lines.splitlines()))
|
||||
|
||||
# {{Warning}}:
|
||||
content = replace_tabbed_lines('{{Warning}}', 'WARNING! This file is generated by pkg/generate-credits.py from\ntpkg/credits/about-boe-template.xml. Do not modify it manually!', 1)
|
||||
|
||||
# {{Height}}: 10 * (total # of lines, which includes 2 at the top and 4 per section break)
|
||||
content = content.replace('{{Height}}', str(10 * (total_num + 10)))
|
||||
|
||||
# {{0}}: '<br/>' * (total # of confirmed names in pkg/credits/*.txt)
|
||||
content = content.replace('{{0}}', '<br/>' * total_num)
|
||||
|
||||
# {{1}}: '<br/>' * (# of programmers)
|
||||
content = content.replace('{{1}}', '<br/>' * num_dict['Code'])
|
||||
|
||||
# {{2}}: '<br/>' * (# of artists)
|
||||
content = content.replace('{{2}}', '<br/>' * num_dict['Graphics'])
|
||||
|
||||
# {{3}}: '<br/>' * (# of testers)
|
||||
content = content.replace('{{3}}', '<br/>' * num_dict['Testing'])
|
||||
|
||||
# {{4}}: '<br/>' * (# of donors)
|
||||
content = content.replace('{{4}}', '<br/>' * num_dict['Funding'])
|
||||
|
||||
list_break = ' <br/>\n'
|
||||
|
||||
# {{5}}: Programmer name lines
|
||||
name_lines = list_break.join(name_dict["Code"]) + list_break
|
||||
content = replace_tabbed_lines('{{5}}', name_lines, 8)
|
||||
|
||||
# {{6}}: Artist name lines
|
||||
name_lines = list_break.join(name_dict["Graphics"]) + list_break
|
||||
content = replace_tabbed_lines('{{6}}', name_lines, 7)
|
||||
|
||||
# {{7}}: Tester name lines
|
||||
name_lines = list_break.join(name_dict["Testing"]) + list_break
|
||||
content = replace_tabbed_lines('{{7}}', name_lines, 12)
|
||||
|
||||
# {{8}}: Donor names
|
||||
name_lines = list_break.join(name_dict["Funding"]) + list_break
|
||||
content = replace_tabbed_lines('{{8}}', name_lines, 7)
|
||||
|
||||
with open('rsrc/dialogs/about-boe.xml', 'w') as output_file:
|
||||
output_file.write(content)
|
||||
|
||||
# Generate startanim.png using ImageMagick
|
||||
|
||||
# These allow whitespace to come at the start of the real content, and will be cropped out.
|
||||
image_lines_col1 = ["-"]
|
||||
image_lines_col2 = ["-"]
|
||||
|
||||
# Note: blank lines need to have a space in them for some reason
|
||||
def add_heading(heading):
|
||||
image_lines_col1.append(f' - {heading.upper()} -')
|
||||
image_lines_col1.append(' ')
|
||||
image_lines_col2.extend([' ', ' '])
|
||||
|
||||
# (Complicated)
|
||||
# Split the names into two columns, still vertically alphabetized,
|
||||
# while keeping multi-line names on the same column!
|
||||
names = name_dict[heading]
|
||||
left_column = True
|
||||
|
||||
idx = 0
|
||||
while idx < len(names):
|
||||
current_column = image_lines_col1 if left_column else image_lines_col2
|
||||
current_column.append(names[idx])
|
||||
multiline_idx = idx + 1
|
||||
while multiline_idx < len(names) and names[multiline_idx].startswith(' '):
|
||||
current_column.append(names[multiline_idx])
|
||||
multiline_idx += 1
|
||||
idx += 1
|
||||
left_column = len(image_lines_col1) <= len(image_lines_col2)
|
||||
idx += 1
|
||||
|
||||
while len(image_lines_col1) != len(image_lines_col2):
|
||||
current_column = image_lines_col1 if left_column else image_lines_col2
|
||||
current_column.append(' ')
|
||||
|
||||
image_lines_col1.append(' ')
|
||||
image_lines_col2.append(' ')
|
||||
|
||||
add_heading('Code')
|
||||
add_heading('Graphics')
|
||||
add_heading('Testing')
|
||||
add_heading('Funding')
|
||||
|
||||
# when one column starts with blank lines, ImageMagick doesn't offset the top correctly.
|
||||
# So we pass the number of lines to y-offset the right column image
|
||||
col2_blank_lines_start = 0
|
||||
for line in image_lines_col2:
|
||||
if line == ' ':
|
||||
col2_blank_lines_start += 1
|
||||
else:
|
||||
break
|
||||
|
||||
run(['bash', 'pkg/generate-startanim-col.sh', '1', '0'], input='\n'.join(image_lines_col1), encoding='ascii')
|
||||
# print(col2_blank_lines_start)
|
||||
run(['bash', 'pkg/generate-startanim-col.sh', '2', str(col2_blank_lines_start)], input='\n'.join(image_lines_col2), encoding='ascii')
|
||||
run(['bash', 'pkg/generate-startanim.sh'])
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
16
pkg/generate-startanim-col.sh
Executable file
16
pkg/generate-startanim-col.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
text="$(cat)"
|
||||
line_count=$(echo "$text" | wc -l)
|
||||
|
||||
font_size=8
|
||||
spacing=5
|
||||
actual_line_size=$((font_size + spacing))
|
||||
top_offset_lines=$2
|
||||
first_line_offset=$((font_size + 2 + actual_line_size * top_offset_lines))
|
||||
height=$((actual_line_size * line_count))
|
||||
|
||||
magick -size 140x$height xc:transparent \
|
||||
-stroke black -pointsize $font_size -interline-spacing $spacing \
|
||||
-font 'pkg/credits/font-8.bdf' -annotate +7+$first_line_offset "$text" \
|
||||
pkg/credits/startanim-col-$1.png
|
||||
12
pkg/generate-startanim.sh
Executable file
12
pkg/generate-startanim.sh
Executable file
@@ -0,0 +1,12 @@
|
||||
#!/bin/bash
|
||||
|
||||
font_size=8
|
||||
spacing=5
|
||||
actual_line_size=$((font_size + spacing))
|
||||
|
||||
magick convert +append pkg/credits/startanim-col-*.png pkg/credits/startanim-pt-2.png
|
||||
magick convert pkg/credits/startanim-pt-2.png -chop 0x$actual_line_size -gravity North pkg/credits/startanim-pt-2.png
|
||||
magick convert -append pkg/credits/startanim-pt-*.png rsrc/graphics/startanim.png
|
||||
# Clean up:
|
||||
rm pkg/credits/startanim-col-*.png
|
||||
rm pkg/credits/startanim-pt-2.png
|
||||
@@ -1,4 +1,8 @@
|
||||
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
||||
<!--
|
||||
WARNING! This file is generated by pkg/generate-credits.py from
|
||||
tpkg/credits/about-boe-template.xml. Do not modify it manually!
|
||||
-->
|
||||
<?xml-stylesheet href="dialog.xsl" type="text/xsl"?>
|
||||
<dialog defbtn='okay'>
|
||||
<!--
|
||||
@@ -9,67 +13,117 @@
|
||||
Blades of Exile v2.0 alpha <br/>
|
||||
Copyright 1997-2015, Spiderweb Software, Inc., All rights reserved.
|
||||
</text>
|
||||
<pane top='42' left='50' width='400' height='67'>
|
||||
<pane top='42' left='50' width='400' height='100'>
|
||||
<text size='large' top='42' left='150' width='300' height='17'>------ CREDITS ------</text>
|
||||
<!-- TODO: Get a proper right-aligned text setting so that I don't have to use this hack of weird numbers of spaces -->
|
||||
<!-- The height of this text needs to be 10 times the number of lines. -->
|
||||
<text top='52' left='50' width='400' height='240'>
|
||||
ORIGINAL GAME: <br/>
|
||||
Concept, Design, Programming: <br/>
|
||||
Graphics: <br/>
|
||||
Business Manager: <br/>
|
||||
Title/Splash Screens: <br/>
|
||||
<br/>
|
||||
OPEN SOURCE CREDITS: <br/>
|
||||
Programming: <br/><br/><br/><br/><br/><br/><br/>
|
||||
Graphics: <br/><br/><br/><br/><br/>
|
||||
Testing and Troubleshooting: <br/>
|
||||
<br/>
|
||||
SCENARIO FIXES AND UPDATES: <br/>
|
||||
Bandit Busywork: <br/>
|
||||
ORIGINAL GAME: <br/><br/><br/><br/><br/><br/>
|
||||
OPEN SOURCE CREDITS: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
|
||||
SCENARIO FIXES AND UPDATES: <br/><br/>
|
||||
</text>
|
||||
<!-- The height of this text needs to be 10 times the number of lines. -->
|
||||
<!-- Also make sure that it properly aligns with the previous text. -->
|
||||
<!-- Comments are included to aid with this. Don't mess it up! Test it to be sure! -->
|
||||
<text top='52' left='250' width='230' height='240'>
|
||||
<!-- This text is right-aligned and fills out the above text with sub-headings -->
|
||||
<text top='52' left='50' width='180' height='660' align='right'>
|
||||
<br/>
|
||||
Concept, Design, Programming: <br/>
|
||||
Graphics: <br/>
|
||||
Business Manager: <br/>
|
||||
Title/Splash Screens: <br/>
|
||||
<br/>
|
||||
<br/>
|
||||
Programming: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
|
||||
Graphics: <br/><br/><br/><br/><br/><br/>
|
||||
Testing and Troubleshooting: <br/><br/>
|
||||
Funding: <br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
|
||||
<br/><br/>
|
||||
Bandit Busywork: <br/>
|
||||
</text>
|
||||
<text top='52' left='250' width='230' height='660'>
|
||||
<!-- ORIGINAL GAME --><br/>
|
||||
<!-- Concept, Design, Programming -->Jeff Vogel (SpidWeb@spidweb.com) <br/>
|
||||
<!-- Graphics -->Andrew Hunter (Wormius@aol.com) <br/>
|
||||
<!-- Business Manager -->Mariann Krizsan (krizsan@spidweb.com)<br/>
|
||||
<!-- Title/Splash Screens -->James Ernest (ernest@speakeasy.org) <br/>
|
||||
<!-- Concept, Design, Programming -->Jeff Vogel <br/>
|
||||
<!-- Graphics -->Andrew Hunter <br/>
|
||||
<!-- Business Manager -->Mariann Krizsan <br/>
|
||||
<!-- Title/Splash Screens -->James Ernest <br/>
|
||||
<br/><!-- OPEN SOURCE CREDITS --><br/>
|
||||
<!-- Programming -->Khoth <br/>
|
||||
Ormus <br/>
|
||||
Chokboyz <br/>
|
||||
Celtic Minstrel <br/>
|
||||
Ben Scott <br/>
|
||||
Sylae Corell <br/>
|
||||
xq <br/>
|
||||
<!-- Graphics -->The Almighty Doer of Stuff <br/>
|
||||
Mistb0rn <br/>
|
||||
Celtic Minstrel <br/>
|
||||
Kelyar-Ihrno <br/>
|
||||
Jewels <br/>
|
||||
<!-- Testing and Troubleshooting -->The Almighty Doer of Stuff <br/>
|
||||
Ormus <br/>
|
||||
Chokboyz <br/>
|
||||
Celtic Minstrel <br/>
|
||||
Ben Scott <br/>
|
||||
Sylae Corell <br/>
|
||||
xq <br/>
|
||||
Daerogami <br/>
|
||||
NQNStudios <br/>
|
||||
Sei Satzparad <br/>
|
||||
Brendan Miller <br/>
|
||||
<!-- Graphics -->The Almighty <br/>
|
||||
Doer of Stuff <br/>
|
||||
Mistb0rn <br/>
|
||||
Celtic Minstrel <br/>
|
||||
Kelyar-Ihrno <br/>
|
||||
Jewels <br/>
|
||||
<!-- Testing and Troubleshooting -->The Almighty <br/>
|
||||
Doer of Stuff <br/>
|
||||
<!-- Funding -->Alan Elkins <br/>
|
||||
Alan Monroe <br/>
|
||||
Amanda Klecker <br/>
|
||||
Andrew Flicker <br/>
|
||||
Anonymous <br/>
|
||||
Baste Nesse Buanes <br/>
|
||||
Bret Rodabaugh <br/>
|
||||
Dylan Nugent <br/>
|
||||
Evan Mulrooney <br/>
|
||||
Jake Harrelson <br/>
|
||||
Jared Forcinito <br/>
|
||||
Jeff Potter <br/>
|
||||
Jeff Vogel <br/>
|
||||
Jeremy Bracegirdle <br/>
|
||||
Joel Joslin <br/>
|
||||
Joshua Murphy <br/>
|
||||
Juan Dionicio Becerra <br/>
|
||||
Kelandon <br/>
|
||||
Kelson (Andulos) <br/>
|
||||
K L <br/>
|
||||
Laura Nelson <br/>
|
||||
Mariann Krizsan <br/>
|
||||
Mike Lapinsky <br/>
|
||||
Nick Chaimov <br/>
|
||||
Nick Fisher <br/>
|
||||
Nicole Tietz-Sokolskaya <br/>
|
||||
Nikki Jeffery <br/>
|
||||
Noah Nelson <br/>
|
||||
Ruby Paterson <br/>
|
||||
Samael <br/>
|
||||
Sean Hayden <br/>
|
||||
Souren Papazian <br/>
|
||||
Tony Martyn <br/>
|
||||
Tony Vazquez <br/>
|
||||
Trent Nelson <br/>
|
||||
Vida Krevs <br/>
|
||||
William Hensley <br/>
|
||||
<br/><!-- SCENARIO FIXES AND UPDATES --><br/>
|
||||
<!-- Bandit Busywork -->The Almighty Doer of Stuff <br/>
|
||||
</text>
|
||||
</pane>
|
||||
<text top='110' left='50' width='410' height='51'>
|
||||
<text top='153' left='50' width='410' height='51'>
|
||||
Blades of Exile is brought to you by Spiderweb Software - <br/>
|
||||
"Where our aberrations become your reality." <br/>
|
||||
"Blades of Exile" and Spiderweb Software are trademarks of Spiderweb Software.
|
||||
</text>
|
||||
<text top='162' left='50' width='424' height='145'>
|
||||
Open Blades of Exile is brought to you from the hard work of volunteers who are passionate about this software.
|
||||
<text relative='pos-in pos' rel-anchor='prev' top='0' left='-8' width='424'>
|
||||
Open Blades of Exile is sustained by the hard work of passionate volunteers.
|
||||
We sincerely hope you enjoy, share, and discuss this game, and maybe even make and release your own scenario!<br/>
|
||||
Open Blades of Exile is a modification of Blades of Exile, created by Spiderweb Software, Inc. in 1997.
|
||||
It is released under GNU GPL 2.0+. The source code can be found at https://github.com/calref/cboe/.
|
||||
It is released under GNU GPL 2.0+. The source code can be found here:
|
||||
</text>
|
||||
<text top='240' left='60' width='353' height='66'>
|
||||
Comments and questions? The creators and maintainers of Exile want to hear them.
|
||||
Visit http://www.spidweb.com/, where you can find the official discussion forum and other great games!
|
||||
<br/>Or open a ticket at https://github.com/calref/cboe/issues.
|
||||
<text name= 'src' relative='pos-in pos' rel-anchor='prev' top='10' left='16' colour='link' underline='true'>
|
||||
https://github.com/calref/cboe/
|
||||
</text>
|
||||
<button name='okay' type='regular' top='299' left='435'>OK</button>
|
||||
<text relative='neg pos' rel-anchor='prev' top='0' left='16' width='353'>
|
||||
Comments and questions? The maintainers of Open Blades of Exile want to hear them.<br/>
|
||||
Open a ticket here:
|
||||
</text>
|
||||
<text name= 'issues' relative='pos-in pos' rel-anchor='prev' top='0' left='16' colour='link' underline='true'>
|
||||
https://github.com/calref/cboe/issues
|
||||
</text>
|
||||
<button name='okay' relative='neg' type='regular' top='30' left='70'>OK</button>
|
||||
</dialog>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 23 KiB |
@@ -164,6 +164,14 @@
|
||||
<xs:attributeGroup ref="frame"/>
|
||||
<xs:attributeGroup ref="font"/>
|
||||
<xs:attribute name="underline" type="bool"/>
|
||||
<xs:attribute name="align">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="left"/>
|
||||
<xs:enumeration value="right"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref="def-key"/>
|
||||
<xs:attribute name="fromlist" default="none" type="xs:string"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
#include <boost/lexical_cast.hpp>
|
||||
#include "winutil.hpp"
|
||||
|
||||
// Hyperlink forward declaration
|
||||
extern void launchURL(std::string url);
|
||||
|
||||
void cControl::setText(std::string l){
|
||||
lbl = l;
|
||||
}
|
||||
@@ -435,6 +438,16 @@ std::string cControl::parse(ticpp::Element& who, std::string fname) {
|
||||
frame.height() = height > 0 ? height : bestSz.y;
|
||||
setBounds(frame);
|
||||
validatePostParse(who, fname, foundAttrs, foundNodes);
|
||||
|
||||
// Wire links to function:
|
||||
// TODO links are identified only by having the color 'link', and can only link to their text value.
|
||||
if(is_link){
|
||||
attachClickHandler([](cDialog& self, std::string clicked, eKeyMod) {
|
||||
launchURL(self[clicked].getText());
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
@@ -541,6 +554,8 @@ bool cControl::parseAttribute(ticpp::Attribute& attr, std::string tagName, std::
|
||||
setColour({0x7f, 0xd7, 0xFF});
|
||||
if(parent->getBg() == cDialog::BG_LIGHT)
|
||||
setColour({0x00, 0x00, 0xFF});
|
||||
|
||||
is_link = true;
|
||||
} else try {
|
||||
sf::Color clr = parseColor(val);
|
||||
setColour(clr);
|
||||
|
||||
@@ -462,6 +462,7 @@ private:
|
||||
// Transient values only used during parsing
|
||||
ePosition horz = POS_ABS, vert = POS_ABS;
|
||||
std::string anchor;
|
||||
bool is_link = false;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -53,12 +53,18 @@ bool cTextMsg::parseAttribute(ticpp::Attribute& attr, std::string tagName, std::
|
||||
throw xBadVal(tagName, attr.Name(), val, attr.Row(), attr.Column(), fname);
|
||||
}
|
||||
return true;
|
||||
} else if(attr.Name() == "underline") {
|
||||
}else if(attr.Name() == "underline"){
|
||||
std::string val = attr.Value();
|
||||
if(val == "true") underlined = true;
|
||||
else if(val == "false") underlined = false;
|
||||
else throw xBadVal(tagName, attr.Name(), val, attr.Row(), attr.Column(), fname);
|
||||
return true;
|
||||
}else if(attr.Name() == "align"){
|
||||
std::string val = attr.Value();
|
||||
if(val == "right") right_align = true;
|
||||
else if(val == "left") right_align = false;
|
||||
else throw xBadVal(tagName, attr.Name(), val, attr.Row(), attr.Column(), fname);
|
||||
return true;
|
||||
}
|
||||
return cControl::parseAttribute(attr, tagName, fname);
|
||||
}
|
||||
@@ -233,7 +239,7 @@ void cTextMsg::draw(){
|
||||
}
|
||||
style.colour = draw_color;
|
||||
if (!calculated) calculate_layout();
|
||||
win_draw_string(*inWindow,to_rect,msg,text_mode,style,break_info);
|
||||
win_draw_string(*inWindow,to_rect,msg,text_mode,style,break_info,right_align);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -63,5 +63,6 @@ private:
|
||||
std::string msg;
|
||||
void calculate_layout();
|
||||
bool calculated = false;
|
||||
bool right_align = false;
|
||||
};
|
||||
#endif
|
||||
|
||||
@@ -91,6 +91,7 @@ The `<text>` tag accepts the following attributes:
|
||||
* `framed` - See **Common Attributes** above. Defaults to `false`.
|
||||
* `outline` - See **Common Attributes** above.
|
||||
* `underline` - If true, the text will be underlined.
|
||||
* `align` - `right` or `left`. Defaults to `left`.
|
||||
* `fromlist`, `font`, `size`, `color`, `colour`, `def-key` -
|
||||
See **Common Attributes** above.
|
||||
|
||||
|
||||
@@ -245,6 +245,7 @@ void show_dialog_action(std::string xml_file) {
|
||||
if(recording){
|
||||
record_action("show_dialog_action", xml_file);
|
||||
}
|
||||
|
||||
cChoiceDlog(xml_file).show();
|
||||
}
|
||||
|
||||
|
||||
@@ -266,10 +266,11 @@ void draw_startup_anim(bool advance) {
|
||||
|
||||
anim_from = anim_to;
|
||||
anim_from.offset(-1,-4 + startup_anim_pos);
|
||||
if(advance) startup_anim_pos = (startup_anim_pos + 1) % 542;
|
||||
auto scroll_sprite = *ResMgr::graphics.get("startanim",true);
|
||||
if(advance) startup_anim_pos = (startup_anim_pos + 1) % scroll_sprite.getSize().y;
|
||||
rect_draw_some_item(*ResMgr::graphics.get("startbut",true),anim_size,mainPtr,startup_button[STARTBTN_SCROLL]);
|
||||
anim_to.offset(startup_button[STARTBTN_SCROLL].left, startup_button[STARTBTN_SCROLL].top);
|
||||
rect_draw_some_item(*ResMgr::graphics.get("startanim",true),anim_from,mainPtr,anim_to,sf::BlendAlpha);
|
||||
rect_draw_some_item(scroll_sprite,anim_from,mainPtr,anim_to,sf::BlendAlpha);
|
||||
}
|
||||
|
||||
void draw_startup_stats() {
|
||||
|
||||
@@ -689,15 +689,7 @@ void init_boe(int argc, char* argv[]) {
|
||||
}
|
||||
|
||||
void showWelcome() {
|
||||
if(recording){
|
||||
record_action("showWelcome", "");
|
||||
}
|
||||
cChoiceDlog welcome("welcome");
|
||||
welcome->attachClickHandlers([](cDialog& self, std::string clicked, eKeyMod) {
|
||||
launchURL(self[clicked].getText());
|
||||
return false;
|
||||
}, {"spidweb", "scen", "forum", "home", "src"});
|
||||
welcome.show();
|
||||
show_dialog_action("welcome");
|
||||
}
|
||||
|
||||
using Key = sf::Keyboard::Key;
|
||||
@@ -975,10 +967,10 @@ void update_terrain_animation() {
|
||||
}
|
||||
|
||||
void update_startup_animation() {
|
||||
static const long twentyTicks = time_in_ticks(20).asMilliseconds();
|
||||
static const long interval = time_in_ticks(10).asMilliseconds();
|
||||
|
||||
if(overall_mode != MODE_STARTUP) return;
|
||||
if(animTimer.getElapsedTime().asMilliseconds() < twentyTicks) return;
|
||||
if(animTimer.getElapsedTime().asMilliseconds() < interval) return;
|
||||
|
||||
draw_startup_anim(true);
|
||||
animTimer.restart();
|
||||
|
||||
@@ -48,6 +48,7 @@ struct text_params_t {
|
||||
std::vector<snippet_t> snippets;
|
||||
// Pre-calculated line wrapping:
|
||||
break_info_t break_info;
|
||||
bool right_align = false;
|
||||
};
|
||||
|
||||
static void push_snippets(size_t start, size_t end, text_params_t& options, size_t& iHilite, const std::string& str, location loc) {
|
||||
@@ -110,13 +111,14 @@ break_info_t calculate_line_wrapping(rectangle dest_rect, std::string str, TextS
|
||||
|
||||
short i;
|
||||
for(i = 0; text_len(i) != text_len(i + 1) && i < str_len; i++) {
|
||||
if(((text_len(i) - text_len(last_line_break) > (dest_rect.width() - 6))
|
||||
unsigned short line_width = text_len(i) - text_len(last_line_break);
|
||||
if(((line_width > (dest_rect.width() - 6))
|
||||
&& (last_word_break >= last_line_break)) || (str[i] == '|')) {
|
||||
if(str[i] == '|') {
|
||||
last_word_break = i + 1;
|
||||
} else if(last_line_break == last_word_break)
|
||||
last_word_break = i;
|
||||
break_info.push_back(std::make_pair(last_line_break, last_word_break));
|
||||
break_info.push_back(std::make_tuple(last_line_break, last_word_break, line_width));
|
||||
last_line_break = last_word_break;
|
||||
}
|
||||
if(str[i] == ' ')
|
||||
@@ -124,9 +126,10 @@ break_info_t calculate_line_wrapping(rectangle dest_rect, std::string str, TextS
|
||||
}
|
||||
|
||||
if(i - last_line_break > 0) {
|
||||
unsigned short line_width = text_len(i) - text_len(last_line_break);
|
||||
std::string snippet = str.substr(last_line_break);
|
||||
if(!snippet.empty())
|
||||
break_info.push_back(std::make_pair(last_line_break, str.length() + 1));
|
||||
break_info.push_back(std::make_tuple(last_line_break, str.length() + 1, line_width));
|
||||
}
|
||||
|
||||
return break_info;
|
||||
@@ -179,9 +182,13 @@ static void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,st
|
||||
|
||||
moveTo = location(dest_rect.left + adjust_x, dest_rect.top + adjust_y);
|
||||
|
||||
for(auto break_info_pair : break_info){
|
||||
push_snippets(break_info_pair.first, break_info_pair.second, options, iHilite, str, moveTo);
|
||||
for(auto break_info_tuple : break_info){
|
||||
if(options.right_align){
|
||||
moveTo.x += (dest_rect.width() - std::get<2>(break_info_tuple));
|
||||
}
|
||||
push_snippets(std::get<0>(break_info_tuple), std::get<1>(break_info_tuple), options, iHilite, str, moveTo);
|
||||
moveTo.y += line_height;
|
||||
moveTo.x = dest_rect.left;
|
||||
}
|
||||
} else {
|
||||
switch(mode) {
|
||||
@@ -229,16 +236,17 @@ static void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,st
|
||||
}
|
||||
}
|
||||
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style) {
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style,bool right_align) {
|
||||
break_info_t break_info;
|
||||
win_draw_string(dest_window, dest_rect, str, mode, style, break_info);
|
||||
win_draw_string(dest_window, dest_rect, str, mode, style, break_info, right_align);
|
||||
}
|
||||
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style,break_info_t break_info) {
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style,break_info_t break_info,bool right_align) {
|
||||
text_params_t params;
|
||||
params.mode = mode;
|
||||
params.style = style;
|
||||
params.break_info = break_info;
|
||||
params.right_align = right_align;
|
||||
win_draw_string(dest_window, dest_rect, str, params);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#define BoE_RENDER_TEXT_HPP
|
||||
|
||||
#include <utility>
|
||||
#include <tuple>
|
||||
#include <vector>
|
||||
#include <string>
|
||||
|
||||
@@ -37,8 +38,8 @@ struct TextStyle {
|
||||
void applyTo(sf::Text& text);
|
||||
};
|
||||
|
||||
// elements: std::make_pair(last_line_break, last_word_break)
|
||||
typedef std::vector<std::pair<unsigned short, unsigned short>> break_info_t;
|
||||
// elements: std::make_tuple(last_line_break, last_word_break, line_width)
|
||||
typedef std::vector<std::tuple<unsigned short, unsigned short, unsigned short>> break_info_t;
|
||||
|
||||
struct snippet_t {
|
||||
std::string text;
|
||||
@@ -55,8 +56,8 @@ enum class eTextMode {
|
||||
|
||||
std::vector<rectangle> draw_string_hilite(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
||||
std::vector<snippet_t> draw_string_sel(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style);
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style, break_info_t break_info);
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style,bool right_align = false);
|
||||
void win_draw_string(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,eTextMode mode,TextStyle style, break_info_t break_info,bool right_align = false);
|
||||
break_info_t calculate_line_wrapping(rectangle dest_rect, std::string str, TextStyle style);
|
||||
size_t string_length(std::string str, TextStyle style, short* height = nullptr);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user