From f330b02f34a4ec6fa84add38930fbdebc0729764 Mon Sep 17 00:00:00 2001 From: Fabian <fakehlenbeck@googlemail.com> Date: Sun, 31 May 2020 18:07:55 +0200 Subject: [PATCH] DATENSICHT FERTIG + uml korrektur xd --- doc/Architekturbeschreibung.tex | 12 ++++++++---- doc/UML/Datenmodell.drawio | 2 +- doc/UML/Datenmodell.pdf | Bin 58050 -> 58052 bytes 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/doc/Architekturbeschreibung.tex b/doc/Architekturbeschreibung.tex index 6d876a91..b1142b5e 100644 --- a/doc/Architekturbeschreibung.tex +++ b/doc/Architekturbeschreibung.tex @@ -1316,13 +1316,17 @@ Dieses Modul realisiert somit die Strategie 3.1 (Abspeicherung des Spielstands). -Alle Spiel-relevanten Attribute sind in unserem Datenmodell in \textit{Ship} enthalten. Ein Schiff besteht aus mehreren Räumen , welche zum Teil leer sein können, aber auch wichtige Systeme beinhalten können. Damit realisieren wir die Strategie \textit{12.1} sowie die Strategien \textit{4.1} und \textit{4.2}. +Alle Spieler-relevanten Attribute sind in unserem Datenmodell in \textit{Ship} enthalten. Ein Schiff besteht aus mehreren Räumen , welche zum Teil leer sein können, aber auch wichtige Systeme beinhalten können. Damit realisieren wir die Strategie \textit{12.2} sowie die Strategien \textit{4.1}. -Ein Raum kann wiederum unterschiedliche Systeme beherbergen, wie z.B. Schilde, Hüllen oder Antriebskomponenten, womit wir Strategie \textit{20.1-3} umsetzen können. Zusätzlich zu den oben genannten Systemen, gibt es noch eine Komponente \textit{WeaponSystem}, welche wiederum die \textit{abstract class Weapon} erweitert. Diese wiederum beinhaltet alle frei-schaltbaren Waffensysteme, womit wir die Strategien \textit{10.1-3} abdecken. +Ein Raum kann wiederum unterschiedliche Systeme beherbergen, wie z.B. Schilde, Hüllen oder Antriebskomponenten, womit wir Strategie \textit{20.2} umsetzen können. Zusätzlich zu den oben genannten Systemen, gibt es noch eine Komponente \textit{WeaponSystem}, welche wiederum die \textit{abstract class Weapon} erweitert. Diese wiederum beinhaltet alle frei-schaltbaren Waffensysteme, womit wir die Strategien \textit{10.1-2} abdecken. Jede Waffe hat eine ID, ein Waffenlevel, welches im Laufe des Spiels erhöht werden kann und Werte für Schaden, Cooldown, Energie, Raketen-Kosten, eine Trefferchance, die \textit{drop-chance} einer bestimmten Waffe nach besonderen Ereignissen, Schild-Penetration, die Chance einen Hüllenbruch zu verursachen, den Schaden an Crewmitgliedern und die Anzahl der Projektile pro Salve. -Des weiteren kann jeder \textit{Room}, bis zu 4 Crew Mitglieder gleichzeitig beherbergen. Womit wir die Strategie \textit{15.3} umsetzen. Zudem kann es vorkommen dass im Falle eines Angriffes/Zerstörung eines Raumes, Crewmitglieder mit einer gewissen Prozent-Chance schaden nehmen, oder sterben, womit wir die Strategien \textit{21.1 u. 21.2} erfüllen. +Des Weiteren kann jeder \textit{Room}, bis zu 4 Crewmitglieder gleichzeitig beherbergen. Womit wir die Strategie \textit{15.3} umsetzen. Zudem kann es vorkommen, dass im Falle eines Angriffes/Zerstörung eines Raumes Crewmitglieder mit einer gewissen Prozent-Chance Schaden nehmen, oder sterben, womit wir die Strategien \textit{21.1 u. 21.2} erfüllen. -\textcolor{red}{TEXT NICHT FERTIG} +Es gibt eine \textit{User class}, welche den Namen des Spielers, seine ID, sein Schiff, sowie seinen Login-Status beinhaltet. Dies ist zudem essentiell für die Multiplayer-Funktion, womit wir die Strategie \textit{5.1} umsetzen. + +Bei jeder neuen Runde wird eine \textit{Overworld} generiert, welche die komplette Sternenkarte als Liste von Planeten beinhaltet(Map). Diese werden anhand der verknüpften Koordinaten in der View des Spielers gerendert. Ein solcher Planet besteht aus einem Namen, einer X und Y Position, sowie einem zugeordneten Ereignis aus der \textit{Enum PlanetEvent}. Ein besuchter Planet bekommt zudem den Status \textit{discovered}. Der Spieler kann zwischen diesen Planeten hin- und her reisen, das Schiff befindet sich dabei immer an genau einem Planeten. Damit erfüllen wir die Strategie \textit{9.2} (Reisen). + +Auf bestimmten Planeten, besteht die Chance auf einen \textit{Händler} zu treffen, dieser wird durch die Klasse \textit{Trader} repräsentiert. Dieser bietet dem Spieler eine Auswahl von Waffen, Raketen, Crewmitgliedern, sowie Treibstoff zum Verkauf an. \begin{figure}[H] \begin{center} diff --git a/doc/UML/Datenmodell.drawio b/doc/UML/Datenmodell.drawio index 52ed15a4..4e7ec71d 100644 --- a/doc/UML/Datenmodell.drawio +++ b/doc/UML/Datenmodell.drawio @@ -1 +1 @@ -<mxfile host="app.diagrams.net" modified="2020-05-30T11:08:21.670Z" agent="5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15" etag="-F5hJpHYIOpgcrcktHg8" version="13.1.8" type="device"><diagram id="eSud1R6gVXv-HQVYPhv1" name="Page-1">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</diagram></mxfile> \ No newline at end of file +<mxfile host="app.diagrams.net" modified="2020-05-31T16:06:38.134Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" etag="c2yKEFLgEA21D3yoYNTY" version="13.1.9" type="device"><diagram id="eSud1R6gVXv-HQVYPhv1" name="Page-1">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</diagram></mxfile> \ No newline at end of file diff --git a/doc/UML/Datenmodell.pdf b/doc/UML/Datenmodell.pdf index 0ab1811ea716797e17058d5ee661897f0ad7dfc2..94d0e49b363e0198e1d89f92434fa8964fd65b47 100644 GIT binary patch delta 5266 zcmai1dHmB<wr6og0XGyyT!0^_EGB8Q6a>xEG)?!UY1%4F+AQ7DG;PvNpH)G0WR)L^ zf{cU0`;0JxgATYdC@Lc2hO#J&yNH60Ac~{Bm-^?MKVCoi+}v}|xhLnI`#novd9DAe zul0ZGv8^571<Ojmzq0hJogd1#;C+|&0fRe^{j<LI#gU#P@85FZt~=LlN^iTz{^{Jg z*N#{@Y3bbdkd@`Kf61(87KEnH_CNf=x~T)^tEWGVj`-o&KQB)tvJanL|7z&m@;_R{ z^mOFj{nR&;zK^QIX3IaH(HXXC>krq{={VYY>Y3@|{=V&n^4m{WI%{30df%M$wExiB z_g)C}e0kFa?MGcd<}ONp`Qk<QC6%!u;qWJWS6+VK%!mFm?~I<qBTqYU?{C-a9Q8<T z^f&u^w+-&wT=UDJ$NP=gGxTS7pE;G6&YJL#ug}|X;jAO4Nt5tBb-cOwIOpHib7kz7 zH)f{p7}{sCt3Gi4CHL%E@X1FHeLr+h<=oDmVXygSXmfWxd5${oyV8L(_f{@hFZJJB zCN?Zvcx1Hv!W4PStkOdZ2VS^-#hH80>mBthvUzR5-m&7_y%$Vd*1vkrp&x$lH~E$G zA2AkRG5NeT%h`!HymQCXm6xtr@}_H{HWi$3(X9g}?)dBDebzzK2D~P2xyidRx^?sL z-U;6hxbWE(lfUWgJb=7AE8-j1vJS$VwjBL!_q_Lq{j!T5yL{2D{Wg)tuWRDdKArT% zecvw}yZYwUXCAy-yzQJZg#CuJa{i~oglS8r@4We!6DN?{KcD#MPq)7O{i!1_&wIc4 z+Z27~!d2hyAF=q&v3<6WUJ)I#Vf=^vXY3t)(dvH54Fm3;IAF##eg1s$?ccsWqca)a z`1PKv?`*#0{pHqv=H9p7yllvlQ5E#>E5ACq`1NPNiH$SQdi_;n>dN7(IP5YOKQ=UW z4>xrBm{r4d_2fg#b_WLiY+SAWWzx3bI~QkWFBNZEvTJhooco`-A~tjBpe5Vyo`40+ z+m#;%ZM{`^QCvFc@ZgtE|8m9Q0~5XC&8@dDb@z6T&dj(6E?)Hd?&0?x-5q>8cH{Wd z53V|uU(}rb)0j7({UW|yhNdpteDZ<6ijS8@{2o2{!411U8vLitSA6s0$hlw6Tz|`T znFX^JE!_5dpIb&h_Wk|0eLVP_(PNJHU;ZkwW%tg(yLSKWt@9pze{gBSC}l|hAw#ml z-`2I~ycakD{6xI#Tu>J1gx0kt-u327vk$=2KfP+}ozfR80tdd^sE^hzAN=3FE1tN1 zNNVKe?2TWHS#|5OStl-i^0`L`pY{37sx|Ix`=Ragp4d0!jPd@>8}D3u=BJDLe!b%{ z9esGz=g`-4ucGrWt(I4gTm9%?Za??%$+v_BzYg3J`~4lzcLsFvSFQ8UoVh4?-JJf9 z<vJhS0X;wZ*w8ss>h%xA^OwJBp7D1J?!Wiqb?YZQ_{L*B*OC2C659qI{GvjP*>lH{ zUp9rGk}mK6@$MgQxcb8d^G`i^?!0B2ep~&WWlyLx_gYu(7!~-}7n6@vcdoc7eO~jE z{m<QYZSc{N@7UVyH-x7h|7ygneGe|X?6V)9d~U>k?^#o}pS`a`Ts{B5L(8_We|GQ0 z$akMU|M5|CZR_h7go78qy6(iCHy+x%W5K_#U-jC(?V7e52_oOGd}#-!Ph0bE`V7Jt zX*E9jX<7XFXV)e!eVcuI#?kr%^G?y1y<EET;LpbD+M2R!<jTu0-8bdt&id0%?I@nL zd|J=!M;_j?`N^$MZeOx-({sb-<p0#UEa1wGThhDyiES^g@AHonpFyv;d&_e^Ebhkg zbNCqqeD1&3n(aduoOU;Pze~J!+_BXAy{>l)=Z+tU#}_lpz5yrQHfQbV-_QPSvB}+b z^<DF|{mTyD*Z1R_QXB3$7Jef0H+=D_Z;tFsJeN6b%WqpkGeXB#^_@C)(&z_5sb?C) zz0|PIpM$?oAF&W!aP-nmGsOM(p15=R(1}BrT1OWC$XvTMm|^V3C2xcVJu&v=C2K}c zKCEgRz*ARj>Agt<2W`B@{``aCeD8&49X)*6k7G}68hh1G$EGIk2v4dE!Y1#OhR+>z zc;P3$<Nvkk$7}!WdVSW$<DI7t^%*C)ho;A^c)t9n1s~z!;7&#O`Hn%)UhwUt()-`N z*th=p@x_M*TH2W9_tULW1Cmqwthus1a^%^&mlrlaaEZq~d;T>QjE$d7@PXlPL)SPt zr6*9D|M3$aytnVt-t8m)=b5u79ouhwIf476zDqd%*7ylyepSYqU#;4`@3ZS}+;@HY zk$XbNF8+Bozi&}$`u+cU?icHVb-f+;(Loy?-u1%Kzn;7jc<`<Bd!O1dqA&3D&K*F% z^FXA>g#+CI1||Ry)O+E(uk?6&AgBid6id>2T$Dr9$ngf%^hP+(_!RDi;vSX+dw+cw zyeQ9$Nv2A8b&)CxQYmdSY_<2s_l6Hi6?!1T+tQIzAZ(U$vaaevs@HgLd`Ci~JrE5v zk{M5)$iz^o+)7!_O1xPB6JUZ%H0#b*POmC%t{SR|)o8066D<J^1WYxg7RY+R2WHW9 z!$-wxp_o4|16C~=h^T%nf@48BOSu5iZbDoDZc4J<;46+gqtZ;oBPyPgIte`rH)%T{ zfu#yvRbviU2ICdDmJc#zsEGrGyiJDFnwEgu3E3=G+#r_ovWO+?QNwHbg3V%5aSSGs zIP8qNRxig$XHw4^VSgrRkZ2zDWa7?VHDWb*Bo=fz+(11OMNogs-wB5?LX9NgsEtKb z#Hu;Yrb}wX8B?`Pk<Jnx$gA2Rx0xxZOs$AJ45SfOt69gRw7==-avrwm5R_L(;tpYQ zHkt{66(|{K0Zi3dX~EfCoul%uwx74?c+L@~-9<7LVXB=}!Cw~28lHuUlqBV<XrZd+ z{IygDXJds@Bp1unf><(^a%+Uo7i)=lNWr93p%v4}FqOr5I_qd7KrJ3OST8DQdDU=^ zPs<d6G6_ab`m;tJv}wI==w7421q%tlfZS4~q!ldE$9Ej_csitJO{vs&=6FGh@K6C| zsz$vS<pMO7%-R8tb69%26$@&PZr)o8@MX@OHwXg<y6~amG7D>}Yy?$r4T!3|-t|sc z2}{jXy9$<d1ytC8HyT9)Hh>ubfq64wEzF0_4nvfiq;u<ZHsB1wW`^MlO)=v~K~t&5 zYM75g$e;+ql-mymBu$41QqEV9h!x8hWr{`$HtZLh@nW4MEl^DOq-HW5G;PZ)iIu9{ zA|czzg7LJcDFlrwkr$gpijG3Xf~g@`E?Vf&$ymYdHH$GRo@~mMT0Q|%Mm*rx!+bt3 zfyHFJfR{@+TW~qRrE>{R@Ve?cZ6sY$Uaz!csb+=EXF@_YEf6I!WM<;Hj;EPszG22P zv>>o-9%-fkqY2sZCMS|1zZ#7L5fp_Bf`cQ+|FrW&0a<9(D|I>A_Am)0k?4Yy;$=be zDo*^-C>ZAJo-kK-mK`!lF)@i^TB^zd?JVXiV7d#@4CexA3`@31+4LGRj<lq>Wi%Sz zRz!{lWx{P6NiFA5{Ru6PHY@pv)B|;BNv<(0meU>J6NOw9@$3Ft+bw%(N{1mR)wX~? z7=$~hHNsFe3s%}eCdtu7U({}RltRF7$R?|JYQZ=d(bGIqBI+)oAtj=Wlv2Va24L%6 zuH{O?1(zl|y4-%i%O+V929%o8ahsK*=>;8AXd>Xr1?eo~ID~M^SU}CjMJJ}|qG+>x z$S$Y~T)@)xY|85hFfD}ldR2_m0s!XFN}~}Gazwrs`Xl<QKHFKeT16)vG!<{VSa0SN zi8`yGwogb%B?#A0UV(F+n31tClL^CGCY%=GViG9<2EdWwU|qm#NxG)O89SJ(nz(^^ z0G|?ut%j_5924kNLarqYDpHXYAJ8ze0EfvD5XTbDya$V^NIK@F6^wO(4LshI{X$#S za)h0!cH=W><;xC6${iPJlZuw9r;CiCxyoswg@j}fuc?Zl)Kh}uq2(?B!eIwUL4Peq zW&!~yq&KN#gKdPe2}v)MVmymlv5c3`BBt7)g*;NNXIm;jt0g;bFdPW^(i9nT)WqZ{ z>31?uR8*2VK-Dwd_$Nw1tQ2nr=wQG$EI;bPJrJZq8t9kFF529T?)D|jc-Sx%J1Y3W zcr=qN8#Hc);IcP{M7RdRVvIkPh6yeha1)WDorpL5Rv_rFRE@Bgr&2CYm`37;kqfH< zJIHyYoDeY$F5bzBX*-uCiH2ojBvI4j8LlWd;=UA+RY{|yP$`gxswKw^%I|T4o+&27 zYO`xrNezYlA|popMXu=)fdVWB%toWlxczXZ#dLFu4$#poOr`@m6ZIzDvJmj*!AiN# zN0Ut!kG5Mq9f$yF&`h-WR5DexfqJ?UDEK2}L!=sELKEa%q9_Wkf{mG#a>)REq|wH+ zZUBzKvO5Zhl8ly+l8xa-kC=3_X2u^igIX@8%a}%ml6n;PnJ(T!aEtTt2&PwQh*4uo zz9xFqVA`j5T<LBBah{ftPrEGB0bmu-u!tY4P>ddHXrObBc-V&ooi{^<6E%%O^L(`} z`OE}Z2<d3h;}v2Y4D(VG=88ZJRpD-!Sz22x6etl4Tiv1>G4*!b@)HOcs7EEeZIV?G zB#@3%QQ@}9`b#`t%(dJKfpu$IiW5X%9@f%17Sz*uErezGu)+mH237N79<0hZLJ-!B z<>8heLqIsgG3{tF9l@|@P0-Y`Q#~Ae%iS>X1ytQfDJ?z?rrk)f+ld5XND=aZ0VUpn z%xoIK5MLsaFqATECqYq?l8#JU&xfOlcr5F5JTy+*R#u^M9$(l`Wr<|9ggS8dcT*FI z*6@_UQ$;lHa`IM#Wg=YDh1w_<rXdT@C=BCIvMH^VVlf%%1_4{q-CQ{Ykp;ZnNwe*c zs0pCnE%}bRB3f>m6?dFQYhndWhhtDXFXfbaI_Ql6da9J?>fIi|ZF>VzhNOhL1dF+7 ztr{<AHVYfE8mih_*E=oE=|LJPtnKDQM3cZ(XDv_q39jsL>0;R9%i?vZ!#22rE1GRO zpC`1GK*g%<m|bQ(r7WYQNEaMJB1*c|k_`ft0R|0Alp3{7ug&vJS#zZv56~_EEk{Yj zokSIoWlXIR^zuztg-!*r3L5qm%UyU?Jz_gyR-qEwC`guv&}uon)=G5Jmi&iLoWf32 zvWd1@)01qt$~t5)CKc^`u_R#>)IBrAmb!<4W8q?`h*o(%X|iI42{Z}4V&~he9mjm8 zB-wm1O;uSFN{4HVEKyV@X-TjGqp1`rrE8_Mqa%+qwywoZd4iio@<znyelA=9WG?K% zrBuyrGin`&Yo;qtu?dNdmw<u=nn3T^eRuU0d)Mw8>ZPlUo3FUYgrYPu)e2<k0k?(o zXiPT2Qr!-u#R%;pMZW--U=r{}gaT43=~9J6BA~%}6f#7if!@LUM|SEe**#t&2XoyD z+D*?|ne-(J1`#y@SWjjouF#}Rpvpyj%}m%+fps5{2nH)HOYpU@dfnX;TWMKF-9g-E zHL7`AZ3nTg*FmG`0duA=7j8G821G(WSb`;sO$J-BZfPsw6wo2#*_2QP+z#DvJjXR7 z8I;QjXhF{LS)Ub*Hlv|v1gRPBk|-${?(|#)UqaNh(~%HDM9~_~+v)ASm13ooX~(0S zAP6oj!fR>J?X|dan~JqPdN_<1#d^!{O;Jjy212mk*HC=*bO))2itdKnU$Kc2lS!9+ zLfi>n0w-k`TP-u`7UEEeScPQSf|9baOdfKjU0EuUD-?YpZ>?+wO0^oUT6`V|*m>EJ z23oS_{AVGml;7ua`G8hRiH1ZbYZ^r+DhaKaCsk}`H7VqGS`fl$!TEqG)Qb-4=pdi5 za&1N7^FEJcH`AW5t8BnvS>Qb04Cf*c50k}%c9W}d&1f){wu44ii=&9x7E^LrBI%Y} ztMQ`Ub-#$m(p1#V+DP1@iZz}~LIz8!`KZUmx}{)(%p-gfHc&^Ds3B#!T1q%muWX_X zPX+TuT6RP$gseuoiwR4!U9gvQ3Wu&XqEAZ)<$fIExeDn1t||{4@W%v(5RdEsuDJm4 zKjd712lx*;(Cz8H<TEBqz!ZXdK^pLoI0(=L03$Tv21tZL5wEjx%2hY~{~}Wd4wy1! b;DDMXRjp=KQ3noyQ3&=79MIF_jnMxK9Yd*Y delta 5273 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 -- GitLab