XML:PSpc

From OniGalore
Revision as of 00:15, 21 April 2021 by Iritscen (talk | contribs) (→‎XML structure: wording)
Jump to navigation Jump to search
PSpc : Part Specification
XML modding tips
  • See HERE to start learning about XML modding.
  • See HERE if you are searching for information on how to handle object coordinates.
  • See HERE for some typical modding errors and their causes.
XML.png
XML

PNTA << Other file types >> PSpL

switch to OBD page

General information

  • The XML on this page is compatible with OniSplit v0.9.61.0.
  • This resource uses the concept of the nine-slice GUI to construct IGPGs (in-game pages), which are used by DPges, HPges, IPges, OPges, and TxtCs.
  • You could attempt to simulate image alignment by using the image you want displayed as a corner, then supplying a transparent texture for the other components.
  • Please note that animated TXMPs doesn't work in a PSpc.

XML structure

1 4 7
2 5 8
3 6 9

There are 9 <PSpcPoint> tags under <TopLeft> and nine <PSpcPoint>s under <RightBottom>. The nth <PSpcPoint> tag under <TopLeft> and the nth <PSpcPoint> under <RightBottom> belong together; the entries under <TopLeft> and <RightBottom> comprise pairs of points which define a single tile out of nine (this is a bit confusing, but the XML simply reflects how Oni stores them). The order of the tiles is top to bottom, left to right.

<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <PSpc id="0">
       <TopLeft>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           [...]
       </TopLeft>
       <RightBottom>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           [...]
       </RightBottom>
       <Texture>TXMP...</Texture>
   </PSpc>
</Oni>

Example

TXMPh_19 is the only image appearing in TxtClevel_19a, but a PSpc divides it into 3 parts in order to stretch it across the top of the page. Each part is framed by the pixel coordinates in the XML below. As always with nine-slice tiling, the corners do not stretch, and the border tiles and the center tile do. Note that only parts 1, 4, and 7 are used in the following PSpc.

TXMPh_19
Color-coded version: the bluish half is tile 1, the single line of pixels in the center is tile 4 (this gets stretched horizontally), and the orange half is tile 7.

Coordinates of 1: {0, 0} to {64, 32}
Coordinates of 4: {64, 0} to {64, 32}
Coordinates of 7: {65, 0} to {128, 32}
which produces:

PSpc parts ingame.png
<?xml version="1.0" encoding="utf-8"?>
<Oni>
   <PSpc id="0">
       <LeftTop>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>64</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>65</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
       </LeftTop>
       <RightBottom>
           <PSpcPoint>
               <X>64</X>
               <Y>32</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>64</X>
               <Y>32</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>128</X>
               <Y>32</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
           <PSpcPoint>
               <X>0</X>
               <Y>0</Y>
           </PSpcPoint>
       </RightBottom>
       <Texture>TXMPh_19</Texture>
   </PSpc>
</Oni>