1
0
Fork 0

Fixed particle system crash

This commit is contained in:
Michaël Lemaire 2018-06-03 23:27:35 +02:00
parent 2c396f1e34
commit 75eeb44aa0
12 changed files with 321 additions and 364 deletions

View File

@ -7,9 +7,7 @@ Phaser 3 migration
* Pause the game when the window isn't focused (except in headless)
* Fit the game in window size
* Fix top-right messages positions
* Make the AI-thinking loader work again
* Fix the character sheet layout
* Fix the crash in gatling animation
* Fix valuebar requiring to be in root display list
Menu/settings/saves

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

251
graphics/ui/awaiter.svg Normal file
View File

@ -0,0 +1,251 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="128"
height="128"
viewBox="0 0 128 128"
version="1.1"
id="svg6044"
inkscape:version="0.92.3 (3ce5693, 2018-03-11)"
sodipodi:docname="awaiter.svg"
inkscape:export-filename="/home/michael/workspace/spacetac/data/stage1/image/common/awaiter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
style="enable-background:new">
<defs
id="defs6038">
<linearGradient
inkscape:collect="always"
id="linearGradient4299">
<stop
style="stop-color:#c09058;stop-opacity:1;"
offset="0"
id="stop4295" />
<stop
id="stop4305"
offset="0.66959655"
style="stop-color:#c09058;stop-opacity:1;" />
<stop
id="stop4303"
offset="0.73259044"
style="stop-color:#e9c79f;stop-opacity:1" />
<stop
style="stop-color:#c09058;stop-opacity:1;"
offset="0.78740031"
id="stop4307" />
<stop
style="stop-color:#c09058;stop-opacity:1"
offset="1"
id="stop4297" />
</linearGradient>
<mask
maskUnits="userSpaceOnUse"
id="mask7281">
<g
id="g7285"
transform="matrix(0.73124794,0,0,0.99999999,79.083976,1.2221143e-7)">
<path
style="fill:#fffafa;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 680.67969,216.32031 V 749.67969 H 1543.6758 V 216.32031 Z m 257.48633,23.42774 174.01168,220.39453 174.0118,-220.39453 27.0703,11.42773 -174.0118,220.39649 h 348.0215 v 22.85546 H 1139.248 l 174.0118,220.39649 -27.0703,11.42773 L 1112.1777,505.85742 938.16602,726.25195 911.0957,714.82422 1085.1074,494.42773 H 737.08594 V 471.57227 H 1085.1074 L 911.0957,251.17578 Z"
transform="matrix(0.26458334,0,0,0.26458334,0,11.249983)"
id="path7283"
inkscape:connector-curvature="0" />
</g>
</mask>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath7292">
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:0.36058816px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:transform-center-x="24.888019"
d="m 254.34398,139.04371 149.32817,-46.261049 3e-5,92.522079 z"
id="path7294"
inkscape:connector-curvature="0"
inkscape:transform-center-y="-2.5000005e-06" />
</clipPath>
<mask
maskUnits="userSpaceOnUse"
id="mask8954">
<path
style="fill:#ececec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -2.5351562,832.71482 V 1093.7851 H 258.53516 V 832.71482 Z M 122,835.39256 h 12 V 952.8574 l 101.72852,-58.73242 6,10.39258 L 140,963.24998 l 101.72852,58.73242 -6,10.3926 L 134,973.64256 V 1091.1074 H 122 V 973.64256 l -101.728516,58.73244 -6,-10.3926 L 116,963.24998 14.271484,904.51756 l 6,-10.39258 L 122,952.8574 Z"
id="path8956"
inkscape:connector-curvature="0" />
</mask>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath8964">
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1.18050802px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:transform-center-x="24.263684"
d="m 128.00001,963.24994 145.58209,-84.05186 10e-6,168.10372 z"
id="path8966"
inkscape:connector-curvature="0"
inkscape:transform-center-y="-1e-05" />
</clipPath>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Color Shift"
id="filter11909">
<feColorMatrix
type="hueRotate"
values="164.59999999999999"
result="color1"
id="feColorMatrix11905" />
<feColorMatrix
type="saturate"
values="0.70999999999999996"
result="color2"
id="feColorMatrix11907" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4280"
x="-0.1043688"
width="1.2087376"
y="-0.18869544"
height="1.3773909">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="3.8750023"
id="feGaussianBlur4282" />
</filter>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4299"
id="linearGradient4301"
x1="65.841492"
y1="1000.924"
x2="66.217918"
y2="1067.1171"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4299"
id="linearGradient4323"
gradientUnits="userSpaceOnUse"
x1="65.841492"
y1="1000.924"
x2="66.217918"
y2="1067.1171" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter4341"
x="-0.28404511"
width="1.5680902"
y="-0.10069418"
height="1.2013884">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="4.6698375"
id="feGaussianBlur4343" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="63.943429"
inkscape:cy="47.118486"
inkscape:document-units="px"
inkscape:current-layer="g4293"
showgrid="false"
units="px"
showborder="true"
inkscape:showpageshadow="false"
showguides="false"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-nodes="false"
inkscape:snap-object-midpoints="true"
inkscape:snap-global="false"
inkscape:snap-others="false"
inkscape:window-width="1920"
inkscape:window-height="1037"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="0">
<inkscape:grid
type="xygrid"
id="grid11797"
spacingx="64"
spacingy="64"
dotted="false"
color="#3f3fff"
opacity="0.20392157"
empcolor="#3f3fff"
empopacity="0.34509804"
empspacing="2" />
</sodipodi:namedview>
<metadata
id="metadata6041">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-963.24998)">
<g
id="g4293"
inkscape:export-filename="/home/michael/workspace/spacetac/data/stage1/image/common/awaiter.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
transform="rotate(90,67.88396,1031.1339)">
<path
style="opacity:0.34599998;fill:url(#linearGradient4301);fill-opacity:1;stroke:none;stroke-width:6;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4280)"
d="m 19.446431,1010.375 h 89.107139 l -13.035716,49.2858 H 32.482145 Z"
id="path4258"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc"
transform="matrix(1.1096046,0,0,0.8883255,-7.0146953,112.81725)" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="rect4255"
d="m 19.046721,1013.2403 h 89.906559 l -13.152665,24.0038 H 32.199384 Z"
style="opacity:1;fill:#ffd09a;fill-opacity:1;stroke:none;stroke-width:5.72441339;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-curvature="0"
id="path4284"
d="m 34.718151,1033.6347 c 19.521233,0 39.042465,0 58.563698,0 3.065671,-5.595 6.131341,-11.19 9.197011,-16.785 -25.652573,0 -51.305147,0 -76.957721,0 3.065671,5.595 6.131341,11.19 9.197012,16.785 z"
style="opacity:1;fill:#ffdfba;fill-opacity:1;stroke:#000000;stroke-width:2.8622067;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.22985074" />
<path
transform="matrix(0.39332006,0,0,0.31488355,38.470373,744.91136)"
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path4321"
d="m 19.446431,1010.375 h 89.107139 l -13.035716,49.2858 H 32.482145 Z"
style="opacity:0.46700003;fill:url(#linearGradient4323);fill-opacity:1;stroke:none;stroke-width:6;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;filter:url(#filter4341)" />
<path
style="opacity:1;fill:#775227;fill-opacity:1;stroke:#000000;stroke-width:1.80977798;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.22985074"
d="m 49.787984,1037.2441 h 28.424033 l -4.158226,-7.5888 H 53.946209 Z"
id="path4345"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -1,329 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="512"
height="512"
viewBox="0 0 512 512"
version="1.1"
id="svg6044"
inkscape:version="0.92.1 r15371"
sodipodi:docname="loader.svg"
inkscape:export-filename="/home/michael/workspace/perso/spacetac/out/assets/images/common/waiting.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
style="enable-background:new"
enable-background="new">
<defs
id="defs6038">
<linearGradient
inkscape:collect="always"
id="linearGradient10408">
<stop
style="stop-color:#519aed;stop-opacity:1;"
offset="0"
id="stop10404" />
<stop
style="stop-color:#96bfed;stop-opacity:1"
offset="1"
id="stop10406" />
</linearGradient>
<mask
maskUnits="userSpaceOnUse"
id="mask7281">
<g
id="g7285"
transform="matrix(0.73124794,0,0,0.99999999,79.083976,1.2221143e-7)">
<path
style="fill:#fffafa;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 680.67969,216.32031 V 749.67969 H 1543.6758 V 216.32031 Z m 257.48633,23.42774 174.01168,220.39453 174.0118,-220.39453 27.0703,11.42773 -174.0118,220.39649 h 348.0215 v 22.85546 H 1139.248 l 174.0118,220.39649 -27.0703,11.42773 L 1112.1777,505.85742 938.16602,726.25195 911.0957,714.82422 1085.1074,494.42773 H 737.08594 V 471.57227 H 1085.1074 L 911.0957,251.17578 Z"
transform="matrix(0.26458334,0,0,0.26458334,0,11.249983)"
id="path7283"
inkscape:connector-curvature="0" />
</g>
</mask>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath7292">
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:0.36058816px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:transform-center-x="24.888019"
d="m 254.34398,139.04371 149.32817,-46.261049 3e-5,92.522079 z"
id="path7294"
inkscape:connector-curvature="0"
inkscape:transform-center-y="-2.5000005e-06" />
</clipPath>
<mask
maskUnits="userSpaceOnUse"
id="mask8954">
<path
style="fill:#ececec;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -2.5351562,832.71482 V 1093.7851 H 258.53516 V 832.71482 Z M 122,835.39256 h 12 V 952.8574 l 101.72852,-58.73242 6,10.39258 L 140,963.24998 l 101.72852,58.73242 -6,10.3926 L 134,973.64256 V 1091.1074 H 122 V 973.64256 l -101.728516,58.73244 -6,-10.3926 L 116,963.24998 14.271484,904.51756 l 6,-10.39258 L 122,952.8574 Z"
id="path8956"
inkscape:connector-curvature="0" />
</mask>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath8964">
<path
style="fill:#ffff00;fill-rule:evenodd;stroke:#000000;stroke-width:1.18050802px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
inkscape:transform-center-x="24.263684"
d="m 128.00001,963.24994 145.58209,-84.05186 10e-6,168.10372 z"
id="path8966"
inkscape:connector-curvature="0"
inkscape:transform-center-y="-1e-05" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient10408"
id="linearGradient10410"
x1="128.00002"
y1="963.24994"
x2="248.5"
y2="963.24994"
gradientUnits="userSpaceOnUse" />
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter11817"
x="-0.0276"
width="1.0552"
y="-0.0276"
height="1.0552">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.7025"
id="feGaussianBlur11819" />
</filter>
<filter
inkscape:collect="always"
style="color-interpolation-filters:sRGB"
id="filter11823"
x="-0.0276"
width="1.0552"
y="-0.0276"
height="1.0552">
<feGaussianBlur
inkscape:collect="always"
stdDeviation="2.7025"
id="feGaussianBlur11825" />
</filter>
<filter
style="color-interpolation-filters:sRGB;"
inkscape:label="Color Shift"
id="filter11909">
<feColorMatrix
type="hueRotate"
values="164.59999999999999"
result="color1"
id="feColorMatrix11905" />
<feColorMatrix
type="saturate"
values="0.70999999999999996"
result="color2"
id="feColorMatrix11907" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#000000"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="5.6"
inkscape:cx="79.947686"
inkscape:cy="445.41071"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
units="px"
showborder="true"
inkscape:showpageshadow="false"
showguides="false"
inkscape:snap-bbox="true"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-nodes="false"
inkscape:snap-object-midpoints="true"
inkscape:snap-global="false"
inkscape:snap-others="false">
<inkscape:grid
type="xygrid"
id="grid11797"
spacingx="64"
spacingy="64"
dotted="false"
color="#3f3fff"
opacity="0.20392157"
empcolor="#3f3fff"
empopacity="0.34509804"
empspacing="2" />
</sodipodi:namedview>
<metadata
id="metadata6041">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Calque 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-579.24998)">
<use
x="0"
y="0"
xlink:href="#g11795"
id="use11799"
width="100%"
height="100%"
transform="rotate(60,128,754.10123)" />
<use
x="0"
y="0"
xlink:href="#g11795"
id="use11801"
width="100%"
height="100%"
transform="rotate(120,192,717.15081)" />
<use
x="0"
y="0"
xlink:href="#g11795"
id="use11803"
width="100%"
height="100%"
transform="rotate(-180,256,643.24998)" />
<use
x="0"
y="0"
xlink:href="#g11795"
id="use11805"
width="100%"
height="100%"
transform="rotate(-120,100.95042,707.24998)" />
<use
x="0"
y="0"
xlink:href="#g11795"
id="use11807"
width="100%"
height="100%"
transform="rotate(-60,238.85125,596.39873)" />
<g
id="g11795"
transform="matrix(0.44754579,0,0,0.44754579,6.9669246,211.99165)"
style="filter:url(#filter11909)">
<circle
r="117.5"
cy="963.25"
cx="128"
id="path8921"
style="opacity:1;fill:#2b598e;fill-opacity:0.11914894;fill-rule:evenodd;stroke:#519aed;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.21914894" />
<g
id="g10418"
transform="matrix(0.97065238,-0.18255724,0.18255724,0.97065238,-172.65659,51.993587)"
style="opacity:0.25400002;fill:#bbc3cb;fill-opacity:1;stroke:none;filter:url(#filter11823)">
<path
style="opacity:1;fill:#bbc3cb;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 245.5,963.25 A 117.5,117.5 0 0 1 128,1080.75 117.5,117.5 0 0 1 10.5,963.25 117.5,117.5 0 0 1 128,845.75 117.5,117.5 0 0 1 245.5,963.25 Z"
id="path10416"
inkscape:connector-curvature="0"
clip-path="url(#clipPath8964)" />
</g>
<g
style="opacity:0.42300002;fill:#374656;fill-opacity:1;stroke:none;filter:url(#filter11817)"
transform="matrix(1.0764834,0,0,1.0764834,-19.283274,-73.315481)"
id="g10180">
<path
clip-path="url(#clipPath8964)"
inkscape:connector-curvature="0"
id="path10178"
d="M 245.5,963.25 A 117.5,117.5 0 0 1 128,1080.75 117.5,117.5 0 0 1 10.5,963.25 117.5,117.5 0 0 1 128,845.75 117.5,117.5 0 0 1 245.5,963.25 Z"
style="opacity:1;fill:#374656;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g9761">
<path
style="opacity:1;fill:url(#linearGradient10410);fill-opacity:1;fill-rule:evenodd;stroke:#50739b;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 245.5,963.25 A 117.5,117.5 0 0 1 128,1080.75 117.5,117.5 0 0 1 10.5,963.25 117.5,117.5 0 0 1 128,845.75 117.5,117.5 0 0 1 245.5,963.25 Z"
id="circle8958"
inkscape:connector-curvature="0"
clip-path="url(#clipPath8964)" />
</g>
<g
id="g10088">
<path
sodipodi:type="star"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4081ca;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path8939"
sodipodi:sides="6"
sodipodi:cx="128"
sodipodi:cy="963.25"
sodipodi:r1="105.28872"
sodipodi:r2="91.182709"
sodipodi:arg1="-1.5707963"
sodipodi:arg2="-1.0471976"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="m 128,857.96128 91.18271,52.64436 -10e-6,105.28876 -91.1827,52.6443 -91.182707,-52.6443 3e-6,-105.28876 z"
mask="url(#mask8954)" />
</g>
<g
transform="matrix(0.87923253,0,0,0.87923253,15.458236,116.32926)"
id="g10414">
<path
mask="url(#mask8954)"
d="m 128,857.96128 91.18271,52.64436 -10e-6,105.28876 -91.1827,52.6443 -91.182707,-52.6443 3e-6,-105.28876 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="-1.0471976"
sodipodi:arg1="-1.5707963"
sodipodi:r2="91.182709"
sodipodi:r1="105.28872"
sodipodi:cy="963.25"
sodipodi:cx="128"
sodipodi:sides="6"
id="path10412"
style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4081ca;stroke-width:3.4120667;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="star" />
</g>
<g
transform="matrix(0.47449832,0,0,0.47449832,67.264216,506.1895)"
id="g10422">
<path
mask="url(#mask8954)"
d="m 128,857.96128 91.18271,52.64436 -10e-6,105.28876 -91.1827,52.6443 -91.182707,-52.6443 3e-6,-105.28876 z"
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="-1.0471976"
sodipodi:arg1="-1.5707963"
sodipodi:r2="91.182709"
sodipodi:r1="105.28872"
sodipodi:cy="963.25"
sodipodi:cx="128"
sodipodi:sides="6"
id="path10420"
style="opacity:0.319;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#4081ca;stroke-width:31.71138763;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="star" />
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -55,7 +55,6 @@ module TK.SpaceTac.UI {
// TODO pack
this.loadSheet("common/particles.png", 32);
this.loadAnimation("common/waiting.png", 128, 128, 6);
}
if (this.required >= AssetLoadingRange.BATTLE && AssetLoading.loaded < AssetLoadingRange.BATTLE) {
@ -86,14 +85,5 @@ module TK.SpaceTac.UI {
frameHeight: frame_height,
});
}
loadAnimation(path: string, frame_width: number, frame_height = frame_width, count: number) {
this.load.spritesheet(AssetLoading.getKey(path), "images/" + path, {
frameWidth: frame_width,
frameHeight: frame_height,
startFrame: 0,
endFrame: count - 1
});
}
}
}

View File

@ -18,7 +18,7 @@ module TK.SpaceTac.UI {
// Animations
animations!: Animations
particles!: ParticleSystem
particles!: UIParticles
// Timing
timer!: Timer
@ -57,7 +57,7 @@ module TK.SpaceTac.UI {
this.gameui = <MainUI>this.sys.game;
this.timer = new Timer(this.gameui.headless);
this.animations = new Animations(this.tweens);
this.particles = new ParticleSystem(this);
this.particles = new UIParticles(this);
this.inputs = new InputManager(this);
this.audio = new Audio(this);
this.debug = this.gameui.debug;

View File

@ -17,7 +17,7 @@ module TK.SpaceTac.UI {
power_icons!: UIContainer
// Indicator of interaction disabled
icon_waiting: UIImage
icon_waiting: UIAwaiter
// Current ship, whose actions are displayed
ship: Ship | null
@ -55,9 +55,7 @@ module TK.SpaceTac.UI {
builder.image("battle-actionbar-ship", 1735);
// Waiting icon
this.icon_waiting = builder.image("common-waiting", base.width / 2, base.height / 2, true);
// FIXME
//this.icon_waiting.animations.add("loop").play(9, true);
this.icon_waiting = builder.awaiter(base.width / 2, base.height / 2, true, 0.5);
// Options button
builder.button("battle-actionbar-button-menu", 0, 0, () => battleview.showOptions(), "Game options");

View File

@ -0,0 +1,26 @@
module TK.SpaceTac.UI {
/**
* UI component to show a loader animation while waiting for something
*/
export class UIAwaiter extends Phaser.GameObjects.Container {
constructor(view: BaseView, x: number, y: number, visible: boolean) {
super(view, x, y);
this.setName("awaiter");
this.setVisible(visible);
let manager = new UIParticles(view).createManager("common-awaiter", this);
let circle = new Phaser.Geom.Circle(0, 0, 60);
manager.createEmitter({
angle: { start: 0, end: 360, steps: 6 },
alpha: { start: 1, end: 0, ease: "Quad.easeIn" },
lifespan: 1200,
speed: 5,
quantity: 1,
scale: { start: 0.9, end: 1, ease: "Quad.easeOut" },
frequency: 200,
particleClass: FacingAlwaysParticle,
emitZone: { type: 'edge', source: circle, quantity: 6 }
});
}
}
}

View File

@ -2,7 +2,6 @@
* Main way to create UI components
*/
module TK.SpaceTac.UI {
export type UIParticles = Phaser.GameObjects.Particles.ParticleEmitterManager
export type UIBuilderParent = UIImage | UIContainer
export type ShaderValue = number | { x: number, y: number }
@ -217,6 +216,16 @@ module TK.SpaceTac.UI {
this.view.particles.emit(config, this.parent instanceof UIContainer ? this.parent : undefined);
}
/**
* Animation to await something
*/
awaiter(x = 0, y = 0, visible = true, scale = 1): UIAwaiter {
let result = new UIAwaiter(this.view, x, y, visible);
result.setScale(scale);
this.add(result);
return result;
}
/**
* Change the content of an component
*

View File

@ -1,6 +1,4 @@
module TK.SpaceTac.UI {
type Manager = Phaser.GameObjects.Particles.ParticleEmitterManager;
export enum ParticleFacingMode {
INITIAL = 1,
ALWAYS = 2
@ -29,29 +27,30 @@ module TK.SpaceTac.UI {
facing?: ParticleFacingMode
}
/**
* Override of phaser particle manager to fix some issues
*/
export class UIParticleManager extends Phaser.GameObjects.Particles.ParticleEmitterManager {
setScrollFactor() {
}
setAlpha() {
}
}
/**
* System to emit multiple particles of the same texture
*/
export class ParticleSystem {
export class UIParticles {
constructor(private view: BaseView) {
}
private getManager(key: string, parent?: UIContainer): Manager {
let info = this.view.getImageInfo(key);
let result = this.view.add.particles(info.key, info.frame);
if (parent) {
parent.add(result);
}
return result;
}
/**
* Emit a batch of particles
*
* Returns the total duration in milliseconds
*/
emit(config: ParticlesConfig, parent?: UIContainer): number {
let manager = this.getManager(config.key, parent);
let manager = this.createManager(config.key, parent);
let emitter = manager.createEmitter({});
if (config.fading) {
emitter.setAlpha({ start: 1, end: 0 });
@ -81,12 +80,27 @@ module TK.SpaceTac.UI {
let duration = this.emit(config);
return this.view.timer.sleep(duration);
}
/**
* Create a new particle manager
*
* Automatically called by *emit*.
*/
createManager(key: string, parent?: UIContainer): UIParticleManager {
let info = this.view.getImageInfo(key);
let result = new UIParticleManager(this.view, info.key, info.frame, []);
this.view.add.existing(result);
if (parent) {
parent.add(result);
}
return result;
}
}
/**
* Particle that is rotated to face its initial direction
*/
class FacingInitialParticle extends Phaser.GameObjects.Particles.Particle {
export class FacingInitialParticle extends Phaser.GameObjects.Particles.Particle {
fire(x: number, y: number): any {
let result = super.fire(x, y);
this.rotation = Math.atan2(this.velocityY, this.velocityX);
@ -97,7 +111,7 @@ module TK.SpaceTac.UI {
/**
* Particle that is rotated to face its movement direction
*/
class FacingAlwaysParticle extends FacingInitialParticle {
export class FacingAlwaysParticle extends FacingInitialParticle {
update(delta: any, step: any, processors: any): any {
let result = super.update(delta, step, processors);
this.rotation = Math.atan2(this.velocityY, this.velocityX);

View File

@ -7,7 +7,7 @@ module TK.SpaceTac.UI {
super(view);
this.content.text(message, this.width * 0.5, this.height * 0.3, { color: "#90FEE3", size: 32 });
//this.addLoader(this.width * 0.5, this.height * 0.6);
this.content.awaiter(this.width * 0.5, this.height * 0.6);
}
/**