-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathGameLoop Class Diagram.drawio
4 lines (4 loc) · 63.6 KB
/
GameLoop Class Diagram.drawio
1
2
3
4
<?xml version="1.0" encoding="UTF-8"?>
<!-- Do not edit this file with editors other than diagrams.net -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="1828px" height="1159px" viewBox="-0.5 -0.5 1828 1159" content="<mxfile host="Electron" modified="2023-02-11T13:15:04.874Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.3.0 Chrome/104.0.5112.114 Electron/20.1.3 Safari/537.36" etag="TZMjZ5Bt3vsxLbi_C56K" version="20.3.0" type="device"><diagram id="C5RBs43oDa-KdzZeNtuy" name="Page-1">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</diagram></mxfile>"><defs><clipPath id="mx-clip-638-231-152-34-0"><rect x="638" y="231" width="152" height="34"/></clipPath><clipPath id="mx-clip-638-273-152-26-0"><rect x="638" y="273" width="152" height="26"/></clipPath><clipPath id="mx-clip-424-571-172-64-0"><rect x="424" y="571" width="172" height="64"/></clipPath><clipPath id="mx-clip-424-643-172-92-0"><rect x="424" y="643" width="172" height="92"/></clipPath><clipPath id="mx-clip-291-871-152-54-0"><rect x="291" y="871" width="152" height="54"/></clipPath><clipPath id="mx-clip-291-933-152-40-0"><rect x="291" y="933" width="152" height="40"/></clipPath><clipPath id="mx-clip-41-879-212-26-0"><rect x="41" y="879" width="212" height="26"/></clipPath><clipPath id="mx-clip-481-1081-252-26-0"><rect x="481" y="1081" width="252" height="26"/></clipPath><clipPath id="mx-clip-481-1115-252-40-0"><rect x="481" y="1115" width="252" height="40"/></clipPath><clipPath id="mx-clip-556-881-312-54-0"><rect x="556" y="881" width="312" height="54"/></clipPath><clipPath id="mx-clip-556-943-312-52-0"><rect x="556" y="943" width="312" height="52"/></clipPath><clipPath id="mx-clip-971-911-172-62-0"><rect x="971" y="911" width="172" height="62"/></clipPath><clipPath id="mx-clip-1251-905-212-68-0"><rect x="1251" y="905" width="212" height="68"/></clipPath><clipPath id="mx-clip-1251-981-212-32-0"><rect x="1251" y="981" width="212" height="32"/></clipPath><clipPath id="mx-clip-781-1081-162-74-0"><rect x="781" y="1081" width="162" height="74"/></clipPath><clipPath id="mx-clip-981-1089-232-26-0"><rect x="981" y="1089" width="232" height="26"/></clipPath></defs><g><rect x="119.5" y="660" width="205" height="120" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 207px; height: 120px; padding-top: 660px; margin-left: 120px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 205px; height: 120px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<Interface>></i><br /><b>IGame</b></p><hr size="1" /><p style="margin: 0px 0px 0px 4px;">+ setters, getters, constructor</p><p style="margin: 0px 0px 0px 4px;">+ play(): void, <span style="background-color: initial;">+ terminate(): void</span></p><p style="margin: 0px 0px 0px 4px;">+ getMovables(): List<IMovable></p><p style="margin: 0px 0px 0px 4px;">+ getMovableCount() : int</p><p style="margin: 0px 0px 0px 4px;">+ createMovable(): void</p><p style="margin: 0px 0px 0px 4px;"><br /></p></div></div></div></foreignObject><text x="120" y="672" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<Interface>>...</text></switch></g><rect x="412" y="307" width="195" height="163" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 197px; height: 163px; padding-top: 307px; margin-left: 412px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 195px; height: 163px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<Interface>></i><br /><b>IAstronaut</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px"><span>+ setPos(p: Point): void</span><br /></p><p style="margin: 0px ; margin-left: 4px">+ getPos(): Point</p><p style="margin: 0px ; margin-left: 4px">+ getLife(): int</p><p style="margin: 0px ; margin-left: 4px">+ setLife(life: int): void</p><p style="margin: 0px ; margin-left: 4px">+ setDamages(c: int): void</p><p style="margin: 0px ; margin-left: 4px">+ getDamages(): int</p><p style="margin: 0px ; margin-left: 4px">+ setFoodCollected(c: int): void</p><p style="margin: 0px ; margin-left: 4px">+ getFoodCollected(): int</p></div></div></div></foreignObject><text x="412" y="319" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<Interface>>...</text></switch></g><path d="M 634 226 L 634 200 L 794 200 L 794 226" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="all"/><path d="M 634 226 L 634 294 L 794 294 L 794 226" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 634 226 L 794 226" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 207px; margin-left: 714px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: nowrap;">Point</div></div></div></foreignObject><text x="714" y="219" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Point</text></switch></g><rect x="634" y="226" width="160" height="34" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-638-231-152-34-0)" font-size="12px"><text x="639.5" y="243.5">- x: int</text><text x="639.5" y="257.5">- y: int </text></g><path d="M 634 264 L 794 264" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="634" y="268" width="160" height="26" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-638-273-152-26-0)" font-size="12px"><text x="639.5" y="285.5">Point(x: int, y: int): Point</text></g><path d="M 419.5 566 L 419.5 540 L 599.5 540 L 599.5 566" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 419.5 566 L 419.5 730 L 599.5 730 L 599.5 566" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 419.5 566 L 599.5 566" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 547px; margin-left: 510px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: nowrap;">Astronaut</div></div></div></foreignObject><text x="510" y="559" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Astronaut</text></switch></g><rect x="419.5" y="566" width="180" height="64" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-424-571-172-64-0)" font-size="12px"><text x="425" y="583.5">- pos: Point</text><text x="425" y="597.5">- life: int</text><text x="425" y="611.5">- circles : List<Circle></text><text x="425" y="625.5">- collectedFood: int</text></g><path d="M 419.5 634 L 599.5 634" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="419.5" y="638" width="180" height="92" fill="#ffffff" stroke="none" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-424-643-172-92-0)" font-size="12px"><text x="425" y="655.5">+ setPos(p: Point): void</text><text x="425" y="669.5">+ getPos(): Point</text><text x="425" y="683.5">+ getLife(): int</text><text x="425" y="697.5">+ setLife(life: int): void</text><text x="425" y="711.5">+ setFoodCollected(c: int): void</text><text x="425" y="725.5">+ getFoodCollected(): int</text></g><path d="M 509.57 291.01 L 509.57 253 Q 509.57 243 519.57 243 L 631.76 243" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 509.57 306.01 L 505.16 298.51 L 509.57 291.01 L 513.98 298.51 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 619.88 249.5 L 632.88 243 L 619.88 236.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 509.5 540 L 509.5 484.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 509.5 471.12 L 516 484.12 L 503 484.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="837" y="200" width="320" height="130" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 322px; height: 130px; padding-top: 200px; margin-left: 837px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 320px; height: 130px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<Interface>></i><br /><b>IMovable</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ addEnergy(): int<br /></p><p style="margin: 0px ; margin-left: 4px">+ move(astro: IAstronaut, mover: string, xChanger): void</p><p style="margin: 0px ; margin-left: 4px">+ getAstronaut(): IAstronaut</p><p style="margin: 0px ; margin-left: 4px">+ setMover(astro: Point): string</p><p style="margin: 0px ; margin-left: 4px">+ setIntrinsic(mI: IMovIntrinsic)</p><p style="margin: 0px ; margin-left: 4px">- collide(astro: IAstronaut): boolean</p></div></div></div></foreignObject><text x="837" y="212" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<Interface>>...</text></switch></g><rect x="1347" y="190" width="240" height="90" fill="#dae8fc" stroke="#6c8ebf" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 242px; height: 90px; padding-top: 190px; margin-left: 1347px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 240px; height: 90px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<abstract class>></i><br /><b>IMovIntrinsic</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ <i>addEnergy(): int</i></p><p style="margin: 0px ; margin-left: 4px"><i>+ getRadius(): int</i></p><p style="margin: 0px ; margin-left: 4px">+ move(astro: IAstronaut, m : string): void</p><p style="margin: 0px ; margin-left: 4px">+$ getInstance(): IMovIntrinsic</p></div></div></div></foreignObject><text x="1347" y="202" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<abstract class>>...</text></switch></g><rect x="1207" y="330" width="240" height="120" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 242px; height: 120px; padding-top: 330px; margin-left: 1207px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 240px; height: 120px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>IntrinsicRock</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- energy: int</p><p style="margin: 0px ; margin-left: 4px">- rockI: IntrinsicRock </p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+ addEnergy(): int</p><p style="margin: 0px 0px 0px 4px">+ move(astro: IAstronaut, m : string): void</p><p style="margin: 0px 0px 0px 4px">+$ getInstance(): IMovIntrinsic</p></div></div></div></foreignObject><text x="1207" y="342" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">IntrinsicRock...</text></switch></g><rect x="1487" y="320" width="240" height="120" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 242px; height: 120px; padding-top: 320px; margin-left: 1487px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 240px; height: 120px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>IntrinsicFood</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- energy: int</p><p style="margin: 0px ; margin-left: 4px">- foodI: IntrinsicFood</p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+ addEnergy(): int</p><p style="margin: 0px 0px 0px 4px">+ move(astro: IAstronaut, m : string): void</p><p style="margin: 0px 0px 0px 4px">+$ getInstance(): IMovIntrinsic</p></div></div></div></foreignObject><text x="1487" y="332" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">IntrinsicFood...</text></switch></g><path d="M 1172.99 250 L 1287 250 Q 1297 250 1307 250.01 L 1344.76 250.03" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1157.99 250 L 1165.49 245.59 L 1172.99 250 L 1165.49 254.41 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1332.88 256.52 L 1345.88 250.03 L 1332.89 243.52" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="837" y="360" width="260" height="180" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 262px; height: 180px; padding-top: 360px; margin-left: 837px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 260px; height: 180px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>Movable</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- intrinsic: IMovIntrinsic</p><p style="margin: 0px ; margin-left: 4px">- mover: Mover</p><p style="margin: 0px ; margin-left: 4px">- pos: Point</p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+ addEnergy(): int<br /></p><p style="margin: 0px 0px 0px 4px">+ move(astro: IAstronaut, mover: string): void</p><p style="margin: 0px 0px 0px 4px">+ getAstronaut(): IAstronaut</p><p style="margin: 0px 0px 0px 4px">+ setMover(astro: IAstronaut): string</p><p style="margin: 0px 0px 0px 4px">+ setIntrinsic(mI: IMovIntrinsic)</p><p style="margin: 0px 0px 0px 4px">- collide(astro: IAstronaut): boolean</p><p style="margin: 0px 0px 0px 4px"><br /></p></div></div></div></foreignObject><text x="837" y="372" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Movable...</text></switch></g><path d="M 1037 360 L 1132 360 L 1157 385 L 1157 420 L 1037 420 L 1037 360 Z" fill="#ffffff" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1132 360 L 1132 385 L 1157 385" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe center; width: 118px; height: 1px; padding-top: 393px; margin-left: 1038px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Moving depends on threads</div></div></div></foreignObject><text x="1097" y="405" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Moving depends on th...</text></switch></g><path d="M 967 360 L 972.22 343.46" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 976.14 331.07 L 978.42 345.42 L 966.02 341.51 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 821.01 247 L 796.24 247" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 836.01 247 L 828.51 251.41 L 821.01 247 L 828.51 242.59 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 808.12 240.5 L 795.12 247 L 808.12 253.5" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-end; justify-content: unsafe flex-start; width: 1px; height: 1px; padding-top: 247px; margin-left: 839px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; background-color: rgb(255, 255, 255); white-space: nowrap;">1</div></div></div></foreignObject><text x="839" y="247" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px">1</text></switch></g><rect x="1157" y="500" width="190" height="80" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 80px; padding-top: 500px; margin-left: 1157px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 80px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<Interface>></i><br /><b>IMover</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ getAstronaut(): IAstronaut<br /></p><p style="margin: 0px ; margin-left: 4px">+ getEqn(): string</p></div></div></div></foreignObject><text x="1157" y="512" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<Interface>>...</text></switch></g><rect x="1127" y="620" width="160" height="80" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 162px; height: 80px; padding-top: 620px; margin-left: 1127px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 80px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>LinearMover</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- astro: IAstronaut</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ getEqn(): string</p></div></div></div></foreignObject><text x="1127" y="632" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">LinearMover...</text></switch></g><rect x="1377" y="620" width="160" height="80" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 162px; height: 80px; padding-top: 620px; margin-left: 1377px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 80px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>QuadraticMover</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- astro: IAstronaut</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ getEqn(): string</p></div></div></div></foreignObject><text x="1377" y="632" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">QuadraticMover...</text></switch></g><path d="M 1172.99 297.56 L 1174.99 297.56 Q 1177 297.57 1177 307.57 L 1177 459 Q 1177 469 1187 469 L 1242 469 Q 1252 469 1252 479 L 1252 497.76" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1157.99 297.5 L 1165.5 293.12 L 1172.99 297.56 L 1165.47 301.94 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1245.5 485.88 L 1252 498.88 L 1258.5 485.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1207 620 L 1207 615 Q 1207 610 1217 610 L 1247 610 Q 1257 610 1257 602.06 L 1257 594.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 1257 581.12 L 1263.5 594.12 L 1250.5 594.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1257 610 L 1439 610 Q 1449 610 1449 613 L 1449 616" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><rect x="127" y="440" width="190" height="180" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 192px; height: 180px; padding-top: 440px; margin-left: 127px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 190px; height: 180px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>Game</b></p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">- astro: IAstronaut</p><p style="margin: 0px ; margin-left: 4px">- movables: List<IMovable></p><p style="margin: 0px ; margin-left: 4px">- token: JWT token</p><p style="margin: 0px ; margin-left: 4px">- isRunning</p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+ setters, getters, constructor</p><p style="margin: 0px 0px 0px 4px">+ play(): void, <span style="background-color: initial;">+ terminate(): void</span></p><p style="margin: 0px 0px 0px 4px">+ getMovables(): List<IMovable></p><p style="margin: 0px 0px 0px 4px">+ getMovableCount() : int</p><p style="margin: 0px 0px 0px 4px">+ createMovable(): void</p><p style="margin: 0px 0px 0px 4px"><br /></p></div></div></div></foreignObject><text x="127" y="452" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Game...</text></switch></g><path d="M 222 620 L 222 645.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 222 658.88 L 215.5 645.88 L 228.5 645.88 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 222 440 L 222 399 Q 222 389 232 388.97 L 405.63 388.52" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 410.88 388.5 L 403.89 392.02 L 405.63 388.52 L 403.87 385.02 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 222 440 L 222 130 Q 222 120 232 120 L 627 120 Q 637 120 647 120 L 987 120 Q 997 120 997 130 L 997 193.63" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 997 198.88 L 993.5 191.88 L 997 193.63 L 1000.5 191.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="707" y="690" width="170" height="110" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 172px; height: 110px; padding-top: 690px; margin-left: 707px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 170px; height: 110px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin:0px;margin-top:4px;text-align:center;"><b>Score</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- avgLife</p><p style="margin:0px;margin-left:4px;">- maxFoodCollected</p><p style="margin:0px;margin-left:4px;">- gamesPlayed</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ setters and getters</p></div></div></div></foreignObject><text x="707" y="702" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Score...</text></switch></g><rect x="647" y="310" width="160" height="110" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 162px; height: 110px; padding-top: 310px; margin-left: 647px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 110px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin:0px;margin-top:4px;text-align:center;"><b>Circle</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">- x: int</p><p style="margin:0px;margin-left:4px;">- y: int</p><p style="margin:0px;margin-left:4px;">- radius: int</p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ setters and getters</p></div></div></div></foreignObject><text x="647" y="322" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Circle...</text></switch></g><path d="M 727 420 L 727 470 L 637 470 L 637 389 L 632.98 388.93" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 607.99 388.52 L 620.61 381.37 L 632.98 388.93 L 620.36 396.08 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 809.08 386.01 L 817 386 L 817 250" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1247" y="740" width="160" height="50" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 162px; height: 50px; padding-top: 740px; margin-left: 1247px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 160px; height: 50px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin:0px;margin-top:4px;text-align:center;"><b>NewtonInterpolationService</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ $getEqn</p></div></div></div></foreignObject><text x="1247" y="752" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">NewtonInterpolationService...</text></switch></g><path d="M 1247 765 L 1207 765 L 1207 725.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1207 700.99 L 1214.35 713.49 L 1207 725.99 L 1199.65 713.49 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1407 765 L 1457 765 L 1457 725.99" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1457 700.99 L 1464.35 713.49 L 1457 725.99 L 1449.65 713.49 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1647" y="190" width="180" height="70" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 182px; height: 70px; padding-top: 190px; margin-left: 1647px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 180px; height: 70px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin:0px;margin-top:4px;text-align:center;"><b>Evaluator</b></p><hr size="1" /><p style="margin:0px;margin-left:4px;">+ evalEqn()</p><p style="margin:0px;margin-left:4px;">+getDistance(Point p1, point p2)</p></div></div></div></foreignObject><text x="1647" y="202" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">Evaluator...</text></switch></g><path d="M 1645.02 235.99 L 1612.98 235.44" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1587.99 235.02 L 1600.61 227.88 L 1612.98 235.44 L 1600.36 242.58 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1348.09 148.64 L 1257 148 L 1257 224 L 1183.95 224.04" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1158.95 224.05 L 1171.44 216.69 L 1183.95 224.04 L 1171.45 231.4 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="1352" y="110" width="230" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 232px; height: 60px; padding-top: 110px; margin-left: 1352px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 230px; height: 60px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><i><<Interface>></i><br />XChanger</p><hr size="1" /><p style="margin: 0px ; margin-left: 4px">+ change(int x) : int</p></div></div></div></foreignObject><text x="1352" y="122" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px"><<Interface>>...</text></switch></g><rect x="1187" y="0" width="240" height="50" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 242px; height: 50px; padding-top: 0px; margin-left: 1187px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 240px; height: 50px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>XIncrementer</b></p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+Change(x) => x++</p></div></div></div></foreignObject><text x="1187" y="12" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">XIncrementer...</text></switch></g><rect x="1487" y="0" width="240" height="50" fill="#ffffff" stroke="rgb(0, 0, 0)" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 242px; height: 50px; padding-top: 0px; margin-left: 1487px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: left; width: 240px; height: 50px; overflow: hidden;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; width: 100%; height: 100%; white-space: nowrap;"><p style="margin: 0px ; margin-top: 4px ; text-align: center"><b>XDecrementer</b></p><hr size="1" /><p style="margin: 0px 0px 0px 4px">+ change(x) => x- -</p></div></div></div></foreignObject><text x="1487" y="12" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px">XDecrementer...</text></switch></g><path d="M 1327 330 L 1327 310 L 1467 310 L 1467 298.12" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1467 281.12 L 1475.5 298.12 L 1458.5 298.12 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 310px; margin-left: 1403px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; background-color: rgb(255, 255, 255); white-space: nowrap;">Extends</div></div></div></foreignObject><text x="1403" y="313" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">Extends</text></switch></g><path d="M 1607 320 L 1607 310 L 1467 310" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1307 50 L 1307 60 L 1397 60 L 1467 60 L 1467 95.88" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 1467 108.88 L 1460.5 95.88 L 1473.5 95.88 Z" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1467 60 L 1607 60 L 1607 50" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" stroke-dasharray="3 3" pointer-events="none"/><path d="M 287 866 L 287 840 L 447 840 L 447 866" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 287 866 L 287 968 L 447 968 L 447 866" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 287 866 L 447 866" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="366.5" y="857.5">FinishedGameDto</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-291-871-152-54-0)" font-size="12px"><text x="292.5" y="883.5">- life: int</text><text x="292.5" y="897.5">- collectedFood: int</text><text x="292.5" y="911.5">- token: JWT </text></g><path d="M 287 924 L 447 924" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-291-933-152-40-0)" font-size="12px"><text x="292.5" y="945.5">+ Setters, Getters</text><text x="292.5" y="959.5">+ Constructor</text></g><path d="M 147 840 L 147 810 L 222 810 L 222 786.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 222 781.12 L 225.5 788.12 L 222 786.37 L 218.5 788.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 37 866 L 37 840 L 257 840 L 257 866" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 37 866 L 37 900 L 257 900 L 257 866" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 37 866 L 257 866" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="146.5" y="857.5">FinishedGameMapper</text></g><path d="M 37 870 L 257 870" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-41-879-212-26-0)" font-size="12px"><text x="42.5" y="891.5">+ map(IGame g) : FinishedGameDTo </text></g><path d="M 147 900 L 147 924 L 280.63 924" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 285.88 924 L 278.88 927.5 L 280.63 924 L 278.88 920.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 177 1089 L 7 1089 L 7 720 L 113.13 720" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 118.38 720 L 111.38 723.5 L 113.13 720 L 111.38 716.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 267 1044 L 267 1010 L 373.14 1010 L 373.09 976.09" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 373.08 970.84 L 376.59 977.83 L 373.09 976.09 L 369.59 977.84 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><rect x="177" y="1044" width="180" height="90" fill="#fff2cc" stroke="#d6b656" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 1089px; margin-left: 267px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: nowrap;">WebSocket EndPoint</div></div></div></foreignObject><text x="267" y="1093" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">WebSocket EndPoint</text></switch></g><path d="M 334 1051 L 350 1051 L 350 1071 L 334 1071 L 334 1067 L 330 1067 L 330 1063 L 334 1063 L 334 1059 L 330 1059 L 330 1055 L 334 1055 Z" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 334 1055 L 338 1055 L 338 1059 L 334 1059 M 334 1063 L 338 1063 L 338 1067 L 334 1067" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 542 1050 L 507 1050 L 507 948 L 453.37 948" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 448.12 948 L 455.12 944.5 L 453.37 948 L 455.12 951.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 477 1076 L 477 1050 L 737 1050 L 737 1076" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 477 1076 L 477 1150 L 737 1150 L 737 1076" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 477 1076 L 737 1076" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="606.5" y="1067.5">GameController</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-481-1081-252-26-0)" font-size="12px"><text x="482.5" y="1093.5">- Ranking Service</text></g><path d="M 477 1106 L 737 1106" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-481-1115-252-40-0)" font-size="12px"><text x="482.5" y="1127.5">+ getRankings(auth): List<RankingUSerDto></text><text x="482.5" y="1141.5">+ saveGame(FinishedGameDto): String</text></g><path d="M 477 1089 L 363.37 1089" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 358.12 1089 L 365.12 1085.5 L 363.37 1089 L 365.12 1092.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 792 850 L 792 806.37" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 792 801.12 L 795.5 808.12 L 792 806.37 L 788.5 808.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 552 876 L 552 850 L 872 850 L 872 876" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 552 876 L 552 990 L 872 990 L 872 876" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 552 876 L 872 876" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="711.5" y="867.5">RankingService</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-556-881-312-54-0)" font-size="12px"><text x="557.5" y="893.5">- JWT Service</text><text x="557.5" y="907.5">- RankingUserRepo</text><text x="557.5" y="921.5">- RankingUserMapper</text></g><path d="M 552 934 L 872 934" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-556-943-312-52-0)" font-size="12px"><text x="557.5" y="955.5">+ saveGame(FinishedGameDto): String</text><text x="557.5" y="969.5">+ getRankings(String userName): List<RankingUSerDto></text><text x="557.5" y="983.5">- getRequester(String userName): RankingUSerDto</text></g><path d="M 552 903 L 499.57 903 L 453.69 903.89" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 448.44 903.99 L 455.37 900.36 L 453.69 903.89 L 455.5 907.36 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 967 898 L 967 858 L 1147 858 L 1147 898" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 967 898 L 967 968 L 1147 968 L 1147 898" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 967 898 L 1147 898" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="1056.5" y="875.5"><<Interface>></text><text x="1056.5" y="889.5">RankingUserRepo</text></g><path d="M 967 902 L 1147 902" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-971-911-172-62-0)" font-size="12px"><text x="972.5" y="923.5">+ findByUserName()</text><text x="972.5" y="937.5">+ update()</text><text x="972.5" y="951.5">+ getTopN(int N): RankingUser</text></g><path d="M 1247 900 L 1247 858 L 1467 858 L 1467 900" fill="#fff2cc" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 1247 900 L 1247 1008 L 1467 1008 L 1467 900" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><path d="M 1247 900 L 1467 900" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="1356.5" y="875.5"><<Entity>></text><text x="1356.5" y="889.5">RankingUser</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1251-905-212-68-0)" font-size="12px"><text x="1252.5" y="917.5">- maxCollectedFood: int</text><text x="1252.5" y="931.5">- gamesPlayed: int</text><text x="1252.5" y="945.5">- avgLife: int</text><text x="1252.5" y="959.5">- userName: String (FK of NormalUser) </text></g><path d="M 1247 972 L 1467 972" fill="none" stroke="#d6b656" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-1251-981-212-32-0)" font-size="12px"><text x="1252.5" y="993.5">+ Setters, Getters, Constructor </text></g><path d="M 1327 1015 C 1327 1006.72 1340.43 1000 1357 1000 C 1364.96 1000 1372.59 1001.58 1378.21 1004.39 C 1383.84 1007.21 1387 1011.02 1387 1015 L 1387 1065 C 1387 1073.28 1373.57 1080 1357 1080 C 1340.43 1080 1327 1073.28 1327 1065 Z" fill="#f8cecc" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><path d="M 1387 1015 C 1387 1023.28 1373.57 1030 1357 1030 C 1340.43 1030 1327 1023.28 1327 1015" fill="none" stroke="#b85450" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 58px; height: 1px; padding-top: 1053px; margin-left: 1328px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 20px;">DB</font></div></div></div></foreignObject><text x="1357" y="1056" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">DB</text></switch></g><path d="M 819.5 1050 L 819.57 1030 L 711.71 1030 L 711.69 998.92" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 711.68 993.67 L 715.19 1000.66 L 711.69 998.92 L 708.19 1000.67 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 777 1076 L 777 1050 L 947 1050 L 947 1076" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 777 1076 L 777 1158 L 947 1158 L 947 1076" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 777 1076 L 947 1076" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="861.5" y="1067.5">RankingUserDto</text></g><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-781-1081-162-74-0)" font-size="12px"><text x="782.5" y="1093.5">- maxCollectedFood: int</text><text x="782.5" y="1107.5">- gamesPlayed: int</text><text x="782.5" y="1121.5">- avgLife: int</text><text x="782.5" y="1135.5">- userName: String </text></g><path d="M 777 1154 L 947 1154" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 967 937 L 967 945.43 L 880.93 945.44" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 875.68 945.44 L 882.68 941.94 L 880.93 945.44 L 882.68 948.94 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1247 934 L 1247 937 L 1153.37 937" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1148.12 937 L 1155.12 933.5 L 1153.37 937 L 1155.12 940.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1097 1050 L 1097 1020 L 937 1020 L 937 970 L 878.37 970" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 873.12 970 L 880.12 966.5 L 878.37 970 L 880.12 973.5 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 977 1076 L 977 1050 L 1217 1050 L 1217 1076" fill="rgb(255, 255, 255)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 977 1076 L 977 1110 L 1217 1110 L 1217 1076" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 977 1076 L 1217 1076" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" font-weight="bold" pointer-events="none" text-anchor="middle" font-size="12px"><text x="1096.5" y="1067.5">RankingUserMapper</text></g><path d="M 977 1080 L 1217 1080" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><g fill="rgb(0, 0, 0)" font-family="Helvetica" pointer-events="none" clip-path="url(#mx-clip-981-1089-232-26-0)" font-size="12px"><text x="982.5" y="1101.5">+ map(RankingUser) : RankingUSerDTo</text></g><path d="M 947 1113 L 947 1140 L 1111.57 1140 L 1111.62 1118.94" fill="none" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/><path d="M 1111.64 1113.69 L 1115.12 1120.7 L 1111.62 1118.94 L 1108.12 1120.68 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-miterlimit="10" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>