be able to change docked/handheld
This commit is contained in:
parent
62e6446645
commit
599d7725f1
|
|
@ -27,7 +27,8 @@
|
|||
}
|
||||
|
||||
#StatusBar #volume,
|
||||
#StatusBar #renderer
|
||||
#StatusBar #renderer,
|
||||
#StatusBar #dockedMode
|
||||
{
|
||||
border: 1px solid transparent;
|
||||
padding: 0.2em;
|
||||
|
|
@ -35,7 +36,8 @@
|
|||
}
|
||||
|
||||
#StatusBar #volume:hover,
|
||||
#StatusBar #renderer:hover
|
||||
#StatusBar #renderer:hover,
|
||||
#StatusBar #dockedMode:hover
|
||||
{
|
||||
border: 1px solid var(--color-statusbar-hover-border);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ div.center-buttons-grid
|
|||
}
|
||||
|
||||
#ProController,
|
||||
#Handheld,
|
||||
#GCController,
|
||||
#DualJoycons,
|
||||
#LeftJoycon
|
||||
|
|
@ -350,9 +351,45 @@ input[type=hslider] > button.slider
|
|||
#RightJoycon .joycon-side-buttons .button .shape { stroke: #979797; stroke-width: 1; fill: #1a1b1e; }
|
||||
#RightJoycon .joycon-side-buttons .button[data-pressed="1"] .shape { fill: #aa0000; }
|
||||
|
||||
#Handheld .body { fill: #CCCCCC stroke: #696b6e; stroke-width: 1; }
|
||||
#Handheld .controller { stroke: black; stroke-opacity: 0.28; stroke-width: 1; }
|
||||
#Handheld .handheld-bezel { fill: #2a2c30; stroke: none; }
|
||||
#Handheld .handheld-bezel-outline { fill: none; stroke: #555; stroke-width: 0.8; }
|
||||
#Handheld .screen { fill: #1a3a5c; stroke: none; }
|
||||
#Handheld .rail-left, #Handheld .rail-right { fill: #c9ced6; }
|
||||
#Handheld .tablet-bezel { fill: #35383e; stroke: black; stroke-opacity: 0.35; stroke-width: 1; }
|
||||
#Handheld .tablet-screen { fill: #141619; stroke: #0a0b0c; stroke-width: 1; }
|
||||
#Handheld .button .shape { fill: #2c2c2c; stroke: black; stroke-opacity: 0.5; stroke-width: 1; }
|
||||
#Handheld .button .label { fill: white; font-family: Arial, sans-serif; font-weight: bold; }
|
||||
#Handheld .button .symbol { fill: white; }
|
||||
#Handheld .button[data-pressed="1"] .shape { fill: #aa0000; }
|
||||
#Handheld .button[data-setting="1"] .shape { animation: flash 0.5s ease-in-out infinite; }
|
||||
#Handheld .home .outer { fill: #2c2c2c; stroke: black; stroke-opacity: 0.5; stroke-width: 1; }
|
||||
#Handheld .home .inner { fill: none; stroke: white; stroke-width: 1; }
|
||||
#Handheld .home .house { fill: white; }
|
||||
#Handheld .screenshot .shape { fill: #2c2c2c; stroke: black; stroke-opacity: 0.5; stroke-width: 1; }
|
||||
#Handheld .screenshot .symbol { fill: white; }
|
||||
#Handheld .plus .shape, #Handheld .minus .shape { fill: #2c2c2c; stroke: black; stroke-opacity: 0.5; stroke-width: 1; }
|
||||
#Handheld .plus .symbol, #Handheld .minus .symbol { fill: white; }
|
||||
#Handheld .cube { stroke: #000; stroke-width: 1.3; stroke-linejoin: miter; }
|
||||
#Handheld .cube.face.front { fill: url(#hhFrontFaceGradient); fill-opacity: 1; }
|
||||
#Handheld .cube.face.back { fill: url(#hhBackFaceGradient); fill-opacity: 1; }
|
||||
#Handheld .cube.edge { stroke:#000; stroke-width:1; fill: none; }
|
||||
#Handheld .trigger .shape { fill: #232629; stroke: #ccc; stroke-width: 1; }
|
||||
#Handheld .trigger .label { fill: #ccc; }
|
||||
#Handheld .trigger.L .shape { stroke-width: 2; }
|
||||
#Handheld .trigger.R .shape { stroke-width: 2; }
|
||||
#Handheld .trigger[data-pressed="1"] .shape { fill: #aa0000; }
|
||||
#Handheld .trigger[data-setting="1"] .shape { animation: flash 0.5s ease-in-out infinite; }
|
||||
#Handheld .trigger[data-pressed="1"] .label { fill: white; }
|
||||
#Handheld .joystick-range { stroke: #CCC; stroke-width: 2; stroke-dasharray: 1 3; fill: none; }
|
||||
#Handheld .joystick-deadzone { stroke: #CC0000; stroke-width: 2; stroke-dasharray: 1 3; fill: none; }
|
||||
#Handheld .joystick-dot-raw { fill: #AAEBFF; stroke: none; }
|
||||
#Handheld .joystick-dot-calibrated { fill: #3BA55D; stroke: none; }
|
||||
#Handheld .dpad .shape { fill: #2c2c2c; stroke: black; stroke-opacity: 0.5; stroke-width: 1; }
|
||||
#Handheld .left-stick-movable .shape { stroke: #CCC; stroke-width: 1; fill: #2c2c2c; }
|
||||
#Handheld .left-stick-movable .line { stroke: #CCC; stroke-width: 1; fill: #2c2c2c; }
|
||||
#Handheld .right-stick-movable .shape { stroke: #CCC; stroke-width: 1; fill: #2c2c2c; }
|
||||
#Handheld .right-stick-movable .line { stroke: #CCC; stroke-width: 1; fill: #2c2c2c; }
|
||||
|
||||
#GCController .outline { stroke: #000; stroke-width: 1.5; }
|
||||
#GCController .primary { fill: #ccc; }
|
||||
|
|
|
|||
|
|
@ -723,63 +723,144 @@
|
|||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-250 -160 500 280" id="Handheld">
|
||||
<g class="trigger ZL" data-id="ZL" transform="translate(-190,-120)">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="-235 -160 470 340" id="Handheld">
|
||||
<!-- L trigger -->
|
||||
<g class="trigger L">
|
||||
<path class="shape" d="M -166.8,-83.3 L -167.9,-83.2 L -168.9,-83.1 L -170.0,-83.0 L -171.0,-82.8 L -172.1,-82.6 L -173.1,-82.4 L -174.2,-82.1 L -175.2,-81.9 L -176.2,-81.5 L -177.2,-81.2 L -178.2,-80.8 L -180.1,-80.0 L -181.1,-79.5 L -182.0,-79.0 L -183.0,-78.5 L -183.9,-78.0 L -184.8,-77.4 L -185.7,-76.9 L -186.6,-76.3 L -187.4,-75.6 L -188.3,-75.0 L -189.1,-74.3 L -192.2,-71.5 L -192.9,-70.7 L -193.7,-69.9 L -194.3,-69.1 L -195.0,-68.3 L -195.6,-67.4 L -196.8,-65.7 L -197.3,-64.7 L -197.8,-63.8 L -198.2,-62.8 L -198.9,-60.8 L -198.6,-59.8 L -197.6,-59.7 L -196.6,-60.0 L -195.6,-60.5 L -194.7,-60.9 L -193.7,-61.4 L -192.8,-61.9 L -191.8,-62.4 L -190.9,-62.8 L -189.9,-63.3 L -189.0,-63.8 L -187.1,-64.8 L -186.2,-65.2 L -185.2,-65.7 L -184.3,-66.2 L -183.3,-66.7 L -182.4,-67.1 L -181.4,-67.6 L -180.5,-68.1 L -179.5,-68.6 L -178.6,-69.0 L -177.6,-69.5 L -176.7,-70.0 L -175.7,-70.5 L -174.8,-70.9 L -173.8,-71.4 L -172.9,-71.9 L -171.9,-72.4 L -171.0,-72.8 L -170.0,-73.3 L -169.1,-73.8 L -168.1,-74.3 L -167.2,-74.7 L -166.2,-75.2 L -165.3,-75.7 L -164.3,-76.2 L -163.4,-76.6 L -162.4,-77.1 L -161.5,-77.6 L -160.5,-78.1 L -159.6,-78.5 L -158.7,-79.0 L -157.7,-79.5 L -156.8,-80.0 L -155.8,-80.4 L -154.9,-80.9 L -154.2,-81.6 L -154.3,-82.6 L -155.2,-83.3 L -156.2,-83.3 Z"/>
|
||||
</g>
|
||||
|
||||
<!-- R trigger -->
|
||||
<g class="trigger R" transform="scale(-1,1)">
|
||||
<path class="shape" d="M -166.8,-83.3 L -167.9,-83.2 L -168.9,-83.1 L -170.0,-83.0 L -171.0,-82.8 L -172.1,-82.6 L -173.1,-82.4 L -174.2,-82.1 L -175.2,-81.9 L -176.2,-81.5 L -177.2,-81.2 L -178.2,-80.8 L -180.1,-80.0 L -181.1,-79.5 L -182.0,-79.0 L -183.0,-78.5 L -183.9,-78.0 L -184.8,-77.4 L -185.7,-76.9 L -186.6,-76.3 L -187.4,-75.6 L -188.3,-75.0 L -189.1,-74.3 L -192.2,-71.5 L -192.9,-70.7 L -193.7,-69.9 L -194.3,-69.1 L -195.0,-68.3 L -195.6,-67.4 L -196.8,-65.7 L -197.3,-64.7 L -197.8,-63.8 L -198.2,-62.8 L -198.9,-60.8 L -198.6,-59.8 L -197.6,-59.7 L -196.6,-60.0 L -195.6,-60.5 L -194.7,-60.9 L -193.7,-61.4 L -192.8,-61.9 L -191.8,-62.4 L -190.9,-62.8 L -189.9,-63.3 L -189.0,-63.8 L -187.1,-64.8 L -186.2,-65.2 L -185.2,-65.7 L -184.3,-66.2 L -183.3,-66.7 L -182.4,-67.1 L -181.4,-67.6 L -180.5,-68.1 L -179.5,-68.6 L -178.6,-69.0 L -177.6,-69.5 L -176.7,-70.0 L -175.7,-70.5 L -174.8,-70.9 L -173.8,-71.4 L -172.9,-71.9 L -171.9,-72.4 L -171.0,-72.8 L -170.0,-73.3 L -169.1,-73.8 L -168.1,-74.3 L -167.2,-74.7 L -166.2,-75.2 L -165.3,-75.7 L -164.3,-76.2 L -163.4,-76.6 L -162.4,-77.1 L -161.5,-77.6 L -160.5,-78.1 L -159.6,-78.5 L -158.7,-79.0 L -157.7,-79.5 L -156.8,-80.0 L -155.8,-80.4 L -154.9,-80.9 L -154.2,-81.6 L -154.3,-82.6 L -155.2,-83.3 L -156.2,-83.3 Z"/>
|
||||
</g>
|
||||
|
||||
<!-- Left JoyCon body -->
|
||||
<polygon class="left-joycon" points="-145.0,-78.9 -145.0,-77.9 -145.0,85.6 -145.0,85.6 -168.3,85.5 -169.3,85.4 -171.3,85.1 -172.3,84.9 -173.4,84.7 -174.3,84.5 -175.3,84.2 -176.3,83.8 -177.3,83.5 -178.2,83.1 -179.2,82.7 -180.1,82.2 -181.0,81.8 -181.9,81.3 -182.8,80.7 -183.7,80.2 -184.5,79.6 -186.2,78.3 -186.9,77.7 -187.7,77.0 -189.2,75.6 -189.9,74.8 -190.6,74.1 -191.3,73.3 -191.9,72.5 -192.5,71.6 -193.1,70.8 -193.7,69.9 -194.3,69.1 -194.8,68.2 -196.2,65.5 -196.6,64.5 -197.0,63.6 -197.4,62.6 -198.1,60.7 -198.4,59.7 -198.6,58.7 -199.2,55.6 -199.3,54.6 -199.5,51.5 -199.5,50.5 -199.5,-49.4 -199.4,-50.5 -199.3,-51.5 -199.1,-52.5 -198.2,-56.5 -197.9,-57.5 -197.2,-59.4 -196.8,-60.4 -196.4,-61.3 -195.9,-62.2 -194.3,-64.9 -193.7,-65.7 -193.1,-66.6 -192.5,-67.4 -191.8,-68.2 -191.2,-68.9 -190.4,-69.7 -188.2,-71.8 -187.4,-72.5 -186.6,-73.1 -185.8,-73.8 -185.0,-74.4 -184.1,-74.9 -183.2,-75.5 -182.4,-76.0 -181.5,-76.5 -179.6,-77.5 -178.7,-77.9 -177.8,-78.4 -176.8,-78.8 -175.9,-79.1 -174.9,-79.5 -173.9,-79.8 -170.9,-80.6 -169.9,-80.8 -167.9,-81.1 -166.9,-81.2 -165.8,-81.2 -145.0,-80.9"/>
|
||||
|
||||
<!-- Right JoyCon body -->
|
||||
<polygon class="right-joycon" points="145.0,-78.9 145.0,-77.9 145.0,85.6 145.0,85.6 168.3,85.5 169.3,85.4 171.3,85.1 172.3,84.9 173.4,84.7 174.3,84.5 175.3,84.2 176.3,83.8 177.3,83.5 178.2,83.1 179.2,82.7 180.1,82.2 181.0,81.8 181.9,81.3 182.8,80.7 183.7,80.2 184.5,79.6 186.2,78.3 186.9,77.7 187.7,77.0 189.2,75.6 189.9,74.8 190.6,74.1 191.3,73.3 191.9,72.5 192.5,71.6 193.1,70.8 193.7,69.9 194.3,69.1 194.8,68.2 196.2,65.5 196.6,64.5 197.0,63.6 197.4,62.6 198.1,60.7 198.4,59.7 198.6,58.7 199.2,55.6 199.3,54.6 199.5,51.5 199.5,50.5 199.5,-49.4 199.4,-50.5 199.3,-51.5 199.1,-52.5 198.2,-56.5 197.9,-57.5 197.2,-59.4 196.8,-60.4 196.4,-61.3 195.9,-62.2 194.3,-64.9 193.7,-65.7 193.1,-66.6 192.5,-67.4 191.8,-68.2 191.2,-68.9 190.4,-69.7 188.2,-71.8 187.4,-72.5 186.6,-73.1 185.8,-73.8 185.0,-74.4 184.1,-74.9 183.2,-75.5 182.4,-76.0 181.5,-76.5 179.6,-77.5 178.7,-77.9 177.8,-78.4 176.8,-78.8 175.9,-79.1 174.9,-79.5 173.9,-79.8 170.9,-80.6 169.9,-80.8 167.9,-81.1 166.9,-81.2 165.8,-81.2 145.0,-80.9"/>
|
||||
|
||||
<!-- Handheld shoulder buttons strip (left) -->
|
||||
<polygon class="handheld-buttons" points="-82.5,-83.0 -82.5,-83.0 -106.7,-83.0 -106.8,-83.1 -106.8,-83.2 -106.8,-83.9 -106.8,-84.0 -106.8,-84.1 -106.7,-84.2 -106.6,-84.3 -106.5,-84.4 -106.4,-84.5 -106.3,-84.5 -106.2,-84.5 -98.9,-84.5 -98.8,-84.4 -98.8,-84.3 -98.8,-84.0 -90.3,-84.1 -90.2,-84.4 -90.2,-84.5 -90.1,-84.5 -82.8,-84.5 -82.6,-84.5 -82.5,-84.4 -82.4,-84.3 -82.3,-84.1 -82.2,-83.9 -82.2,-83.8 -82.2,-83.1 -82.3,-83.0 -82.4,-83.0"/>
|
||||
|
||||
<!-- Handheld body (tablet center) -->
|
||||
<polygon class="handheld-body" fill-rule="evenodd" points="-137.3,-81.9 -137.6,-81.8 -137.8,-81.6 -138.0,-81.3 -138.1,-81.1 -138.1,-80.8 -138.2,-78.7 -138.2,-78.4 -138.3,-78.1 -138.7,-77.3 -138.9,-77.0 -139.0,-76.8 -139.2,-76.5 -139.5,-76.3 -139.7,-76.1 -139.9,-76.0 -140.2,-75.8 -140.5,-75.7 -140.7,-75.6 -141.0,-75.5 -141.9,-75.3 -142.2,-75.3 -142.5,-75.2 -143.0,-74.9 -143.2,-74.7 -143.3,-74.4 -143.0,-74.1 -143.0,85.3 -143.0,85.6 -142.7,85.8 -142.4,85.9 -142.2,85.9 143.0,85.6 143.1,85.4 143.3,85.1 143.0,84.8 143.0,-74.9 142.8,-75.1 142.5,-75.2 141.9,-75.3 141.6,-75.3 141.3,-75.4 141.1,-75.4 140.8,-75.5 140.5,-75.7 140.2,-75.8 140.0,-76.0 139.7,-76.1 139.5,-76.3 139.1,-76.8 138.9,-77.0 138.6,-77.5 138.4,-77.8 138.3,-78.1 138.3,-78.3 138.2,-78.6 138.2,-78.9 138.1,-79.2 138.1,-79.5 138.0,-81.3 137.8,-81.6 137.6,-81.8 137.3,-81.9 137.1,-81.9 120.0,-70.0 -120.0,-70.0 -120.0,70.0 120.0,70.0 120.0,-70.0 137.1,-81.9"/>
|
||||
<!-- Body outline -->
|
||||
<polygon class="handheld-body-outline" points="-137.3,-81.9 -137.6,-81.8 -137.8,-81.6 -138.0,-81.3 -138.1,-81.1 -138.1,-80.8 -138.2,-78.7 -138.2,-78.4 -138.3,-78.1 -138.7,-77.3 -138.9,-77.0 -139.0,-76.8 -139.2,-76.5 -139.5,-76.3 -139.7,-76.1 -139.9,-76.0 -140.2,-75.8 -140.5,-75.7 -140.7,-75.6 -141.0,-75.5 -141.9,-75.3 -142.2,-75.3 -142.5,-75.2 -143.0,-74.9 -143.2,-74.7 -143.3,-74.4 -143.0,-74.1 -143.0,85.3 -142.7,85.8 -142.4,85.9 -142.2,85.9 143.0,85.6 143.1,85.4 143.3,85.1 143.0,84.8 143.0,-74.9 142.8,-75.1 142.5,-75.2 141.9,-75.3 141.6,-75.3 141.3,-75.4 141.1,-75.4 140.8,-75.5 140.5,-75.7 140.2,-75.8 140.0,-76.0 139.7,-76.1 139.5,-76.3 139.1,-76.8 138.9,-77.0 138.6,-77.5 138.4,-77.8 138.3,-78.1 138.3,-78.3 138.2,-78.6 138.2,-78.9 138.1,-79.2 138.1,-79.5 138.0,-81.3 137.8,-81.6 137.6,-81.8 137.3,-81.9"/>
|
||||
|
||||
<!-- Bezel (screen surround) -->
|
||||
<path class="handheld-bezel" fill-rule="evenodd" d="M -131.4,-75.9 -132.2,-75.7 -132.9,-75.3 -134.2,-74.3 -134.7,-73.6 -135.1,-72.8 -135.4,-72.0 -135.5,-71.2 -135.5,-70.4 -135.2,76.7 -134.8,77.5 -134.3,78.1 -133.7,78.8 -133.1,79.2 -132.3,79.6 -131.5,79.9 -130.7,80.0 -129.8,80.0 132.2,79.7 133.0,79.3 133.7,78.8 134.3,78.3 134.8,77.6 135.1,76.8 135.5,75.2 135.5,74.3 135.2,-72.7 134.8,-73.5 134.4,-74.2 133.8,-74.8 133.1,-75.3 132.3,-75.6 130.7,-76.0 129.8,-76.0 Z M -112.9,-62.2 L 112.9,-62.2 L 112.9,62.2 L -112.9,62.2 Z"/>
|
||||
|
||||
<!-- Screen inner rect -->
|
||||
<rect class="screen" x="-112.9" y="-62.2" width="225.8" height="124.4"/>
|
||||
|
||||
<!-- ZL button -->
|
||||
<g class="trigger ZL" transform="translate(-210,-120)">
|
||||
<polygon class="shape" points="5.5,-12.6 5.8,-12.6 6.7,-12.5 8.1,-12.3 8.6,-12.2 9.2,-12.0 9.5,-11.9 9.9,-11.8 10.6,-11.5 11.0,-11.3 11.2,-11.2 11.4,-11.1 11.8,-10.9 12.0,-10.8 12.2,-10.7 12.4,-10.5 12.6,-10.4 12.8,-10.3 13.6,-9.7 13.8,-9.6 13.9,-9.4 14.1,-9.3 14.8,-8.6 15.0,-8.5 15.1,-8.3 15.6,-7.8 15.7,-7.6 16.1,-7.0 16.3,-6.8 16.4,-6.6 16.5,-6.4 16.8,-6.0 16.9,-5.8 17.0,-5.6 17.1,-5.4 17.2,-5.2 17.3,-5.0 17.4,-4.8 17.5,-4.6 17.6,-4.4 17.7,-4.1 17.8,-3.9 17.9,-3.5 18.0,-3.3 18.1,-3.0 18.2,-2.6 18.2,-2.3 18.3,-2.1 18.3,-1.9 18.4,-1.4 18.5,-1.2 18.6,-0.3 18.6,0.0 18.3,13.9 -17.0,13.8 -17.0,13.6 -16.4,-11.4 -16.3,-11.6 -16.1,-11.8 -15.7,-12.0 -15.5,-12.1 -15.1,-12.3 -14.6,-12.4 -13.4,-12.5" transform="scale(-1,1)"/>
|
||||
<polygon class="label" fill-rule="evenodd" points="-2.6,-2.13 -5.6,-2.13 -5.6,-3.23 -0.8,-3.23 -0.8,-2.13 -4.4,2.12 -0.7,2.12 -0.7,3.22 -6.0,3.22 -6.0,2.12 2.4,-3.23 2.4,2.1 5.43,2.1 5.43,3.22 0.98,3.22 0.98,-3.23 2.4,-3.23 -6.0,2.12" transform="scale(1.5)"/>
|
||||
</g>
|
||||
<g class="trigger ZR" data-id="ZR" transform="translate(190,-120)">
|
||||
|
||||
<!-- ZR button -->
|
||||
<g class="trigger ZR" transform="translate(210,-120)">
|
||||
<polygon class="shape" points="5.5,-12.6 5.8,-12.6 6.7,-12.5 8.1,-12.3 8.6,-12.2 9.2,-12.0 9.5,-11.9 9.9,-11.8 10.6,-11.5 11.0,-11.3 11.2,-11.2 11.4,-11.1 11.8,-10.9 12.0,-10.8 12.2,-10.7 12.4,-10.5 12.6,-10.4 12.8,-10.3 13.6,-9.7 13.8,-9.6 13.9,-9.4 14.1,-9.3 14.8,-8.6 15.0,-8.5 15.1,-8.3 15.6,-7.8 15.7,-7.6 16.1,-7.0 16.3,-6.8 16.4,-6.6 16.5,-6.4 16.8,-6.0 16.9,-5.8 17.0,-5.6 17.1,-5.4 17.2,-5.2 17.3,-5.0 17.4,-4.8 17.5,-4.6 17.6,-4.4 17.7,-4.1 17.8,-3.9 17.9,-3.5 18.0,-3.3 18.1,-3.0 18.2,-2.6 18.2,-2.3 18.3,-2.1 18.3,-1.9 18.4,-1.4 18.5,-1.2 18.6,-0.3 18.6,0.0 18.3,13.9 -17.0,13.8 -17.0,13.6 -16.4,-11.4 -16.3,-11.6 -16.1,-11.8 -15.7,-12.0 -15.5,-12.1 -15.1,-12.3 -14.6,-12.4 -13.4,-12.5"/>
|
||||
<path class="label" fill-rule="nonzero" d="M -2.6,-2.13 L -5.6,-2.13 L -5.6,-3.23 L -0.8,-3.23 L -0.8,-2.13 L -4.4,2.12 L -0.7,2.12 L -0.7,3.22 L -6.0,3.22 L -6.0,2.12 Z M 1.0,0.0 L 1.0,-0.1 L 1.1,-3.3 L 4.3,-3.2 L 5.1,-3.1 L 5.4,-3.0 L 5.6,-2.9 L 5.7,-2.8 L 5.9,-2.7 L 5.9,-2.6 L 6.0,-2.5 L 6.1,-2.3 L 6.2,-2.2 L 6.2,-2.1 L 6.3,-2.0 L 6.3,-1.9 L 6.2,-0.8 L 6.2,-0.7 L 6.1,-0.6 L 6.1,-0.5 L 6.0,-0.4 L 6.0,-0.3 L 5.9,-0.2 L 5.7,-0.1 L 5.7,0.0 L 5.6,0.1 L 5.4,0.2 L 5.1,0.3 L 4.7,0.4 L 4.7,0.5 L 4.9,0.6 L 5.0,0.7 L 5.2,0.8 L 5.2,0.9 L 5.3,1.0 L 5.5,1.1 L 5.5,1.2 L 5.6,1.3 L 5.7,1.5 L 5.8,1.6 L 5.9,1.8 L 6.0,1.9 L 6.1,2.1 L 6.2,2.2 L 6.2,2.3 L 6.3,2.4 L 6.4,2.6 L 6.5,2.7 L 6.6,2.9 L 6.7,3.0 L 6.7,3.1 L 6.8,3.2 L 6.8,3.3 L 5.3,3.2 L 5.2,3.1 L 5.2,3.0 L 5.1,2.9 L 5.0,2.7 L 4.9,2.6 L 4.8,2.4 L 4.7,2.3 L 4.6,2.1 L 4.5,2.0 L 4.4,1.8 L 4.3,1.7 L 4.1,1.4 L 4.0,1.3 L 3.9,1.1 L 3.8,1.0 L 3.6,0.9 L 3.6,0.8 L 3.5,0.7 L 3.3,0.6 L 2.9,0.5 L 2.3,0.6 L 2.3,0.7 L 2.2,3.3 L 1.0,3.3 L 1.0,0.0 Z M 4.2,-0.5 L 4.4,-0.6 L 4.7,-0.7 L 4.8,-0.8 L 4.9,-1.0 L 5.0,-1.1 L 5.0,-1.2 L 4.9,-1.7 L 4.9,-1.8 L 4.8,-1.9 L 4.8,-2.0 L 4.6,-2.1 L 4.3,-2.2 L 2.3,-2.3 L 2.3,0.6 Z" transform="scale(1.5)"/>
|
||||
</g>
|
||||
|
||||
<g class="trigger L" data-control="button" data-id="L" data-pressed="0">
|
||||
<path class="shape" d="M -166.8,-83.3 L -167.9,-83.2 L -168.9,-83.1 L -170.0,-83.0 L -171.0,-82.8 L -172.1,-82.6 L -173.1,-82.4 L -174.2,-82.1 L -175.2,-81.9 L -176.2,-81.5 L -177.2,-81.2 L -178.2,-80.8 L -180.1,-80.0 L -181.1,-79.5 L -182.0,-79.0 L -183.0,-78.5 L -183.9,-78.0 L -184.8,-77.4 L -185.7,-76.9 L -186.6,-76.3 L -187.4,-75.6 L -188.3,-75.0 L -189.1,-74.3 L -192.2,-71.5 L -192.9,-70.7 L -193.7,-69.9 L -194.3,-69.1 L -195.0,-68.3 L -195.6,-67.4 L -196.8,-65.7 L -197.3,-64.7 L -197.8,-63.8 L -198.2,-62.8 L -198.9,-60.8 L -198.6,-59.8 L -197.6,-59.7 L -196.6,-60.0 L -195.6,-60.5 L -194.7,-60.9 L -193.7,-61.4 L -192.8,-61.9 L -191.8,-62.4 L -190.9,-62.8 L -189.9,-63.3 L -189.0,-63.8 L -187.1,-64.8 L -186.2,-65.2 L -185.2,-65.7 L -184.3,-66.2 L -183.3,-66.7 L -182.4,-67.1 L -181.4,-67.6 L -180.5,-68.1 L -179.5,-68.6 L -178.6,-69.0 L -177.6,-69.5 L -176.7,-70.0 L -175.7,-70.5 L -174.8,-70.9 L -173.8,-71.4 L -172.9,-71.9 L -171.9,-72.4 L -171.0,-72.8 L -170.0,-73.3 L -169.1,-73.8 L -168.1,-74.3 L -167.2,-74.7 L -166.2,-75.2 L -165.3,-75.7 L -164.3,-76.2 L -163.4,-76.6 L -162.4,-77.1 L -161.5,-77.6 L -160.5,-78.1 L -159.6,-78.5 L -158.7,-79.0 L -157.7,-79.5 L -156.8,-80.0 L -155.8,-80.4 L -154.9,-80.9 L -154.2,-81.6 L -154.3,-82.6 L -155.2,-83.3 L -156.2,-83.3 Z"/>
|
||||
</g>
|
||||
|
||||
<!-- Right Trigger -->
|
||||
<g class="trigger R" data-control="button" data-id="R" data-pressed="0">
|
||||
<path class="shape" d="M 166.8,-83.3 L 167.9,-83.2 L 168.9,-83.1 L 170.0,-83.0 L 171.0,-82.8 L 172.1,-82.6 L 173.1,-82.4 L 174.2,-82.1 L 175.2,-81.9 L 176.2,-81.5 L 177.2,-81.2 L 178.2,-80.8 L 180.1,-80.0 L 181.1,-79.5 L 182.0,-79.0 L 183.0,-78.5 L 183.9,-78.0 L 184.8,-77.4 L 185.7,-76.9 L 186.6,-76.3 L 187.4,-75.6 L 188.3,-75.0 L 189.1,-74.3 L 192.2,-71.5 L 192.9,-70.7 L 193.7,-69.9 L 194.3,-69.1 L 195.0,-68.3 L 195.6,-67.4 L 196.8,-65.7 L 197.3,-64.7 L 197.8,-63.8 L 198.2,-62.8 L 198.9,-60.8 L 198.6,-59.8 L 197.6,-59.7 L 196.6,-60.0 L 195.6,-60.5 L 194.7,-60.9 L 193.7,-61.4 L 192.8,-61.9 L 191.8,-62.4 L 190.9,-62.8 L 189.9,-63.3 L 189.0,-63.8 L 187.1,-64.8 L 186.2,-65.2 L 185.2,-65.7 L 184.3,-66.2 L 183.3,-66.7 L 182.4,-67.1 L 181.4,-67.6 L 180.5,-68.1 L 179.5,-68.6 L 178.6,-69.0 L 177.6,-69.5 L 176.7,-70.0 L 175.7,-70.5 L 174.8,-70.9 L 173.8,-71.4 L 172.9,-71.9 L 171.9,-72.4 L 171.0,-72.8 L 170.0,-73.3 L 169.1,-73.8 L 168.1,-74.3 L 167.2,-74.7 L 166.2,-75.2 L 165.3,-75.7 L 164.3,-76.2 L 163.4,-76.6 L 162.4,-77.1 L 161.5,-77.6 L 160.5,-78.1 L 159.6,-78.5 L 158.7,-79.0 L 157.7,-79.5 L 156.8,-80.0 L 155.8,-80.4 L 154.9,-80.9 L 154.2,-81.6 L 154.3,-82.6 L 155.2,-83.3 L 156.2,-83.3 Z"/>
|
||||
</g>
|
||||
|
||||
<path class="body" d="M -137.3,-81.9 L -137.6,-81.8 -137.8,-81.6 -138.0,-81.3 -138.1,-81.1 -138.1,-80.8 L -138.2,-78.7 -138.2,-78.4 -138.3,-78.1 -138.7,-77.3 -138.9,-77.0 L -139.0,-76.8 -139.2,-76.5 -139.5,-76.3 -139.7,-76.1 -139.9,-76.0 L -140.2,-75.8 -140.5,-75.7 -140.7,-75.6 -141.0,-75.5 -141.9,-75.3 L -142.2,-75.3 -142.5,-75.2 -143.0,-74.9 -143.2,-74.7 -143.3,-74.4 L -143.0,-74.1 -143.0,85.3 -143.0,85.6 -142.7,85.8 -142.4,85.9 L -142.2,85.9 143.0,85.6 143.1,85.4 143.3,85.1 143.0,84.8 L 143.0,-74.9 142.8,-75.1 142.5,-75.2 141.9,-75.3 141.6,-75.3 L 141.3,-75.4 141.1,-75.4 140.8,-75.5 140.5,-75.7 140.2,-75.8 L 140.0,-76.0 139.7,-76.1 139.5,-76.3 139.1,-76.8 138.9,-77.0 L 138.6,-77.5 138.4,-77.8 138.3,-78.1 138.3,-78.3 138.2,-78.6 L 138.2,-78.9 138.1,-79.2 138.1,-79.5 138.0,-81.3 137.8,-81.6 L 137.6,-81.8 137.3,-81.9 137.1,-81.9 Z M 120.0,-70.0 L -120.0,-70.0 -120.0,70.0 120.0,70.0 120.0,-70.0 Z" />
|
||||
<path class="body" d="M -145.0,-78.9 L -145.0,-77.9 L -145.0,85.6 L -145.0,85.6 L -168.3,85.5 L -169.3,85.4 L -171.3,85.1 L -172.3,84.9 L -173.4,84.7 L -174.3,84.5 L -175.3,84.2 L -176.3,83.8 L -177.3,83.5 L -178.2,83.1 L -179.2,82.7 L -180.1,82.2 L -181.0,81.8 L -181.9,81.3 L -182.8,80.7 L -183.7,80.2 L -184.5,79.6 L -186.2,78.3 L -186.9,77.7 L -187.7,77.0 L -189.2,75.6 L -189.9,74.8 L -190.6,74.1 L -191.3,73.3 L -191.9,72.5 L -192.5,71.6 L -193.1,70.8 L -193.7,69.9 L -194.3,69.1 L -194.8,68.2 L -196.2,65.5 L -196.6,64.5 L -197.0,63.6 L -197.4,62.6 L -198.1,60.7 L -198.4,59.7 L -198.6,58.7 L -199.2,55.6 L -199.3,54.6 L -199.5,51.5 L -199.5,50.5 L -199.5,-49.4 L -199.4,-50.5 L -199.3,-51.5 L -199.1,-52.5 L -198.2,-56.5 L -197.9,-57.5 L -197.2,-59.4 L -196.8,-60.4 L -196.4,-61.3 L -195.9,-62.2 L -194.3,-64.9 L -193.7,-65.7 L -193.1,-66.6 L -192.5,-67.4 L -191.8,-68.2 L -191.2,-68.9 L -190.4,-69.7 L -188.2,-71.8 L -187.4,-72.5 L -186.6,-73.1 L -185.8,-73.8 L -185.0,-74.4 L -184.1,-74.9 L -183.2,-75.5 L -182.4,-76.0 L -181.5,-76.5 L -179.6,-77.5 L -178.7,-77.9 L -177.8,-78.4 L -176.8,-78.8 L -175.9,-79.1 L -174.9,-79.5 L -173.9,-79.8 L -170.9,-80.6 L -169.9,-80.8 L -167.9,-81.1 L -166.9,-81.2 L -165.8,-81.2 L -145.0,-80.9 Z"/>
|
||||
<path class="body" d="M 145.0,-78.9 L 145.0,-77.9 L 145.0,85.6 L 145.0,85.6 L 168.3,85.5 L 169.3,85.4 L 171.3,85.1 L 172.3,84.9 L 173.4,84.7 L 174.3,84.5 L 175.3,84.2 L 176.3,83.8 L 177.3,83.5 L 178.2,83.1 L 179.2,82.7 L 180.1,82.2 L 181.0,81.8 L 181.9,81.3 L 182.8,80.7 L 183.7,80.2 L 184.5,79.6 L 186.2,78.3 L 186.9,77.7 L 187.7,77.0 L 189.2,75.6 L 189.9,74.8 L 190.6,74.1 L 191.3,73.3 L 191.9,72.5 L 192.5,71.6 L 193.1,70.8 L 193.7,69.9 L 194.3,69.1 L 194.8,68.2 L 196.2,65.5 L 196.6,64.5 L 197.0,63.6 L 197.4,62.6 L 198.1,60.7 L 198.4,59.7 L 198.6,58.7 L 199.2,55.6 L 199.3,54.6 L 199.5,51.5 L 199.5,50.5 L 199.5,-49.4 L 199.4,-50.5 L 199.3,-51.5 L 199.1,-52.5 L 198.2,-56.5 L 197.9,-57.5 L 197.2,-59.4 L 196.8,-60.4 L 196.4,-61.3 L 195.9,-62.2 L 194.3,-64.9 L 193.7,-65.7 L 193.1,-66.6 L 192.5,-67.4 L 191.8,-68.2 L 191.2,-68.9 L 190.4,-69.7 L 188.2,-71.8 L 187.4,-72.5 L 186.6,-73.1 L 185.8,-73.8 L 185.0,-74.4 L 184.1,-74.9 L 183.2,-75.5 L 182.4,-76.0 L 181.5,-76.5 L 179.6,-77.5 L 178.7,-77.9 L 177.8,-78.4 L 176.8,-78.8 L 175.9,-79.1 L 174.9,-79.5 L 173.9,-79.8 L 170.9,-80.6 L 169.9,-80.8 L 167.9,-81.1 L 166.9,-81.2 L 165.8,-81.2 L 145.0,-80.9 Z"/>
|
||||
<g class="button minus"><rect class="shape" x="25" y="2.5" width="15" height="5" rx="2" /></g>
|
||||
|
||||
<!-- Left stick -->
|
||||
<g class="pro-left-stick" transform="translate(-111,-55)">
|
||||
<circle class="shape" r="32"/>
|
||||
<g class="movable" transform="translate(0,0) rotate(0)">
|
||||
<ellipse class="outer" cx="0" cy="0" rx="24" ry="24"/>
|
||||
<g class="inner-shift" transform="translate(0,0)">
|
||||
<ellipse class="inner" cx="0" cy="0" rx="17" ry="17"/>
|
||||
</g>
|
||||
<!-- Left joystick -->
|
||||
<g class="left-stick" transform="translate(-171,-41)">
|
||||
<g class="left-stick-movable" transform="translate(0,0)">
|
||||
<circle class="shape" cx="0" cy="0" r="12"/>
|
||||
<line class="line" x1="-12" y1="0" x2="12" y2="0"/>
|
||||
<line class="line" x1="0" y1="-12" x2="0" y2="12"/>
|
||||
<circle class="shape inner" cx="0" cy="0" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
<!-- D-pad -->
|
||||
<g class="dpad" transform="translate(-61,0)">
|
||||
<path class="shape" fill-rule="nonzero" d="M 9.1,-9.1 L 9.1,-30.0 L 8.1,-30.1 L 7.7,-30.1 L -8.6,-30.0 L -9.0,-29.8 L -9.3,-29.5 L -9.5,-29.1 L -9.1,-28.7 L -9.1,-9.1 L -28.7,-9.1 L -29.1,-9.5 L -29.5,-9.3 L -29.8,-9.0 L -30.0,-8.6 L -30.1,-7.7 L -30.1,8.1 L -30.0,9.1 L -9.1,9.1 L -9.1,28.7 L -9.5,29.1 L -9.3,29.5 L -9.0,29.8 L -8.6,30.0 L -7.7,30.1 L 8.1,30.1 L 9.1,30.0 L 9.1,9.1 L 28.7,9.1 L 29.1,9.5 L 29.5,9.3 L 29.8,9.0 L 30.0,8.6 L 30.1,7.7 L 30.1,-8.1 L 30.0,-9.1 L 9.1,-9.1 Z"/>
|
||||
<g class="button up" data-id="DUp">
|
||||
<path class="shape" d="M 9.1,-9.1 L 9.1,-30.0 L 8.1,-30.1 L 7.7,-30.1 L -8.6,-30.0 L -9.0,-29.8 L -9.3,-29.5 L -9.5,-29.1 L -9.1,-28.7 L -9.1,-9.1 L 0.0,0.6 Z"/>
|
||||
<polygon class="label" points="0,-23 -3,-18 3,-18"/>
|
||||
|
||||
<!-- Right joystick -->
|
||||
<g class="right-stick" transform="translate(171,8)">
|
||||
<g class="right-stick-movable" transform="translate(0,0)">
|
||||
<circle class="shape" cx="0" cy="0" r="12"/>
|
||||
<line class="line" x1="-12" y1="0" x2="12" y2="0"/>
|
||||
<line class="line" x1="0" y1="-12" x2="0" y2="12"/>
|
||||
<circle class="shape inner" cx="0" cy="0" r="9"/>
|
||||
</g>
|
||||
</g>
|
||||
<g class="button right" data-id="DRight">
|
||||
<path class="shape" d="M 9.1,9.1 L 30.0,9.1 L 30.1,8.1 L 30.1,7.7 L 30.0,-8.6 L 29.8,-9.0 L 29.5,-9.3 L 29.1,-9.5 L 28.7,-9.1 L 9.1,-9.1 L -0.6,0.0 Z"/>
|
||||
<polygon class="label" points="23,0 18,-3 18,3"/>
|
||||
|
||||
<!-- Face buttons -->
|
||||
<g class="buttons-face" transform="translate(171,-41)">
|
||||
<g class="button A" transform="translate(12.8,0)">
|
||||
<circle class="shape" r="6.4"/>
|
||||
<polygon class="label" fill-rule="evenodd" points="-1.085,-5.2 1.085,-5.2 5.085,5.0 2.785,5.0 1.785,2.65 -1.785,2.65 -2.785,5.0 -5.085,5.0 -1.4,1.0 0.0,-2.8 1.4,1.0 -1.4,1.0 -5.085,5.0" transform="scale(0.64)"/>
|
||||
</g>
|
||||
<g class="button B" transform="translate(0,12.8)">
|
||||
<circle class="shape" r="6.4"/>
|
||||
<polygon class="label" fill-rule="evenodd" points="-4.0,0.0 -4.0,0.0 -4.0,-0.1 -3.8,-5.1 1.8,-5.0 2.3,-4.9 2.6,-4.8 2.8,-4.7 2.9,-4.6 3.1,-4.5 3.2,-4.4 3.4,-4.3 3.4,-4.2 3.5,-4.1 3.7,-4.0 3.7,-3.9 3.8,-3.8 3.8,-3.7 3.9,-3.6 3.9,-3.5 4.0,-3.4 4.0,-3.3 4.1,-3.1 4.1,-3.0 4.0,-2.0 4.0,-1.9 3.9,-1.7 3.9,-1.6 3.8,-1.5 3.8,-1.4 3.7,-1.3 3.7,-1.2 3.6,-1.1 3.6,-1.0 3.5,-0.9 3.3,-0.8 3.3,-0.7 3.2,-0.6 3.0,-0.5 2.9,-0.4 2.7,-0.3 2.9,-0.2 3.2,-0.1 3.3,0.0 3.5,0.1 3.6,0.2 3.8,0.3 3.9,0.4 4.0,0.6 4.1,0.7 4.3,0.8 4.3,0.9 4.4,1.0 4.4,1.1 4.5,1.3 4.5,1.4 4.6,1.6 4.6,1.7 4.5,2.8 4.5,2.9 4.4,3.1 4.4,3.2 4.3,3.4 4.3,3.5 4.2,3.6 4.2,3.7 4.1,3.8 4.1,3.9 4.0,4.0 3.9,4.2 3.8,4.3 3.6,4.4 3.6,4.5 3.4,4.6 3.3,4.7 3.1,4.8 2.8,4.9 2.6,5.0 2.1,5.1 -4.0,5.0 -4.0,4.9 -4.0,0.0 1.1,3.4 1.1,3.4 1.5,3.3 1.8,3.2 2.0,3.1 2.1,3.0 2.3,2.9 2.3,2.8 2.4,2.7 2.4,2.6 2.5,2.3 2.5,2.2 2.4,1.7 2.4,1.6 2.3,1.4 2.3,1.3 2.2,1.2 2.2,1.1 2.1,1.0 1.9,0.9 1.6,0.8 1.4,0.7 -1.9,0.6 -1.9,0.7 -1.8,3.4 1.1,3.4 -4.0,0.0 0.3,-1.1 0.3,-1.1 1.3,-1.2 1.5,-1.3 1.8,-1.4 1.8,-1.5 1.9,-1.6 2.0,-1.8 2.0,-1.9 2.1,-2.0 2.1,-2.1 2.0,-2.7 2.0,-2.8 1.9,-2.9 1.9,-3.0 1.8,-3.1 1.6,-3.2 1.6,-3.3 1.3,-3.4 -1.9,-3.3 -1.9,-3.2 -1.8,-1.0 0.2,-1.1 0.3,-1.1 -4.0,0.0" transform="scale(0.64)"/>
|
||||
</g>
|
||||
<g class="button X" transform="translate(0,-12.8)">
|
||||
<circle class="shape" r="6.4"/>
|
||||
<polygon class="label" points="-4.4,-5.0 -2.0,-5.0 0.0,-1.7 2.0,-5.0 4.4,-5.0 1.2,0.0 4.4,5.0 2.0,5.0 0.0,1.7 -2.0,5.0 -4.4,5.0 -1.2,0.0" transform="scale(0.64)"/>
|
||||
</g>
|
||||
<g class="button Y" transform="translate(-12.8,0)">
|
||||
<circle class="shape" r="6.4"/>
|
||||
<polygon class="label" points="-4.79,-4.9 -2.44,-4.9 0.0,-0.9 2.44,-4.9 4.79,-4.9 1.05,1.0 1.05,5.31 -1.05,5.31 -1.05,1.0" transform="scale(0.64)"/>
|
||||
</g>
|
||||
</g>
|
||||
<g class="button down" data-id="DDown">
|
||||
<path class="shape" d="M -9.1,9.1 L -9.1,30.0 L -8.1,30.1 L -7.7,30.1 L 8.6,30.0 L 9.0,29.8 L 9.3,29.5 L 9.5,29.1 L 9.1,28.7 L 9.1,9.1 L 0.0,-0.6 Z"/>
|
||||
<polygon class="label" points="0,23 -3,18 3,18"/>
|
||||
|
||||
<!-- D-Pad -->
|
||||
<g class="dpad" transform="translate(-171,8)">
|
||||
<g class="button up">
|
||||
<circle class="shape" cx="0" cy="-12.8" r="6.4"/>
|
||||
<path class="symbol" d="M 0,-15.5 L -2.7,-11.0 L 2.7,-11.0 Z"/>
|
||||
</g>
|
||||
<g class="button down">
|
||||
<circle class="shape" cx="0" cy="12.8" r="6.4"/>
|
||||
<path class="symbol" d="M 0,15.5 L 2.7,11.0 L -2.7,11.0 Z"/>
|
||||
</g>
|
||||
<g class="button left">
|
||||
<circle class="shape" cx="-12.8" cy="0" r="6.4"/>
|
||||
<path class="symbol" d="M -15.5,0 L -11.0,-2.7 L -11.0,2.7 Z"/>
|
||||
</g>
|
||||
<g class="button right">
|
||||
<circle class="shape" cx="12.8" cy="0" r="6.4"/>
|
||||
<path class="symbol" d="M 15.5,0 L 11.0,2.7 L 11.0,-2.7 Z"/>
|
||||
</g>
|
||||
</g>
|
||||
<g class="button left" data-id="DLeft">
|
||||
<path class="shape" d="M -9.1,-9.1 L -30.0,-9.1 L -30.1,-8.1 L -30.1,-7.7 L -30.0,8.6 L -29.8,9.0 L -29.5,9.3 L -29.1,9.5 L -28.7,9.1 L -9.1,9.1 L 0.6,0.0 Z"/>
|
||||
<polygon class="label" points="-23,0 -18,-3 -18,3"/>
|
||||
|
||||
<!-- Minus button -->
|
||||
<g class="button minus" transform="translate(-155,-67)">
|
||||
<rect class="shape" x="-4" y="-1.66" width="8" height="3.32" rx="0.75"/>
|
||||
</g>
|
||||
</g>
|
||||
<g class="button screenshot" transform="translate(-29,-56)">
|
||||
<rect class="shape rounded" x="-7" y="-7" width="14" height="14" rx="3" ry="3"/>
|
||||
<circle class="symbol" r="4.5"/>
|
||||
|
||||
<!-- Plus button -->
|
||||
<g class="button plus" transform="translate(155,-67)">
|
||||
<path class="shape" transform="scale(0.6) translate(-7.5,-7.5)" d="M 0,6 H 6 V 0 H 9 V 6 H 15 V 9 H 9 V 15 H 6 V 9 H 0 Z"/>
|
||||
</g>
|
||||
|
||||
<!-- Capture/Screenshot button -->
|
||||
<g class="button screenshot" transform="translate(-162,39)">
|
||||
<rect class="shape" x="-5" y="-5" width="10" height="10" rx="2"/>
|
||||
<circle class="symbol" r="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Home button -->
|
||||
<g class="button home" transform="translate(161,37)">
|
||||
<circle class="shape outer" r="7"/>
|
||||
<circle class="shape inner" r="5"/>
|
||||
<polygon class="symbol house" fill-rule="evenodd" points="-1.3,0.0 -0.93,0.0 -0.93,1.15 0.93,1.15 0.93,0.0 1.3,0.0 0.0,-1.2 -1.3,0.0 -0.43,0.0 -0.43,0.73 0.43,0.73 0.43,0.0" transform="scale(2.75)"/>
|
||||
</g>
|
||||
|
||||
<!-- Raw joystick visualizers -->
|
||||
<g class="left-stick-visual" transform="translate(-50,0)">
|
||||
<circle class="joystick-range" r="30"/>
|
||||
<circle class="joystick-deadzone" r="4.5"/>
|
||||
<circle class="joystick-dot-raw" r="1.5"/>
|
||||
<circle class="joystick-dot-cal" r="1.5"/>
|
||||
</g>
|
||||
<g class="right-stick-visual" transform="translate(50,0)">
|
||||
<circle class="joystick-range" r="30"/>
|
||||
<circle class="joystick-deadzone" r="4.5"/>
|
||||
<circle class="joystick-dot-raw" r="1.5"/>
|
||||
<circle class="joystick-dot-cal" r="1.5"/>
|
||||
</g>
|
||||
|
||||
</svg>
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="StatusBar" ><span id="renderer" /><span id="volume" /><div id="StatusText" /></div>
|
||||
<div id="StatusBar" ><span id="dockedMode" /><span id="renderer" /><span id="volume" /><div id="StatusText" /></div>
|
||||
</html>
|
||||
<popup id="VolumePopup">
|
||||
<div>
|
||||
|
|
|
|||
|
|
@ -100,6 +100,37 @@ PageNav.page_tabs page.active {
|
|||
font-size: 0.9rem;
|
||||
color: #eff0f1;
|
||||
}
|
||||
|
||||
#gameDirectoryList {
|
||||
width: 100%%;
|
||||
}
|
||||
|
||||
#gameDirectoryList select {
|
||||
background-color: #1e1e1e;
|
||||
border: 1px solid #404040;
|
||||
border-radius: 4px;
|
||||
box-sizing: border-box;
|
||||
height: 8rem;
|
||||
max-height: 8rem;
|
||||
overflow-y: auto;
|
||||
padding: 0.1rem;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%%;
|
||||
}
|
||||
|
||||
#gameDirectoryList option
|
||||
{
|
||||
padding: 0.2rem 0.3rem;
|
||||
margin: 0.2rem 0.3rem;
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#gameDirectoryList option:current
|
||||
{
|
||||
color: #1e1e1e;
|
||||
}
|
||||
|
||||
</style>
|
||||
</head>
|
||||
<header>
|
||||
|
|
@ -112,7 +143,6 @@ PageNav.page_tabs page.active {
|
|||
<div class="ConfigPage" tooltip-host>
|
||||
<PageNav target="ConfigContents" id="MainTabNav">
|
||||
<Page contents="system_config_general.html" label="General" Name="General" />
|
||||
<Page contents="system_config_system.html" label="System" Name="System" />
|
||||
<Page contents="system_config_graphics.html" label="Graphics" Name="Graphics" />
|
||||
<Page contents="system_config_audio.html" label="Audio" Name="Audio" />
|
||||
</PageNav>
|
||||
|
|
|
|||
|
|
@ -1,35 +1,3 @@
|
|||
<style>
|
||||
#gameDirectoryList {
|
||||
width: 100%%;
|
||||
}
|
||||
|
||||
#gameDirectoryList select {
|
||||
background-color: #1e1e1e;
|
||||
border: 1px solid #404040;
|
||||
border-radius: 4px;
|
||||
box-sizing: border-box;
|
||||
height: 8rem;
|
||||
max-height: 8rem;
|
||||
overflow-y: auto;
|
||||
padding: 0.1rem;
|
||||
margin-bottom: 1rem;
|
||||
width: 100%%;
|
||||
}
|
||||
|
||||
#gameDirectoryList option
|
||||
{
|
||||
padding: 0.2rem 0.3rem;
|
||||
margin: 0.2rem 0.3rem;
|
||||
border-radius: 3px;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#gameDirectoryList option:current
|
||||
{
|
||||
color: #1e1e1e;
|
||||
}
|
||||
</style>
|
||||
|
||||
<PageNav target="GeneralContents" id="GeneralTabNav" class="page_tabs">
|
||||
<Page label="Game Browser" Name="GameBrowser">
|
||||
<div class="input-group">
|
||||
|
|
@ -48,6 +16,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</Page>
|
||||
<Page label="System" Name="System">
|
||||
<div class="input-group">
|
||||
<div class="group-title">Docked Mode</div>
|
||||
<div class="form-row">
|
||||
<div class="left"><label for="DockedMode">Docked Mode:</label></div>
|
||||
<div class="right"><ComboBox id="DockedMode" tooltip="Selects if the console is in Docked or Handheld mode. Games will change resolution and performance settings. Setting to Handheld can help improve performance on low-end systems." /></div>
|
||||
</div>
|
||||
</div>
|
||||
</Page>
|
||||
<Page label="Hotkeys" Name="Hotkeys">
|
||||
<div class="input-group hotkeys-page">
|
||||
<div class="hotkeys-hint">Double-click a binding to change it. While recording, press Delete to clear the shortcut, or click outside the cell to cancel.</div>
|
||||
|
|
@ -73,4 +50,4 @@
|
|||
</div>
|
||||
</Page>
|
||||
</PageNav>
|
||||
<div id="GeneralContents" class="page_content" />
|
||||
<div id="GeneralContents" class="page_content" />
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<PageNav target="SystemContents" id="SystemTabNav" class="page_tabs">
|
||||
<Page label="System" Name="System">
|
||||
<div class="input-group">
|
||||
<div class="group-title">System</div>
|
||||
<div class="form-row">
|
||||
<div class="left"><label for="consoleMode">Console mode:</label></div>
|
||||
<div class="right"><ComboBox id="consoleMode" tooltip="Handheld uses portable (undocked) behavior. Docked uses TV dock behavior (resolution and performance targets where supported)." /></div>
|
||||
</div>
|
||||
</div>
|
||||
</page>
|
||||
</PageNav>
|
||||
<div id="SystemContents" class="page_content" />
|
||||
|
|
@ -80,7 +80,7 @@ void DefaultControllerApplet::ReconfigureControllers(ReconfigureCallback callbac
|
|||
controller->Connect(true);
|
||||
}
|
||||
}
|
||||
else if (index == 0 && parameters.enable_single_mode && parameters.allow_handheld && g_settings->GetInt(NXOsSetting::DockedMode) != static_cast<int32_t>(Settings::ConsoleMode::Docked))
|
||||
else if (index == 0 && parameters.enable_single_mode && parameters.allow_handheld && g_settings->GetInt(NXOsSetting::DockedMode) != static_cast<int32_t>(Settings::DockedMode::Docked))
|
||||
{
|
||||
// We should *never* reach here under any normal circumstances.
|
||||
controller->SetNpadStyleIndex(NpadStyleIndex::Handheld);
|
||||
|
|
|
|||
|
|
@ -159,7 +159,7 @@ Result ICommonStateGetter::GetDefaultDisplayResolutionChangeEvent(
|
|||
|
||||
Result ICommonStateGetter::GetOperationMode(Out<OperationMode> out_operation_mode)
|
||||
{
|
||||
const bool use_docked_mode = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::ConsoleMode::Docked);
|
||||
const bool use_docked_mode = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
LOG_DEBUG(Service_AM, "called, use_docked_mode={}", use_docked_mode);
|
||||
*out_operation_mode = use_docked_mode ? OperationMode::Docked : OperationMode::Handheld;
|
||||
R_SUCCEED();
|
||||
|
|
@ -231,7 +231,7 @@ Result ICommonStateGetter::GetDefaultDisplayResolution(Out<s32> out_width, Out<s
|
|||
{
|
||||
LOG_DEBUG(Service_AM, "called");
|
||||
|
||||
const bool docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::ConsoleMode::Docked);
|
||||
const bool docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
if (docked)
|
||||
{
|
||||
*out_width = static_cast<u32>(Service::VI::DisplayResolution::DockedWidth);
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ void Controller::SetFromCpuBoostMode(CpuBoostMode mode)
|
|||
|
||||
PerformanceMode Controller::GetCurrentPerformanceMode() const
|
||||
{
|
||||
const bool docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::ConsoleMode::Docked);
|
||||
const bool docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
return docked ? PerformanceMode::Boost : PerformanceMode::Normal;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ Result ISystemDisplayService::GetDisplayMode(Out<DisplayMode> out_display_mode,
|
|||
{
|
||||
LOG_WARNING(Service_VI, "(STUBBED) called, display_id={}", display_id);
|
||||
|
||||
const bool is_docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::ConsoleMode::Docked);
|
||||
const bool is_docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
if (is_docked)
|
||||
{
|
||||
out_display_mode->width = static_cast<u32>(DisplayResolution::DockedWidth);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ namespace
|
|||
AudioEngine,
|
||||
AudioMode,
|
||||
Language,
|
||||
ConsoleMode,
|
||||
DockedMode,
|
||||
U8,
|
||||
U16,
|
||||
BooleanSwitchable,
|
||||
|
|
@ -41,7 +41,7 @@ namespace
|
|||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::AudioEngine> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::AudioMode, true>* val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::Language, true> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::ConsoleMode> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::DockedMode> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<u8, true> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<u16, true> * val);
|
||||
OsSetting(const char * id, const char * path, Settings::SwitchableSetting<bool> * val);
|
||||
|
|
@ -65,7 +65,7 @@ namespace
|
|||
Settings::SwitchableSetting<Settings::AudioEngine> * audioEngine;
|
||||
Settings::SwitchableSetting<Settings::AudioMode, true> * audioMode;
|
||||
Settings::SwitchableSetting<Settings::Language, true> * languageIndex;
|
||||
Settings::SwitchableSetting<Settings::ConsoleMode> * consoleMode;
|
||||
Settings::SwitchableSetting<Settings::DockedMode> * dockedMode;
|
||||
Settings::SwitchableSetting<u8, true> * u8;
|
||||
Settings::SwitchableSetting<u16, true> * u16;
|
||||
Settings::SwitchableSetting<bool> * booleanSwitchable;
|
||||
|
|
@ -563,8 +563,8 @@ void OsSettingChanged(const char * setting, void * /*userData*/)
|
|||
case SettingType::Language:
|
||||
osSetting.setting.languageIndex->SetValue((Settings::Language)g_settings->GetInt(setting));
|
||||
break;
|
||||
case SettingType::ConsoleMode:
|
||||
osSetting.setting.consoleMode->SetValue((Settings::ConsoleMode)g_settings->GetInt(setting));
|
||||
case SettingType::DockedMode:
|
||||
osSetting.setting.dockedMode->SetValue((Settings::DockedMode)g_settings->GetInt(setting));
|
||||
break;
|
||||
case SettingType::U8:
|
||||
osSetting.setting.u8->SetValue(g_settings->GetInt(setting));
|
||||
|
|
@ -611,8 +611,8 @@ void SetupOsSetting(void)
|
|||
case SettingType::Language:
|
||||
osSetting.setting.languageIndex->SetValue(osSetting.setting.languageIndex->GetDefault());
|
||||
break;
|
||||
case SettingType::ConsoleMode:
|
||||
osSetting.setting.consoleMode->SetValue(osSetting.setting.consoleMode->GetDefault());
|
||||
case SettingType::DockedMode:
|
||||
osSetting.setting.dockedMode->SetValue(osSetting.setting.dockedMode->GetDefault());
|
||||
break;
|
||||
case SettingType::U8:
|
||||
osSetting.setting.u8->SetValue(osSetting.setting.u8->GetDefault());
|
||||
|
|
@ -690,10 +690,10 @@ void SetupOsSetting(void)
|
|||
osSetting.setting.languageIndex->SetValue(Settings::ToEnum<Settings::Language>(value.asString()));
|
||||
}
|
||||
break;
|
||||
case SettingType::ConsoleMode:
|
||||
case SettingType::DockedMode:
|
||||
if (value.isString())
|
||||
{
|
||||
osSetting.setting.consoleMode->SetValue(Settings::ToEnum<Settings::ConsoleMode>(value.asString()));
|
||||
osSetting.setting.dockedMode->SetValue(Settings::ToEnum<Settings::DockedMode>(value.asString()));
|
||||
}
|
||||
break;
|
||||
case SettingType::U8:
|
||||
|
|
@ -793,9 +793,9 @@ void SetupOsSetting(void)
|
|||
g_settings->SetDefaultInt(osSetting.identifier, (int32_t)osSetting.setting.languageIndex->GetDefault());
|
||||
g_settings->SetInt(osSetting.identifier, (int32_t)osSetting.setting.languageIndex->GetValue());
|
||||
break;
|
||||
case SettingType::ConsoleMode:
|
||||
g_settings->SetDefaultInt(osSetting.identifier, (int32_t)osSetting.setting.consoleMode->GetDefault());
|
||||
g_settings->SetInt(osSetting.identifier, (int32_t)osSetting.setting.consoleMode->GetValue());
|
||||
case SettingType::DockedMode:
|
||||
g_settings->SetDefaultInt(osSetting.identifier, (int32_t)osSetting.setting.dockedMode->GetDefault());
|
||||
g_settings->SetInt(osSetting.identifier, (int32_t)osSetting.setting.dockedMode->GetValue());
|
||||
break;
|
||||
case SettingType::U8:
|
||||
g_settings->SetDefaultInt(osSetting.identifier, (int32_t)osSetting.setting.u8->GetDefault());
|
||||
|
|
@ -872,10 +872,10 @@ void SaveOsSettings(void)
|
|||
JsonSetNestedValue(root, osSetting.json_path, Settings::CanonicalizeEnum(osSetting.setting.languageIndex->GetValue()));
|
||||
}
|
||||
break;
|
||||
case SettingType::ConsoleMode:
|
||||
if (osSetting.setting.consoleMode->GetValue() != osSetting.setting.consoleMode->GetDefault())
|
||||
case SettingType::DockedMode:
|
||||
if (osSetting.setting.dockedMode->GetValue() != osSetting.setting.dockedMode->GetDefault())
|
||||
{
|
||||
JsonSetNestedValue(root, osSetting.json_path, Settings::CanonicalizeEnum(osSetting.setting.consoleMode->GetValue()));
|
||||
JsonSetNestedValue(root, osSetting.json_path, Settings::CanonicalizeEnum(osSetting.setting.dockedMode->GetValue()));
|
||||
}
|
||||
break;
|
||||
case SettingType::U8:
|
||||
|
|
@ -993,12 +993,12 @@ namespace
|
|||
setting.languageIndex = val;
|
||||
}
|
||||
|
||||
OsSetting::OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::ConsoleMode> * val) :
|
||||
OsSetting::OsSetting(const char * id, const char * path, Settings::SwitchableSetting<Settings::DockedMode> * val) :
|
||||
identifier(id),
|
||||
json_path(path),
|
||||
settingType(SettingType::ConsoleMode)
|
||||
settingType(SettingType::DockedMode)
|
||||
{
|
||||
setting.consoleMode = val;
|
||||
setting.dockedMode = val;
|
||||
}
|
||||
|
||||
OsSetting::OsSetting(const char * id, const char * path, Settings::SwitchableSetting<u8, true> * val) :
|
||||
|
|
|
|||
|
|
@ -47,9 +47,9 @@ struct OSSettings
|
|||
Settings::Setting<s32> current_user{linkage, 0, "current_user", Settings::Category::System};
|
||||
|
||||
#ifdef ANDROID
|
||||
SwitchableSetting<ConsoleMode> use_docked_mode{linkage, ConsoleMode::Handheld, "use_docked_mode", Category::System, Specialization::Radio, true, true};
|
||||
Settings::SwitchableSetting<Settings::DockedMode> use_docked_mode{linkage, Settings::DockedMode::Handheld, "use_docked_mode", Settings::Category::System, Settings::Specialization::Radio, true, true};
|
||||
#else
|
||||
Settings::SwitchableSetting<Settings::ConsoleMode> use_docked_mode{linkage, Settings::ConsoleMode::Docked, "use_docked_mode", Settings::Category::System, Settings::Specialization::Radio, true, true};
|
||||
Settings::SwitchableSetting<Settings::DockedMode> use_docked_mode{linkage, Settings::DockedMode::Docked, "use_docked_mode", Settings::Category::System, Settings::Specialization::Radio, true, true};
|
||||
#endif
|
||||
|
||||
// Linux
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ namespace
|
|||
{Hotkey::Fullscreen, {.key = (uint32_t)SCITER_KEY_F11, .ctrl = false, .alt = false, .shift = false}},
|
||||
{Hotkey::ExitFullscreen, {.key = (uint32_t)SCITER_KEY_ESCAPE, .ctrl = false, .alt = false, .shift = false}},
|
||||
{Hotkey::PauseContinue, {.key = (uint32_t)SCITER_KEY_F4}},
|
||||
{Hotkey::ToggleDockedMode, {.key = (uint32_t)SCITER_KEY_F10}},
|
||||
};
|
||||
|
||||
void merge_default_hotkeys(HotkeyMap & map)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ constexpr const char Exit[] = "Exit";
|
|||
constexpr const char Fullscreen[] = "Fullscreen";
|
||||
constexpr const char ExitFullscreen[] = "ExitFullscreen";
|
||||
constexpr const char PauseContinue[] = "PauseContinue";
|
||||
constexpr const char ToggleDockedMode[] = "ToggleDockedMode";
|
||||
}
|
||||
|
||||
using HotkeyMap = std::map<std::string, MenuBarAccelerator>;
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ SciterMainWindow::SciterMainWindow(ISciterUI & sciterUI, const char * windowTitl
|
|||
settings.RegisterCallback(NXOsSetting::SpeedLimit, SciterMainWindow::SettingChanged, this);
|
||||
settings.RegisterCallback(NXOsSetting::UseMultiCore, SciterMainWindow::SettingChanged, this);
|
||||
settings.RegisterCallback(NXOsSetting::UseSpeedLimit, SciterMainWindow::SettingChanged, this);
|
||||
settings.RegisterCallback(NXOsSetting::DockedMode, SciterMainWindow::SettingChanged, this);
|
||||
settings.RegisterCallback(NXUISetting::Hotkeys, SciterMainWindow::HotKeysChanged, this);
|
||||
|
||||
m_useMultiCore = settings.GetBool(NXOsSetting::UseMultiCore);
|
||||
|
|
@ -126,6 +127,7 @@ SciterMainWindow::~SciterMainWindow()
|
|||
settings.UnregisterCallback(NXOsSetting::SpeedLimit, SciterMainWindow::SettingChanged, this);
|
||||
settings.UnregisterCallback(NXOsSetting::UseMultiCore, SciterMainWindow::SettingChanged, this);
|
||||
settings.UnregisterCallback(NXOsSetting::UseSpeedLimit, SciterMainWindow::SettingChanged, this);
|
||||
settings.UnregisterCallback(NXOsSetting::DockedMode, SciterMainWindow::SettingChanged, this);
|
||||
settings.UnregisterCallback(NXUISetting::Hotkeys, SciterMainWindow::HotKeysChanged, this);
|
||||
|
||||
m_systemConfig.reset(nullptr);
|
||||
|
|
@ -239,6 +241,7 @@ bool SciterMainWindow::Show()
|
|||
UpdateStatusbar();
|
||||
|
||||
m_sciterUI.AttachHandler(m_rootElement, IID_IMOUSEUPDOWNSINK, (IMouseUpDownSink *)this);
|
||||
m_sciterUI.AttachHandler(m_rootElement.GetElementByID("dockedMode"), IID_ICLICKSINK, (IClickSink *)this);
|
||||
m_sciterUI.AttachHandler(m_rootElement.GetElementByID("renderer"), IID_ICLICKSINK, (IClickSink *)this);
|
||||
m_sciterUI.AttachHandler(m_rootElement.GetElementByID("volume"), IID_ICLICKSINK, (IClickSink *)this);
|
||||
m_sciterUI.AttachHandler(m_rootElement.GetElementByID("audioVolume"), IID_ISTATECHANGESINK, (IStateChangeSink *)this);
|
||||
|
|
@ -286,6 +289,12 @@ void SciterMainWindow::LoadGame(const char * path)
|
|||
void SciterMainWindow::UpdateStatusbar()
|
||||
{
|
||||
SettingsStore & settings = SettingsStore::GetInstance();
|
||||
SciterElement dockedMode(m_rootElement.GetElementByID("dockedMode"));
|
||||
if (dockedMode.IsValid())
|
||||
{
|
||||
stdstr_f text("%s", Settings::CanonicalizeEnum((Settings::DockedMode)settings.GetInt(NXOsSetting::DockedMode)).c_str());
|
||||
dockedMode.SetHTML((const uint8_t *)text.c_str(), text.size());
|
||||
}
|
||||
SciterElement renderer(m_rootElement.GetElementByID("renderer"));
|
||||
if (renderer.IsValid())
|
||||
{
|
||||
|
|
@ -704,9 +713,20 @@ SciterMainWindow::GuiAction SciterMainWindow::HotkeyToGuiAction(const char * hot
|
|||
{
|
||||
return GuiAction::PauseOrContinueEmulation;
|
||||
}
|
||||
if (strcmp(hotkeyId, Hotkey::ToggleDockedMode) == 0)
|
||||
{
|
||||
return GuiAction::ToggleDockedMode;
|
||||
}
|
||||
return GuiAction::Invalid;
|
||||
}
|
||||
|
||||
void SciterMainWindow::OnToggleDockedMode()
|
||||
{
|
||||
SettingsStore & store = SettingsStore::GetInstance();
|
||||
const bool docked = store.GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
store.SetInt(NXOsSetting::DockedMode, static_cast<int32_t>(docked ? Settings::DockedMode::Handheld : Settings::DockedMode::Docked));
|
||||
}
|
||||
|
||||
void SciterMainWindow::OnRecetGame(uint32_t fileIndex)
|
||||
{
|
||||
Stringlist & recentFiles = uiSettings.recentFiles;
|
||||
|
|
@ -757,6 +777,9 @@ void SciterMainWindow::OnGuiAction(GuiAction action)
|
|||
case GuiAction::ToggleFullscreen:
|
||||
ToggleFullscreen();
|
||||
break;
|
||||
case GuiAction::ToggleDockedMode:
|
||||
OnToggleDockedMode();
|
||||
break;
|
||||
case GuiAction::ResetWindowSize720p:
|
||||
ResetWindowSize(1280U, 720U);
|
||||
break;
|
||||
|
|
@ -1079,7 +1102,11 @@ void SciterMainWindow::ResetWindowSize(uint32_t nominal_width, uint32_t nominal_
|
|||
bool SciterMainWindow::OnClick(SCITER_ELEMENT /*element*/, SCITER_ELEMENT source, uint32_t /*reason*/)
|
||||
{
|
||||
SciterElement rootElement(m_window->GetRootElement());
|
||||
if (source == rootElement.GetElementByID("renderer"))
|
||||
if (source == rootElement.GetElementByID("dockedMode"))
|
||||
{
|
||||
OnToggleDockedMode();
|
||||
}
|
||||
else if (source == rootElement.GetElementByID("renderer"))
|
||||
{
|
||||
SettingsStore & settings = SettingsStore::GetInstance();
|
||||
Settings::RendererBackend graphicsAPI = (Settings::RendererBackend)settings.GetInt(NXVideoSetting::GraphicsAPI);
|
||||
|
|
@ -1161,6 +1188,11 @@ void SciterMainWindow::SettingChanged(const char * setting, void * userData)
|
|||
{
|
||||
impl->m_speedLimit = SettingsStore::GetInstance().GetInt(NXOsSetting::SpeedLimit);
|
||||
}
|
||||
else if (strcmp(setting, NXOsSetting::DockedMode) == 0)
|
||||
{
|
||||
impl->UpdateStatusbar();
|
||||
impl->LayoutRenderWindow();
|
||||
}
|
||||
}
|
||||
|
||||
bool SciterMainWindow::OnTimer(SCITER_ELEMENT /*element*/, uint32_t * timerId)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ class SciterMainWindow :
|
|||
OpenControllersDialog,
|
||||
OpenSystemConfiguration,
|
||||
ToggleFullscreen,
|
||||
ToggleDockedMode,
|
||||
ResetWindowSize720p,
|
||||
ResetWindowSize900p,
|
||||
ResetWindowSize1080p,
|
||||
|
|
@ -92,6 +93,7 @@ private:
|
|||
void OnSystemConfig();
|
||||
void OnInputConfig();
|
||||
void OnRecetGame(uint32_t fileIndex);
|
||||
void OnToggleDockedMode();
|
||||
void UpdateStatusBar();
|
||||
const MenuBarAccelerator * HotkeyAccelerator(const char * name);
|
||||
const char * IsMenuBarAccelerator(uint32_t keyCode, uint32_t keyboardState);
|
||||
|
|
|
|||
|
|
@ -1141,14 +1141,14 @@ void InputConfigPlayer::SetConnectableControllers()
|
|||
availableControllers.emplace_back(NpadStyleIndex::GameCube, "GameCube Controller");
|
||||
}
|
||||
|
||||
if (m_controllerIndex == NpadIdType::Player1 && (((uint32_t)npad_style_set & (uint32_t)NpadStyleSet::Handheld) != 0))
|
||||
{
|
||||
availableControllers.emplace_back(NpadStyleIndex::Handheld, "Handheld");
|
||||
}
|
||||
|
||||
// Disable all unsupported controllers
|
||||
if (uiSettings.enableAllControllers)
|
||||
{
|
||||
if (m_controllerIndex == NpadIdType::Player1 && ((uint32_t)npad_style_set & (uint32_t)NpadStyleSet::Handheld) != 0)
|
||||
{
|
||||
availableControllers.emplace_back(NpadStyleIndex::Handheld, "Handheld");
|
||||
}
|
||||
|
||||
if (((uint32_t)npad_style_set & (uint32_t)NpadStyleSet::Palma) != 0)
|
||||
{
|
||||
availableControllers.emplace_back(NpadStyleIndex::Pokeball, "Poke Ball Plus");
|
||||
|
|
|
|||
|
|
@ -322,10 +322,6 @@ void SystemConfig::PageNavCreatedPage(const std::string & pageName, SCITER_ELEME
|
|||
{
|
||||
m_systemConfigGraphics.reset(new SystemConfigGraphics(m_sciterUI, *this, m_window->GetHandle(), page));
|
||||
}
|
||||
else if (pageName == "System")
|
||||
{
|
||||
m_systemConfigSystem.reset(new SystemConfigSystem(m_sciterUI, *this, page));
|
||||
}
|
||||
else if (pageName == "General")
|
||||
{
|
||||
m_systemConfigGeneral.reset(new SystemConfigGeneral(m_sciterUI, *this, *m_window, page));
|
||||
|
|
@ -349,10 +345,6 @@ bool SystemConfig::OnClick(SCITER_ELEMENT element, SCITER_ELEMENT /*source*/, ui
|
|||
{
|
||||
m_systemConfigGraphics->SaveSetting();
|
||||
}
|
||||
if (m_systemConfigSystem)
|
||||
{
|
||||
m_systemConfigSystem->SaveSetting();
|
||||
}
|
||||
if (m_systemConfigGeneral)
|
||||
{
|
||||
m_systemConfigGeneral->SaveSetting();
|
||||
|
|
@ -472,8 +464,8 @@ void SystemConfig::InitializeTranslations()
|
|||
{(uint32_t)Settings::AudioMode::Surround, "Surround"},
|
||||
}});
|
||||
|
||||
m_settingTranslations.insert({ Settings::EnumMetadata<Settings::ConsoleMode>::Index(), {
|
||||
{(uint32_t)Settings::ConsoleMode::Handheld, "Handheld"},
|
||||
{(uint32_t)Settings::ConsoleMode::Docked, "Docked"},
|
||||
m_settingTranslations.insert({Settings::EnumMetadata<Settings::DockedMode>::Index(), {
|
||||
{(uint32_t)Settings::DockedMode::Handheld, "Handheld"},
|
||||
{(uint32_t)Settings::DockedMode::Docked, "Docked"},
|
||||
}});
|
||||
}
|
||||
|
|
@ -61,7 +61,6 @@ private:
|
|||
SettingTranslationMap m_settingTranslations;
|
||||
std::shared_ptr<IPageNav> m_pageNav;
|
||||
std::unique_ptr<SystemConfigGraphics> m_systemConfigGraphics;
|
||||
std::unique_ptr<SystemConfigSystem> m_systemConfigSystem;
|
||||
std::unique_ptr<SystemConfigAudio> m_systemConfigAudio;
|
||||
std::unique_ptr<SystemConfigGeneral> m_systemConfigGeneral;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ private:
|
|||
SystemConfigGameBrowser(const SystemConfigGameBrowser&) = delete;
|
||||
SystemConfigGameBrowser& operator=(const SystemConfigGameBrowser&) = delete;
|
||||
|
||||
void SetupGameBrowserPage(SciterElement page);
|
||||
void SelectDirectoryItem(const SciterElement & gameDirectoryList, SCITER_ELEMENT source);
|
||||
void RemoveSelectedDirectory();
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "system_config_general.h"
|
||||
#include "system_config_hotkeys.h"
|
||||
#include "system_config_logging.h"
|
||||
#include "system_config_system.h"
|
||||
|
||||
SystemConfigGeneral::SystemConfigGeneral(ISciterUI & sciterUI, SystemConfig & config, ISciterWindow & window, SciterElement page) :
|
||||
m_sciterUI(sciterUI),
|
||||
|
|
@ -45,6 +46,10 @@ void SystemConfigGeneral::SaveSetting(void)
|
|||
{
|
||||
m_systemConfigHotkeys->SaveSetting();
|
||||
}
|
||||
if (m_systemConfigSystem)
|
||||
{
|
||||
m_systemConfigSystem->SaveSetting();
|
||||
}
|
||||
}
|
||||
|
||||
bool SystemConfigGeneral::PageNavChangeFrom(const std::string & /*pageName*/, SCITER_ELEMENT /*pageNav*/)
|
||||
|
|
@ -71,6 +76,10 @@ void SystemConfigGeneral::PageNavCreatedPage(const std::string & pageName, SCITE
|
|||
{
|
||||
m_systemConfigHotkeys.reset(new SystemConfigHotkeys(m_sciterUI, m_window, page));
|
||||
}
|
||||
else if (pageName == "System")
|
||||
{
|
||||
m_systemConfigSystem.reset(new SystemConfigSystem(m_sciterUI, m_config, page));
|
||||
}
|
||||
}
|
||||
|
||||
void SystemConfigGeneral::PageNavPageChanged(const std::string & /*pageName*/, SCITER_ELEMENT /*pageNav*/)
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ class SystemConfig;
|
|||
class SystemConfigGameBrowser;
|
||||
class SystemConfigHotkeys;
|
||||
class SystemConfigLogging;
|
||||
class SystemConfigSystem;
|
||||
|
||||
class SystemConfigGeneral :
|
||||
public IPagesSink
|
||||
|
|
@ -37,4 +38,5 @@ private:
|
|||
std::unique_ptr<SystemConfigLogging> m_systemConfigLogging;
|
||||
std::unique_ptr<SystemConfigGameBrowser> m_systemConfigGameBrowser;
|
||||
std::unique_ptr<SystemConfigHotkeys> m_systemConfigHotkeys;
|
||||
std::unique_ptr<SystemConfigSystem> m_systemConfigSystem;
|
||||
};
|
||||
|
|
@ -49,6 +49,7 @@ static const HotkeyLabelEntry kHotkeyLabels[] = {
|
|||
{Hotkey::Fullscreen, "Fullscreen"},
|
||||
{Hotkey::ExitFullscreen, "Exit Fullscreen"},
|
||||
{Hotkey::PauseContinue, "Pause / Continue"},
|
||||
{Hotkey::ToggleDockedMode, "Change Docked Mode"},
|
||||
};
|
||||
|
||||
std::string HotkeyBindingElementId(const std::string & hotkeyId)
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
namespace
|
||||
{
|
||||
static ConfigSetting systemSettings[] = {
|
||||
ConfigSetting(ConfigSetting::ComboBox, "consoleMode", true, Settings::EnumMetadata<Settings::ConsoleMode>::Index(), NXOsSetting::DockedMode),
|
||||
ConfigSetting(ConfigSetting::ComboBox, "DockedMode", true, Settings::EnumMetadata<Settings::DockedMode>::Index(), NXOsSetting::DockedMode),
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -16,47 +16,10 @@ SystemConfigSystem::SystemConfigSystem(ISciterUI & sciterUI, SystemConfig & conf
|
|||
m_config(config),
|
||||
m_page(page)
|
||||
{
|
||||
SciterElement pageNav = page.GetElementByID("SystemTabNav");
|
||||
std::shared_ptr<void> interfacePtr = pageNav.IsValid() ? m_sciterUI.GetElementInterface(pageNav, IID_IPAGENAV) : nullptr;
|
||||
if (interfacePtr)
|
||||
{
|
||||
m_pageNav = std::static_pointer_cast<IPageNav>(interfacePtr);
|
||||
m_pageNav->AddSink(this);
|
||||
}
|
||||
m_config.SetupPage(page, systemSettings, sizeof(systemSettings) / sizeof(systemSettings[0]));
|
||||
}
|
||||
|
||||
void SystemConfigSystem::SaveSetting(void)
|
||||
{
|
||||
if (m_systemPage != nullptr)
|
||||
{
|
||||
m_config.SavePage(m_systemPage, systemSettings, sizeof(systemSettings) / sizeof(systemSettings[0]));
|
||||
}
|
||||
}
|
||||
|
||||
bool SystemConfigSystem::PageNavChangeFrom(const std::string & /*pageName*/, SCITER_ELEMENT /*pageNav*/)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SystemConfigSystem::PageNavChangeTo(const std::string & /*pageName*/, SCITER_ELEMENT /*pageNav*/)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void SystemConfigSystem::PageNavCreatedPage(const std::string & pageName, SCITER_ELEMENT page)
|
||||
{
|
||||
if (pageName == "System")
|
||||
{
|
||||
SetupSystemPage(page);
|
||||
}
|
||||
}
|
||||
|
||||
void SystemConfigSystem::PageNavPageChanged(const std::string & /*pageName*/, SCITER_ELEMENT /*pageNav*/)
|
||||
{
|
||||
}
|
||||
|
||||
void SystemConfigSystem::SetupSystemPage(SciterElement page)
|
||||
{
|
||||
m_systemPage = page;
|
||||
m_config.SetupPage(page, systemSettings, sizeof(systemSettings) / sizeof(systemSettings[0]));
|
||||
m_config.SavePage(m_page, systemSettings, sizeof(systemSettings) / sizeof(systemSettings[0]));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class SystemConfig;
|
||||
|
||||
class SystemConfigSystem : public IPagesSink
|
||||
class SystemConfigSystem
|
||||
{
|
||||
public:
|
||||
SystemConfigSystem(ISciterUI & sciterUI, SystemConfig & config, SciterElement page);
|
||||
|
|
@ -13,21 +13,12 @@ public:
|
|||
|
||||
void SaveSetting(void);
|
||||
|
||||
bool PageNavChangeFrom(const std::string & pageName, SCITER_ELEMENT pageNav) override;
|
||||
bool PageNavChangeTo(const std::string & pageName, SCITER_ELEMENT pageNav) override;
|
||||
void PageNavCreatedPage(const std::string & pageName, SCITER_ELEMENT page) override;
|
||||
void PageNavPageChanged(const std::string & pageName, SCITER_ELEMENT pageNav) override;
|
||||
|
||||
private:
|
||||
SystemConfigSystem() = delete;
|
||||
SystemConfigSystem(const SystemConfigSystem &) = delete;
|
||||
SystemConfigSystem & operator=(const SystemConfigSystem &) = delete;
|
||||
|
||||
void SetupSystemPage(SciterElement page);
|
||||
|
||||
ISciterUI & m_sciterUI;
|
||||
SystemConfig & m_config;
|
||||
SciterElement m_page;
|
||||
std::shared_ptr<IPageNav> m_pageNav;
|
||||
SciterElement m_systemPage;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -151,7 +151,7 @@ ENUM(AntiAliasing, None, Fxaa, Smaa, MaxEnum);
|
|||
|
||||
ENUM(AspectRatio, R16_9, R4_3, R21_9, R16_10, Stretch);
|
||||
|
||||
ENUM(ConsoleMode, Handheld, Docked);
|
||||
ENUM(DockedMode, Handheld, Docked);
|
||||
|
||||
ENUM(AppletMode, HLE, LLE);
|
||||
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ FramebufferLayout DefaultFrameLayout(u32 width, u32 height)
|
|||
|
||||
FramebufferLayout FrameLayoutFromResolutionScale(f32 res_scale)
|
||||
{
|
||||
const bool is_docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::ConsoleMode::Docked);
|
||||
const bool is_docked = g_settings->GetInt(NXOsSetting::DockedMode) == static_cast<int32_t>(Settings::DockedMode::Docked);
|
||||
const u32 screen_width = is_docked ? ScreenDocked::Width : ScreenUndocked::Width;
|
||||
const u32 screen_height = is_docked ? ScreenDocked::Height : ScreenUndocked::Height;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue