Unbake the special help texts.
The text in the various help dialogs that was previously baked into an image is now drawn as text, meaning that it benefits from text unblurring when scaling is active. This entails some small changes to layout, since it's a different font. Dialog engine changes: * A new picture type allowing to draw the inventory button icons directly into a dialog. * A new widget type that simply draws a line between two points.
@@ -206,6 +206,7 @@
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\field.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\led.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\ledgroup.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\line.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\message.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\pict.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\scrollbar.cpp" />
|
||||
@@ -299,6 +300,7 @@
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\field.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\led.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\ledgroup.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\line.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\message.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\pict.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\pictypes.hpp" />
|
||||
|
@@ -783,6 +783,9 @@
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\message.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\line.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\ledgroup.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
@@ -1007,6 +1010,9 @@
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\message.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\line.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\ledgroup.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
|
@@ -358,6 +358,7 @@
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\field.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\led.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\ledgroup.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\line.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\message.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\pict.cpp" />
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\scrollbar.cpp" />
|
||||
@@ -456,6 +457,7 @@
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\field.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\led.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\ledgroup.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\line.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\message.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\pict.hpp" />
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\pictypes.hpp" />
|
||||
|
@@ -788,6 +788,9 @@
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\ledgroup.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\line.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\..\src\dialogxml\widgets\message.cpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClCompile>
|
||||
@@ -1045,6 +1048,9 @@
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\ledgroup.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\line.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\..\src\dialogxml\widgets\message.hpp">
|
||||
<Filter>DialogXML\Widgets</Filter>
|
||||
</ClInclude>
|
||||
|
@@ -276,6 +276,7 @@
|
||||
91B3EF590F969F3000BF5B67 /* scen.townout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91B3EEF40F969BA700BF5B67 /* scen.townout.cpp */; };
|
||||
91B3EF5A0F969F3000BF5B67 /* scen.btnmg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91B3EEF50F969BA700BF5B67 /* scen.btnmg.cpp */; };
|
||||
91B3F1850F97894A00BF5B67 /* scen.graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91B3EEF30F969BA700BF5B67 /* scen.graphics.cpp */; };
|
||||
91B5BD1F2D7D3C2B00DF391F /* line.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 91B5BD182D7D3A5400DF391F /* line.cpp */; };
|
||||
91BC33821B4388E80008882C /* libz.1.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = DCCA42011A8C467800E6A9A5 /* libz.1.tbd */; };
|
||||
91BC33831B4388E80008882C /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 914B2AA118E7E500007B6799 /* Cocoa.framework */; };
|
||||
91BC33841B4388E80008882C /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 914B2AA218E7E500007B6799 /* OpenGL.framework */; };
|
||||
@@ -859,6 +860,8 @@
|
||||
91B3F10F0F9779D000BF5B67 /* sounds.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sounds.cpp; sourceTree = "<group>"; };
|
||||
91B3F11D0F97801F00BF5B67 /* mathutil.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = mathutil.hpp; sourceTree = "<group>"; };
|
||||
91B3F11E0F97801F00BF5B67 /* mathutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = mathutil.cpp; sourceTree = "<group>"; };
|
||||
91B5BD182D7D3A5400DF391F /* line.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = line.cpp; sourceTree = "<group>"; };
|
||||
91B5BD192D7D3A5400DF391F /* line.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = line.hpp; sourceTree = "<group>"; };
|
||||
91BC33971B439BEA0008882C /* files */ = {isa = PBXFileReference; lastKnownFileType = folder; path = files; sourceTree = "<group>"; };
|
||||
91BFA3D61901B024001686E4 /* mask.vert */ = {isa = PBXFileReference; explicitFileType = sourcecode.glsl; fileEncoding = 4; path = mask.vert; sourceTree = "<group>"; };
|
||||
91BFA3D81902AD78001686E4 /* tarball.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = tarball.cpp; sourceTree = "<group>"; };
|
||||
@@ -1106,6 +1109,7 @@
|
||||
910BBAB50FB91A26001E34EA /* field.cpp */,
|
||||
9149924725913E3F00B5BE97 /* led.cpp */,
|
||||
9149924925913E3F00B5BE97 /* ledgroup.cpp */,
|
||||
91B5BD182D7D3A5400DF391F /* line.cpp */,
|
||||
910BBAB90FB91ADB001E34EA /* message.cpp */,
|
||||
910BBAA90FB8F733001E34EA /* pict.cpp */,
|
||||
9191460018E63D8E005CF3A4 /* scrollbar.cpp */,
|
||||
@@ -1118,6 +1122,7 @@
|
||||
910BBAB40FB91A26001E34EA /* field.hpp */,
|
||||
9149924825913E3F00B5BE97 /* led.hpp */,
|
||||
9149924A25913E3F00B5BE97 /* ledgroup.hpp */,
|
||||
91B5BD192D7D3A5400DF391F /* line.hpp */,
|
||||
910BBAB80FB91ADB001E34EA /* message.hpp */,
|
||||
910BBAA80FB8F733001E34EA /* pict.hpp */,
|
||||
913FB40A1A5C90840067B9D2 /* pictypes.hpp */,
|
||||
@@ -2172,6 +2177,7 @@
|
||||
919CC27E1B37743B00273FDA /* undo.cpp in Sources */,
|
||||
919CC27F1B37744000273FDA /* winutil.mac.mm in Sources */,
|
||||
D384F6A32C1B9D4000A806C3 /* replay.cpp in Sources */,
|
||||
91B5BD1F2D7D3C2B00DF391F /* line.cpp in Sources */,
|
||||
915473CF2C800AB000EB1C94 /* enchant.cpp in Sources */,
|
||||
915AF9E81BBF8B5C008AEF49 /* scrollpane.cpp in Sources */,
|
||||
91E128E71BC1E6DD00C8BE1D /* basicbtns.cpp in Sources */,
|
||||
|
@@ -10,7 +10,30 @@
|
||||
To have the PC stand ready, click on them.
|
||||
The buttons on the bottom act as follows:
|
||||
</text>
|
||||
<pict type='full' num='1401' top='66' left='147' width='320' height='125'/>
|
||||
<pict name='toolbar' type='blank' outline='solid' color='white' top='66' left='147' width='320' height='125'/>
|
||||
<pict name='ztoolbar' anchor='toolbar' relative='pos-in' type='full' framed='false' num='1401' top='56' left='23' width='266' height='38'/>
|
||||
<text name='zheader' anchor='toolbar' relative='pos-in' color='black' top='4' left='0'>Combat Commands:</text>
|
||||
<text name='zparen' anchor='toolbar' relative='pos-in' color='black' top='14' left='10' width='280' size='10' font='plain'>
|
||||
(keyboard shortcut follows in parenthesis)
|
||||
</text>
|
||||
<text name='zlabel1' anchor='toolbar' relative='pos-in' color='black' top='30' left='27' size='9' font='plain'>Cast Priest (p)</text>
|
||||
<line name='zline1' anchor='toolbar' relative='pos-in' top='44' left='79' width='0' height='12' color='black'/>
|
||||
<text name='zlabel2' anchor='toolbar' relative='pos-in' color='black' top='30' left='114' size='9' font='plain'>Parry (d)</text>
|
||||
<line name='zline2' anchor='toolbar' relative='pos-in' top='44' left='146' width='0' height='12' color='black'/>
|
||||
<text name='zlabel3' anchor='toolbar' relative='pos-in' color='black' top='30' left='189' size='9' font='plain'>Wait (w)</text>
|
||||
<line name='zline3' anchor='toolbar' relative='pos-in' top='44' left='218' width='0' height='12' color='black'/>
|
||||
<text name='zlabel4' anchor='toolbar' relative='pos-in' color='black' top='30' left='234' size='9' font='plain'>End Combat (e)</text>
|
||||
<line name='zline4' anchor='toolbar' relative='pos-in' top='44' left='277' width='0' height='12' color='black'/>
|
||||
<text name='zlabel5' anchor='toolbar' relative='pos-in' color='black' top='105' left='-2' size='9' font='plain'>Cast Mage (m)</text>
|
||||
<line name='zline5' anchor='toolbar' relative='pos-in' top='94' left='42' width='0' height='13' color='black'/>
|
||||
<text name='zlabel6' anchor='toolbar' relative='pos-in' color='black' top='105' left='81' size='9' font='plain'>Look (l)</text>
|
||||
<line name='zline6' anchor='toolbar' relative='pos-in' top='94' left='113' width='0' height='13' color='black'/>
|
||||
<text name='zlabel7' anchor='toolbar' relative='pos-in' color='black' top='105' left='151' size='9' font='plain'>Get (g)</text>
|
||||
<line name='zline7' anchor='toolbar' relative='pos-in' top='94' left='188' width='0' height='13' color='black'/>
|
||||
<text name='zlabel8' anchor='toolbar' relative='pos-in' color='black' top='105' left='189' size='9' font='plain'>Shoot (s)</text>
|
||||
<line name='zline8' anchor='toolbar' relative='pos-in' top='94' left='223' width='0' height='13' color='black'/>
|
||||
<text name='zlabel9' anchor='toolbar' relative='pos-in' color='black' top='105' left='235' size='9' font='plain'>Make Active (x)</text>
|
||||
<line name='zline9' anchor='toolbar' relative='pos-in' top='94' left='276' width='0' height='13' color='black'/>
|
||||
<text top='206' left='66' width='475' height='35'>
|
||||
Make Active -
|
||||
This either makes only current character active,
|
||||
@@ -23,7 +46,32 @@
|
||||
and being hasted increases it.
|
||||
The cost of each action is ...
|
||||
</text>
|
||||
<pict type='full' num='1300' top='232' left='284' width='275' height='100'/>
|
||||
<pict name='apcost' type='blank' outline='solid' color='white' top='232' left='284' width='275' height='100'/>
|
||||
<text name='zheader2' anchor='apcost' relative='pos-in' color='black' size='11' underline='true' top='5' left='-2'>Action Point Cost:</text>
|
||||
<text name='zaction1' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='18' left='2'>Cast Mage Spell</text>
|
||||
<text name='zpoints1' anchor='apcost' relative='pos-in' color='black' size='10' top='20' left='105'>6</text>
|
||||
<text name='zaction2' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='30' left='2'>Cast Priest Spell</text>
|
||||
<text name='zpoints2' anchor='apcost' relative='pos-in' color='black' size='10' top='32' left='105'>5</text>
|
||||
<text name='zaction3' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='42' left='2'>Attack</text>
|
||||
<text name='zpoints3' anchor='apcost' relative='pos-in' color='black' size='10' top='44' left='105'>4</text>
|
||||
<text name='zaction4' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='54' left='2'>Fire Arrow</text>
|
||||
<text name='zpoints4' anchor='apcost' relative='pos-in' color='black' size='10' top='56' left='105'>3</text>
|
||||
<text name='zaction5' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='66' left='2'>Fire Thrown Missile</text>
|
||||
<text name='zpoints5' anchor='apcost' relative='pos-in' color='black' size='10' top='68' left='105'>2</text>
|
||||
<text name='zaction6' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='78' left='2'>Get Items</text>
|
||||
<text name='zpoints6' anchor='apcost' relative='pos-in' color='black' size='10' top='80' left='105'>4</text>
|
||||
<text name='zaction7' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='18' left='117' width='138'>Equip/Unequip Item</text>
|
||||
<text name='zpoints7' anchor='apcost' relative='pos-in' color='black' size='10' top='20' left='230'>1</text>
|
||||
<text name='zaction8' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='30' left='117'>Drop Item</text>
|
||||
<text name='zpoints8' anchor='apcost' relative='pos-in' color='black' size='10' top='32' left='230'>1</text>
|
||||
<text name='zaction9' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='42' left='117'>Give Item</text>
|
||||
<text name='zpoints9' anchor='apcost' relative='pos-in' color='black' size='10' top='44' left='230'>1</text>
|
||||
<text name='zaction10' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='54' left='117'>Trade Places</text>
|
||||
<text name='zpoints10' anchor='apcost' relative='pos-in' color='black' size='10' top='56' left='230'>1</text>
|
||||
<text name='zaction11' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='66' left='117'>Parry</text>
|
||||
<text name='zpoints11' anchor='apcost' relative='pos-in' color='black' size='10' top='68' left='230' width='25'>All</text>
|
||||
<text name='zaction12' anchor='apcost' relative='pos-in' color='black' size='10' font='plain' top='78' left='117'>Look</text>
|
||||
<text name='zpoints12' anchor='apcost' relative='pos-in' color='black' size='10' top='80' left='230'>0</text>
|
||||
<text top='348' left='66' width='476' height='49'>
|
||||
Outdoors, you can only end combat when all foes are dead.
|
||||
In an outdoor combat, to flee, move everyone off the border of the battlefield.
|
||||
|
@@ -21,7 +21,21 @@
|
||||
The Sell, ID, and Enchant buttons only appear when talking to a person who can do these things.
|
||||
Many shopkeepers will buy your items, and certain sages can identify and even enchant them.
|
||||
</text>
|
||||
<pict type='full' num='1100' top='136' left='350' width='138' height='112'/>
|
||||
<pict name='buttons' type='blank' outline='solid' color='white' top='136' left='350' width='138' height='112'/>
|
||||
<pict name='zuse1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='2' top='9' left='20' framed='false'/>
|
||||
<text name='zuse2' anchor='buttons' relative='pos-in' top='6' left='45' color='black' size='9'>Use Item</text>
|
||||
<pict name='zgive1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='3' top='22' left='20' framed='false'/>
|
||||
<text name='zgive2' anchor='buttons' relative='pos-in' top='19' left='45' color='black' size='9'>Give Item</text>
|
||||
<pict name='zdrop1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='4' top='35' left='19' framed='false'/>
|
||||
<text name='zdrop2' anchor='buttons' relative='pos-in' top='33' left='45' color='black' size='9'>Drop Item</text>
|
||||
<pict name='zinfo1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='5' top='48' left='19' framed='false'/>
|
||||
<text name='zinfo2' anchor='buttons' relative='pos-in' top='46' left='45' color='black' size='9'>Item Info</text>
|
||||
<pict name='zid1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='6' top='62' left='11' framed='false'/>
|
||||
<text name='zid2' anchor='buttons' relative='pos-in' top='59' left='45' color='black' size='9'>Pay to identify</text>
|
||||
<pict name='zsell1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='7' top='75' left='11' framed='false'/>
|
||||
<text name='zsell2' anchor='buttons' relative='pos-in' top='73' left='45' color='black' size='9'>Sell Item</text>
|
||||
<pict name='zench1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='8' top='88' left='11' framed='false'/>
|
||||
<text name='zench2' anchor='buttons' relative='pos-in' top='85' left='45' color='black' size='9'>Pay to enchant</text>
|
||||
<text top='274' left='63' width='429' height='50'>
|
||||
Items from slain monsters normally appear unidentified.
|
||||
To identify them, take them to a sage.
|
||||
|
@@ -4,12 +4,31 @@
|
||||
<dialog defbtn='okay'>
|
||||
<pict type='dlog' num='24' top='8' left='8'/>
|
||||
<text top='10' left='52' width='292' height='16'>BLADES OF EXILE HELP: OUTDOOR COMMANDS</text>
|
||||
<text top='31' left='65' width='456' height='34'>
|
||||
<text top='31' left='65' width='420' height='34'>
|
||||
To move, click on the terrain screen in the direction you want to move, or use the keypad.
|
||||
To wait, click on your party.
|
||||
The buttons on the bottom act as follows:
|
||||
</text>
|
||||
<pict type='full' num='1400' top='68' left='118' width='320' height='125'/>
|
||||
<pict name='toolbar' type='blank' outline='solid' color='white' top='68' left='118' width='320' height='125'/>
|
||||
<pict name='ztoolbar' anchor='toolbar' relative='pos-in' type='full' framed='false' num='1400' top='56' left='23' width='266' height='38'/>
|
||||
<text name='zheader' anchor='toolbar' relative='pos-in' color='black' top='4' left='0'>Town Commands:</text>
|
||||
<text name='zparen' anchor='toolbar' relative='pos-in' color='black' top='14' left='10' width='280' size='10' font='plain'>
|
||||
(keyboard shortcut follows in parenthesis)
|
||||
</text>
|
||||
<text name='zlabel1' anchor='toolbar' relative='pos-in' color='black' top='30' left='27' size='9' font='plain'>Cast Priest (p)</text>
|
||||
<line name='zline1' anchor='toolbar' relative='pos-in' top='44' left='79' width='0' height='12' color='black'/>
|
||||
<text name='zlabel2' anchor='toolbar' relative='pos-in' color='black' top='30' left='130' size='9' font='plain'>Display AutoMap (a)</text>
|
||||
<line name='zline2' anchor='toolbar' relative='pos-in' top='44' left='199' width='0' height='12' color='black'/>
|
||||
<text name='zlabel3' anchor='toolbar' relative='pos-in' color='black' top='0' left='240' width='90' size='9' font='plain'>Load Game<br/>(PC: Ctrl-O)<br/>(Mac: Cmd-O)</text>
|
||||
<line name='zline3' anchor='toolbar' relative='pos-in' top='44' left='274' width='0' height='12' color='black'/>
|
||||
<text name='zlabel4' anchor='toolbar' relative='pos-in' color='black' top='105' left='-2' size='9' font='plain'>Cast Mage (m)</text>
|
||||
<line name='zline4' anchor='toolbar' relative='pos-in' top='94' left='42' width='0' height='13' color='black'/>
|
||||
<text name='zlabel5' anchor='toolbar' relative='pos-in' color='black' top='105' left='81' size='9' font='plain'>Look (l)</text>
|
||||
<line name='zline5' anchor='toolbar' relative='pos-in' top='94' left='113' width='0' height='13' color='black'/>
|
||||
<text name='zlabel6' anchor='toolbar' relative='pos-in' color='black' top='105' left='140' size='9' font='plain'>Rest (r)</text>
|
||||
<line name='zline6' anchor='toolbar' relative='pos-in' top='94' left='162' width='0' height='13' color='black'/>
|
||||
<text name='zlabel7' anchor='toolbar' relative='pos-in' color='black' top='90' left='196' width='134' size='9' font='plain'>Save Game<br/>(PC: Ctrl-S Mac: Cmd-S)</text>
|
||||
<line name='zline7' anchor='toolbar' relative='pos-in' top='94' left='241' width='0' height='11' color='black'/>
|
||||
<text top='209' left='69' width='417' height='33'>
|
||||
To read a sign or search something, stand adjacent to it and look at it.
|
||||
To enter a town/dungeon/tower/pit. etc., move onto it.
|
||||
|
@@ -7,7 +7,11 @@
|
||||
<text top='29' left='61' width='394' height='33'>
|
||||
This area lists the names of your party members, their health and magic points, and two buttons:
|
||||
</text>
|
||||
<pict type='full' num='1200' top='66' left='168' width='106' height='29'/>
|
||||
<pict name='buttons' type='blank' outline='solid' color='white' top='66' left='168' width='106' height='29'/>
|
||||
<pict name='zinfo1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='0' top='3' left='6' framed='false'/>
|
||||
<text name='zinfo2' anchor='buttons' relative='pos-in' top='0' left='17' color='black' size='9'>Character Info</text>
|
||||
<pict name='zswitch1' anchor='buttons' relative='pos-in' filled='false' type='btn' num='1' top='16' left='6' framed='false'/>
|
||||
<text name='zswitch2' anchor='buttons' relative='pos-in' top='14' left='17' color='black' size='9'>Switch Places</text>
|
||||
<text top='102' left='61' width='401' height='46'>
|
||||
To have two PCs switch places, click on their switch places buttons.
|
||||
To get a full description of a character, click on the '?' button.
|
||||
|
@@ -9,7 +9,28 @@
|
||||
To wait, click on your party.
|
||||
The action buttons (and the equivalent keys) are:
|
||||
</text>
|
||||
<pict type='full' num='1402' top='87' left='107' width='320' height='125'/>
|
||||
<pict name='toolbar' type='blank' outline='solid' color='white' top='87' left='107' width='320' height='125'/>
|
||||
<pict name='ztoolbar' anchor='toolbar' relative='pos-in' type='full' framed='false' num='1402' top='56' left='23' width='266' height='38'/>
|
||||
<text name='zheader' anchor='toolbar' relative='pos-in' color='black' top='4' left='0'>Town Commands:</text>
|
||||
<text name='zparen' anchor='toolbar' relative='pos-in' color='black' top='14' left='10' width='280' size='10' font='plain'>
|
||||
(keyboard shortcut follows in parenthesis)
|
||||
</text>
|
||||
<text name='zlabel1' anchor='toolbar' relative='pos-in' color='black' top='30' left='27' size='9' font='plain'>Cast Priest (p)</text>
|
||||
<line name='zline1' anchor='toolbar' relative='pos-in' top='44' left='79' width='0' height='12' color='black'/>
|
||||
<text name='zlabel2' anchor='toolbar' relative='pos-in' color='black' top='30' left='155' size='9' font='plain'>Get (g)</text>
|
||||
<line name='zline2' anchor='toolbar' relative='pos-in' top='44' left='185' width='0' height='12' color='black'/>
|
||||
<text name='zlabel3' anchor='toolbar' relative='pos-in' color='black' top='30' left='211' size='9' font='plain'>Use (u)</text>
|
||||
<line name='zline3' anchor='toolbar' relative='pos-in' top='44' left='225' width='0' height='12' color='black'/>
|
||||
<text name='zlabel4' anchor='toolbar' relative='pos-in' color='black' top='105' left='-2' size='9' font='plain'>Cast Mage (m)</text>
|
||||
<line name='zline4' anchor='toolbar' relative='pos-in' top='94' left='42' width='0' height='13' color='black'/>
|
||||
<text name='zlabel5' anchor='toolbar' relative='pos-in' color='black' top='105' left='81' size='9' font='plain'>Look (l)</text>
|
||||
<line name='zline5' anchor='toolbar' relative='pos-in' top='94' left='113' width='0' height='13' color='black'/>
|
||||
<text name='zlabel6' anchor='toolbar' relative='pos-in' color='black' top='105' left='128' size='9' font='plain'>Talk (t)</text>
|
||||
<line name='zline6' anchor='toolbar' relative='pos-in' top='94' left='151' width='0' height='13' color='black'/>
|
||||
<text name='zlabel7' anchor='toolbar' relative='pos-in' color='black' top='105' left='185' size='9' font='plain'>Map (m)</text>
|
||||
<line name='zline7' anchor='toolbar' relative='pos-in' top='94' left='225' width='0' height='13' color='black'/>
|
||||
<text name='zlabel8' anchor='toolbar' relative='pos-in' color='black' top='105' left='226' width='94' size='9' font='plain'>Start Combat (f)</text>
|
||||
<line name='zline8' anchor='toolbar' relative='pos-in' top='94' left='262' width='0' height='13' color='black'/>
|
||||
<text top='227' left='61' width='428' height='49'>
|
||||
When talking, looking, or using, first click on the appropriate button,
|
||||
and then click on the space to act on.
|
||||
|
@@ -5,5 +5,5 @@
|
||||
<button name='okay' type='regular' top='276' left='232'>OK</button>
|
||||
<pict type='dlog' num='21' top='6' left='6'/>
|
||||
<text name='title' size='large' top='6' left='50' width='300' height='17'>Map of Somewhere:</text>
|
||||
<pict name='map' type='full' num='1100' top='28' left='50'/>
|
||||
<pict name='map' type='full' num='1400' top='28' left='50'/>
|
||||
</dialog>
|
||||
|
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 7.0 KiB |
Before Width: | Height: | Size: 527 B |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 7.8 KiB |
@@ -18,6 +18,7 @@
|
||||
<xs:enumeration value="full"/>
|
||||
<xs:enumeration value="map"/>
|
||||
<xs:enumeration value="status"/>
|
||||
<xs:enumeration value="btn"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="btntype">
|
||||
@@ -213,8 +214,8 @@
|
||||
<xs:attribute name="num" type="xs:integer"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
<xs:attribute name="fill-color"/>
|
||||
<xs:attribute name="fill-colour"/>
|
||||
<xs:attribute name="color"/>
|
||||
<xs:attribute name="colour"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType mixed="true" name="button">
|
||||
<xs:sequence>
|
||||
@@ -252,6 +253,28 @@
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="line">
|
||||
<xs:attribute name="slope">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:token">
|
||||
<xs:enumeration value="positive"/>
|
||||
<xs:enumeration value="negative"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="name" type="xs:token"/>
|
||||
<xs:attribute name="size">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:integer">
|
||||
<xs:minInclusive value='2'/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="color"/>
|
||||
<xs:attribute name="colour"/>
|
||||
<xs:attributeGroup ref="rect-size"/>
|
||||
<xs:attributeGroup ref="position"/>
|
||||
</xs:complexType>
|
||||
<xs:complexType name="slider">
|
||||
<xs:attribute name="name" type="xs:token"/>
|
||||
<xs:attribute name="max" type="xs:integer" use="required"/>
|
||||
@@ -278,6 +301,7 @@
|
||||
<xs:element name="pict" type="pict"/>
|
||||
<xs:element name="button" type="button"/>
|
||||
<xs:element name="led" type="led"/>
|
||||
<xs:element name="line" type="line"/>
|
||||
<xs:element name="group" type="ledGroup"/>
|
||||
<xs:element name="slider" type="slider"/>
|
||||
<xs:element name="page">
|
||||
@@ -308,6 +332,7 @@
|
||||
<xs:element name="pict" type="pict"/>
|
||||
<xs:element name="button" type="button"/>
|
||||
<xs:element name="led" type="led"/>
|
||||
<xs:element name="line" type="line"/>
|
||||
<xs:element name="group" type="ledGroup"/>
|
||||
<xs:element name="mapgroup" type="ledGroup"/>
|
||||
<xs:element name="slider" type="slider"/>
|
||||
@@ -327,6 +352,7 @@
|
||||
<xs:element name="pict" type="pict"/>
|
||||
<xs:element name="button" type="button"/>
|
||||
<xs:element name="led" type="led"/>
|
||||
<xs:element name="line" type="line"/>
|
||||
<xs:element name="group" type="ledGroup"/>
|
||||
<xs:element name="slider" type="slider"/>
|
||||
</xs:choice>
|
||||
@@ -344,6 +370,7 @@
|
||||
<xs:element name="pict" type="pict"/>
|
||||
<xs:element name="button" type="button"/>
|
||||
<xs:element name="led" type="led"/>
|
||||
<xs:element name="line" type="line"/>
|
||||
<xs:element name="group" type="ledGroup"/>
|
||||
<xs:element name="slider" type="slider"/>
|
||||
<xs:element name="stack" type="stack">
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include "dialogxml/widgets/button.hpp"
|
||||
#include "dialogxml/widgets/field.hpp"
|
||||
#include "dialogxml/widgets/ledgroup.hpp"
|
||||
#include "dialogxml/widgets/line.hpp"
|
||||
#include "dialogxml/widgets/message.hpp"
|
||||
#include "dialogxml/widgets/scrollbar.hpp"
|
||||
#include "dialogxml/widgets/scrollpane.hpp"
|
||||
@@ -212,6 +213,8 @@ void cDialog::loadFromFile(const DialogDefn& file){
|
||||
inserted = controls.insert(parse<cButton>(*node, *this)).first;
|
||||
else if(type == "led")
|
||||
inserted = controls.insert(parse<cLed>(*node, *this)).first;
|
||||
else if(type == "line")
|
||||
inserted = controls.insert(parse<cConnector>(*node, *this)).first;
|
||||
else if(type == "group")
|
||||
inserted = controls.insert(parse<cLedGroup>(*node, *this)).first;
|
||||
else if(type == "stack") {
|
||||
@@ -256,6 +259,7 @@ void cDialog::loadFromFile(const DialogDefn& file){
|
||||
case CTRL_UNKNOWN: ctrlType = "???"; break;
|
||||
case CTRL_BTN: ctrlType = "button"; break;
|
||||
case CTRL_LED: ctrlType = "led"; break;
|
||||
case CTRL_LINE: ctrlType = "line"; break;
|
||||
case CTRL_PICT: ctrlType = "pict"; break;
|
||||
case CTRL_FIELD: ctrlType = "field"; break;
|
||||
case CTRL_TEXT: ctrlType = "text"; break;
|
||||
@@ -279,6 +283,7 @@ void cDialog::loadFromFile(const DialogDefn& file){
|
||||
case CTRL_UNKNOWN: ctrlType = "???"; break;
|
||||
case CTRL_BTN: ctrlType = "button"; break;
|
||||
case CTRL_LED: ctrlType = "led"; break;
|
||||
case CTRL_LINE: ctrlType = "line"; break;
|
||||
case CTRL_PICT: ctrlType = "pict"; break;
|
||||
case CTRL_FIELD: ctrlType = "field"; break;
|
||||
case CTRL_TEXT: ctrlType = "text"; break;
|
||||
|
@@ -11,6 +11,7 @@
|
||||
#include "dialogxml/widgets/button.hpp"
|
||||
#include "dialogxml/widgets/field.hpp"
|
||||
#include "dialogxml/widgets/ledgroup.hpp"
|
||||
#include "dialogxml/widgets/line.hpp"
|
||||
#include "dialogxml/widgets/message.hpp"
|
||||
#include "dialogxml/widgets/pict.hpp"
|
||||
#include "dialogxml/widgets/scrollbar.hpp"
|
||||
@@ -48,6 +49,10 @@ bool cContainer::parseChildControl(ticpp::Element& elem, std::map<std::string,cC
|
||||
auto led = getDialog()->parse<cLed>(elem, *this);
|
||||
inserted = controls.insert(led).first;
|
||||
id = led.first;
|
||||
} else if(tag == "line") {
|
||||
auto line = getDialog()->parse<cConnector>(elem, *this);
|
||||
inserted = controls.insert(line).first;
|
||||
id = line.first;
|
||||
} else if(tag == "group") {
|
||||
auto group = getDialog()->parse<cLedGroup>(elem, *this);
|
||||
inserted = controls.insert(group).first;
|
||||
|
@@ -66,6 +66,7 @@ enum eControlType {
|
||||
CTRL_SCROLL,///< A scrollbar
|
||||
CTRL_PANE, ///< A scroll pane
|
||||
CTRL_MAP, ///< A 2-dimensional grid of identical controls
|
||||
CTRL_LINE, ///< Just a line connecting two points
|
||||
};
|
||||
|
||||
enum ePosition {
|
||||
|
97
src/dialogxml/widgets/line.cpp
Normal file
@@ -0,0 +1,97 @@
|
||||
//
|
||||
// line.cpp
|
||||
// BoE
|
||||
//
|
||||
// Created by Celtic Minstrel on 2025-03-08.
|
||||
//
|
||||
|
||||
#include "line.hpp"
|
||||
#include "dialogxml/dialogs/dialog.hpp"
|
||||
#include "gfx/render_shapes.hpp"
|
||||
|
||||
bool cConnector::manageFormat(eFormat prop, bool set, boost::any* val) {
|
||||
switch(prop) {
|
||||
case TXT_SIZE:
|
||||
if(val) {
|
||||
if(set) thickness = boost::any_cast<short>(*val);
|
||||
else *val = thickness;
|
||||
}
|
||||
break;
|
||||
case TXT_COLOUR:
|
||||
if(val) {
|
||||
if(set) color = boost::any_cast<sf::Color>(*val);
|
||||
else *val = color;
|
||||
}
|
||||
break;
|
||||
default: return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cConnector::parseAttribute(ticpp::Attribute& attr, std::string tagName, std::string fname) {
|
||||
if(attr.Name() == "slope") {
|
||||
if(attr.Value() == "positive") flip = true;
|
||||
else if(attr.Value() == "negative") flip = false;
|
||||
else throw xBadVal(tagName, attr.Name(), attr.Value(), attr.Row(), attr.Column(), fname);
|
||||
return true;
|
||||
}
|
||||
return cControl::parseAttribute(attr, tagName, fname);
|
||||
}
|
||||
|
||||
void cConnector::validatePostParse(ticpp::Element& who, std::string fname, const std::set<std::string>& attrs, const std::multiset<std::string>& nodes) {
|
||||
cControl::validatePostParse(who, fname, attrs, nodes);
|
||||
if(!attrs.count("color") && !attrs.count("colour") && getDialog()->getBg() == cDialog::BG_DARK)
|
||||
setColour(sf::Color::White);
|
||||
// Width or height can be zero, but not both
|
||||
if(frame.width() == 0 && frame.height() == 0)
|
||||
throw xBadVal("line", "width", "0", who.Row(), who.Column(), fname);
|
||||
// slope attribute forbidden if either width or height is zero
|
||||
if(attrs.count("slope") && (frame.width() == 0 || frame.height() == 0))
|
||||
throw xBadAttr("line", "slope", who.Row(), who.Column(), fname);
|
||||
}
|
||||
|
||||
cConnector::cConnector(iComponent& parent)
|
||||
: cControl(CTRL_TEXT,parent)
|
||||
, color(parent.getDefTextClr())
|
||||
{}
|
||||
|
||||
bool cConnector::isClickable() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cConnector::isFocusable() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool cConnector::isScrollable() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
void cConnector::draw(){
|
||||
getWindow().setActive();
|
||||
|
||||
if(visible){
|
||||
location first(flip ? frame.right : frame.left, frame.top);
|
||||
location end(flip ? frame.left : frame.right, frame.bottom);
|
||||
draw_line(getWindow(), first, end, thickness, color);
|
||||
// sf::ConvexShape convex;
|
||||
// convex.setPointCount(4);
|
||||
// convex.setFillColor(color);
|
||||
// convex.setOutlineThickness(0);
|
||||
// if(x2 - x1 == 0) {
|
||||
// convex.setPoint(0, sf::Vector2f(x1 - thickness / 2, y1));
|
||||
// convex.setPoint(1, sf::Vector2f(x1 + thickness / 2, y1));
|
||||
// convex.setPoint(2, sf::Vector2f(x2 + thickness / 2, y2));
|
||||
// convex.setPoint(3, sf::Vector2f(x2 - thickness / 2, y2));
|
||||
// } else {
|
||||
// float alpha = atan2(y2 - y1, x2 - x1);
|
||||
// convex.setPoint(0, sf::Vector2f(x1 - (thickness / 2) * sin(alpha), y1 + (thickness / 2) * cos(alpha)));
|
||||
// convex.setPoint(1, sf::Vector2f(x1 + (thickness / 2) * sin(alpha), y1 - (thickness / 2) * cos(alpha)));
|
||||
// convex.setPoint(2, sf::Vector2f(x2 + (thickness / 2) * sin(alpha), y2 - (thickness / 2) * cos(alpha)));
|
||||
// convex.setPoint(3, sf::Vector2f(x2 - (thickness / 2) * sin(alpha), y2 + (thickness / 2) * cos(alpha)));
|
||||
// }
|
||||
// getWindow().draw(convex);
|
||||
}
|
||||
}
|
||||
|
||||
cConnector::~cConnector() {}
|
42
src/dialogxml/widgets/line.hpp
Normal file
@@ -0,0 +1,42 @@
|
||||
//
|
||||
// line.hpp
|
||||
// BoE
|
||||
//
|
||||
// Created by Celtic Minstrel on 2025-03-08.
|
||||
//
|
||||
|
||||
#ifndef BOE_DIALOG_LINE_HPP
|
||||
#define BOE_DIALOG_LINE_HPP
|
||||
|
||||
#include "control.hpp"
|
||||
|
||||
/// A simple line drawn between two points.
|
||||
class cConnector : public cControl {
|
||||
public:
|
||||
bool parseAttribute(ticpp::Attribute& attr, std::string tagName, std::string fname) override;
|
||||
void validatePostParse(ticpp::Element& who, std::string fname, const std::set<std::string>& attrs, const std::multiset<std::string>& nodes) override;
|
||||
bool manageFormat(eFormat prop, bool set, boost::any* val) override;
|
||||
/// Create a connector.
|
||||
/// @param parent The parent dialog.
|
||||
explicit cConnector(iComponent& parent);
|
||||
bool isClickable() const override;
|
||||
bool isFocusable() const override;
|
||||
bool isScrollable() const override;
|
||||
virtual ~cConnector();
|
||||
void draw() override;
|
||||
/// @copydoc cControl::getSupportedHandlers
|
||||
///
|
||||
/// @todo Document possible handlers
|
||||
std::set<eDlogEvt> getSupportedHandlers() const override {
|
||||
return {EVT_CLICK};
|
||||
}
|
||||
cConnector& operator=(cConnector& other) = delete;
|
||||
cConnector(cConnector& other) = delete;
|
||||
private:
|
||||
sf::Color color;
|
||||
rectangle to_rect;
|
||||
size_t thickness = 2;
|
||||
bool flip = false;
|
||||
};
|
||||
|
||||
#endif
|
@@ -68,6 +68,7 @@ void cPict::init(){
|
||||
drawPict()[PIC_PARTY_MONST_WIDE] = &cPict::drawPartyMonstWide;
|
||||
drawPict()[PIC_PARTY_MONST_TALL] = &cPict::drawPartyMonstTall;
|
||||
drawPict()[PIC_PARTY_MONST_LG] = &cPict::drawPartyMonstLg;
|
||||
drawPict()[PIC_BTN] = &cPict::drawInvenBtn;
|
||||
}
|
||||
|
||||
std::map<ePicType,void(cPict::*)(short,rectangle)>& cPict::drawPict(){
|
||||
@@ -473,6 +474,8 @@ bool cPict::parseAttribute(ticpp::Attribute& attr, std::string tagName, std::str
|
||||
picType = PIC_TER_MAP;
|
||||
else if(val == "status")
|
||||
picType = PIC_STATUS;
|
||||
else if(val == "btn")
|
||||
picType = PIC_BTN;
|
||||
else throw xBadVal(tagName, name, val, attr.Row(), attr.Column(), fname);
|
||||
return true;
|
||||
} else if(name == "num") {
|
||||
@@ -593,6 +596,25 @@ void cPict::recalcRect() {
|
||||
bounds.width() = 12;
|
||||
bounds.height() = 12;
|
||||
break;
|
||||
case PIC_BTN:
|
||||
switch(picNum) {
|
||||
case 0: case 1:
|
||||
bounds.width() = 12;
|
||||
bounds.height() = 12;
|
||||
break;
|
||||
case 2: case 3: case 4: case 5:
|
||||
bounds.width() = 14;
|
||||
bounds.height() = 12;
|
||||
break;
|
||||
case 6: case 7: case 8: case 9:
|
||||
bounds.width() = 30;
|
||||
bounds.height() = 12;
|
||||
break;
|
||||
case 10: case 11:
|
||||
bounds.width() = 35;
|
||||
bounds.height() = 15;
|
||||
break;
|
||||
} break;
|
||||
case PIC_FULL:
|
||||
case PIC_CUSTOM_FULL:
|
||||
if(drawScaled) break;
|
||||
@@ -675,18 +697,12 @@ std::shared_ptr<const sf::Texture> cPict::getSheetInternal(eSheetType type, size
|
||||
case SHEET_CUSTOM:
|
||||
// TODO: Implement this
|
||||
break;
|
||||
case SHEET_INVENBTN:
|
||||
sout << "invenbtns";
|
||||
break;
|
||||
case SHEET_FULL:
|
||||
purgeable = true;
|
||||
switch(n) {
|
||||
case 1100:
|
||||
sout << "invenhelp";
|
||||
break;
|
||||
case 1200:
|
||||
sout << "stathelp";
|
||||
break;
|
||||
case 1300:
|
||||
sout << "actionhelp";
|
||||
break;
|
||||
case 1400:
|
||||
sout << "outhelp";
|
||||
break;
|
||||
@@ -697,7 +713,7 @@ std::shared_ptr<const sf::Texture> cPict::getSheetInternal(eSheetType type, size
|
||||
sout << "townhelp";
|
||||
break;
|
||||
default:
|
||||
// TODO: The scenario should be allowed to define a sheet1100.png without it being ignored in favour of invenhelp.png
|
||||
// TODO: The scenario should be allowed to define a sheet1400.png without it being ignored in favour of outhelp.png
|
||||
purgeable = false;
|
||||
sout << "sheet" << n;
|
||||
}
|
||||
@@ -1351,6 +1367,29 @@ void cPict::drawPartyPc(short num, rectangle to_rect){
|
||||
rect_draw_some_item(*from_gw, from_rect, getWindow(), to_rect, sf::BlendAlpha);
|
||||
}
|
||||
|
||||
void cPict::drawInvenBtn(short num, rectangle to_rect){
|
||||
static rectangle from_rect[]{
|
||||
{0, 1, 12, 13}, // pc info
|
||||
{0, 13, 12, 25}, // pc switch
|
||||
{12, 0, 24, 14}, // item use
|
||||
{12, 14, 24, 28}, // item give
|
||||
{12, 28, 24, 42}, // item drop
|
||||
{12, 42, 24, 56}, // item info
|
||||
{24, 0, 36, 30}, // ID
|
||||
{36, 0, 48, 30}, // Sell
|
||||
{48, 0, 60, 30}, // Enchant
|
||||
{60, 0, 72, 30}, // Recharge
|
||||
{0, 60, 15, 95}, // Special Items
|
||||
{15, 60, 30, 95}, // Jobs
|
||||
};
|
||||
static const size_t n_pics = std::distance(std::begin(from_rect), std::end(from_rect));
|
||||
if(num >= n_pics) return;
|
||||
auto from_gw = getSheet(SHEET_INVENBTN);
|
||||
if(!from_gw) return;
|
||||
if(filled) fill_rect(getWindow(), to_rect, fillClr);
|
||||
rect_draw_some_item(*from_gw, from_rect[num], getWindow(), to_rect, sf::BlendAlpha);
|
||||
}
|
||||
|
||||
cPict::~cPict() {}
|
||||
|
||||
void cPict::drawAt(sf::RenderWindow& win, rectangle dest, pic_num_t which_g, ePicType type_g, bool framed) {
|
||||
|
@@ -143,6 +143,7 @@ private:
|
||||
void drawPartyScen(short num, rectangle to_rect);
|
||||
void drawPartyItem(short num, rectangle to_rect);
|
||||
void drawPartyPc(short num, rectangle to_rect);
|
||||
void drawInvenBtn(short num, rectangle to_rect);
|
||||
static std::map<ePicType,void(cPict::*)(short,rectangle)>& drawPict();
|
||||
};
|
||||
|
||||
|
@@ -33,6 +33,7 @@ enum ePicType {
|
||||
PIC_TER_MAP = 15, ///< 12x12 map graphic from the terrain map sheet, expanded to 24x24
|
||||
PIC_STATUS = 16, ///< 12x12 status icon
|
||||
PIC_TINY_ITEM = 17, ///< 18x18 item graphic from the small item sheet
|
||||
PIC_BTN = 18, ///< Button graphic from the inventory buttons sheet (various sizes)
|
||||
PIC_MONST_WIDE = 23, ///< 56x36 monster graphic from the preset sheets, resized to fit and centred in a 28x36 space
|
||||
PIC_MONST_TALL = 43, ///< 28x72 monster graphic from the preset sheets, resized to fit and centred in a 28x36 space
|
||||
PIC_MONST_LG = 63, ///< 56x72 monster graphic from the preset sheets, resized to fit in a 28x36 space
|
||||
@@ -93,6 +94,7 @@ enum eSheetType {
|
||||
SHEET_TER_MAP, ///< The terrain map icons sheet, termap.png
|
||||
SHEET_FULL, ///< Any full sheet
|
||||
SHEET_STATUS, ///< The status icons sheet, staticons.png
|
||||
SHEET_INVENBTN, ///< Inventory buttons sheet, invenbtns.png
|
||||
SHEET_CUSTOM, ///< Any custom graphics sheet
|
||||
// TODO: Vehicle sheet is missing.
|
||||
// TODO: Documentation of full, custom, header, and exported sheets is still lacking.
|
||||
|
@@ -192,6 +192,7 @@ only if `size` is `large`. Can be either `true` or `false`, defaults to
|
||||
`false`.
|
||||
* `filled` - For transparent graphics, specifies whether to draw a solid
|
||||
black fill behind the icon
|
||||
* `color` - The colour of the solid fill. Defaults to black.
|
||||
* `def-key` - See **Common Attributes** above.
|
||||
|
||||
The possible values for the `type` attribute are:
|
||||
|