From 651b6c29999256b547e3aeeda7045808a5907ff7 Mon Sep 17 00:00:00 2001 From: Tony Grosinger Date: Fri, 16 Sep 2011 10:32:59 -0700 Subject: [PATCH] -Overhauled Upgrade -Created InsufficientFundsException -Renamed other exceptions Signed-off-by: Tony Grosinger --- bin/net/grosinger/nomads/Nomads.class | Bin 5057 -> 5124 bytes bin/net/grosinger/nomads/TownHall.class | Bin 2185 -> 2194 bytes .../nomads/Upgrade$UpgradeType.class | Bin 1556 -> 1556 bytes bin/net/grosinger/nomads/Upgrade.class | Bin 2978 -> 3998 bytes bin/net/grosinger/nomads/UpgradeShop.class | Bin 601 -> 1218 bytes .../InsufficientFundsException.class | Bin 0 -> 482 bytes .../exceptions/ObjectReferenceOutdated.class | Bin 462 -> 0 bytes .../ObjectReferenceOutdatedException.class | Bin 0 -> 489 bytes src/net/grosinger/nomads/Nomads.java | 3 + src/net/grosinger/nomads/PoliceStation.java | 2 +- src/net/grosinger/nomads/RepairShop.java | 2 +- src/net/grosinger/nomads/TownHall.java | 14 +- src/net/grosinger/nomads/Upgrade.java | 172 +++++++++++------- src/net/grosinger/nomads/UpgradeShop.java | 22 ++- .../InsufficientFundsException.java | 8 + ... => ObjectReferenceOutdatedException.java} | 4 +- 16 files changed, 146 insertions(+), 81 deletions(-) create mode 100644 bin/net/grosinger/nomads/exceptions/InsufficientFundsException.class delete mode 100644 bin/net/grosinger/nomads/exceptions/ObjectReferenceOutdated.class create mode 100644 bin/net/grosinger/nomads/exceptions/ObjectReferenceOutdatedException.class create mode 100644 src/net/grosinger/nomads/exceptions/InsufficientFundsException.java rename src/net/grosinger/nomads/exceptions/{ObjectReferenceOutdated.java => ObjectReferenceOutdatedException.java} (53%) diff --git a/bin/net/grosinger/nomads/Nomads.class b/bin/net/grosinger/nomads/Nomads.class index c51a5ab4c03d546443123dd0aadf20c759bc6087..ac5b0c241f3a29170a1164e1ff01ac8ffdfecffa 100644 GIT binary patch delta 2468 zcmZ`(3wRXO89jGrc4v2XOhP0=Vj4F{G!IC48A1YTBoP8h1QHQ^uW=*;o87p(yo9no zu!zP7Oj8vfprY&Bkd;jk#o89J6t%75qrUo*w%XQ8pZ4q5^xWAHMZfNT-<>=EocrH% z&i~*0(&-yZa}NIZxqSep;NKct0w>!GJ$buI*1L+cTk4lIH!f~$zHCu_L;a#Qfvk~8 zTYG(bo4wstFk_m)iOYklf>kTyR;a2z8V#;(wqkJ|Q&DYTIwlKvW?Eq@ex?rsGYn|( z%2}O#)HTUpEuh9bt(d^K?8(MS_H3oBr~&6{XcWkC(uRWJWmRo!V{x;~z#PoAZ&m_g zp8bSUQrwJI4K2s^w<1*wqE;D$%X z1z4(KiNL86P}xM5Rxo5;W6lY7nFcPDhUf!<1LX@X3URG*lNJWcLlW0V64?#6BkfQ%P!RLJ^NOz@YK5m{0=k_k3?1kbo64I ztoi~uyVt;dxZggcl^5&~FuJTz$cmXAk?@r?u@?`@&kxx--YMQ*JZ#_*B<*?L@!o}a z%)sM#!d~SK)I5V-8v2fFhW1Vtm=5+MCE$*QOtYI^R64J0v5wu+__P$Yz*j^I2kpRueu-ae_!TQn+Y7e(b>%nst$l)jlJ5w9ui zy%$rL4&aOwYSa{JcQNF`OpaMlIO_cSIoB}D`2sHI;T}#>#iwB0T|R)snP0B;IMK`+ zBZI(MIGacx>TwPulEMevNs?&j$L!puH0JNcLQ-iY98ZMrr zA*fO;4|hha2*JZYaHnK_4OuHGtXJxiSiKRVAM4f2`96pZXZNEfjq7XGBy#iBJ@}5m z_tDcjF^${g>lT4+L!S_L4)g3q@6y~m2XJ@sDP}r>dvdp@@jx0onZ3Zh16j0;nbUYw zsT++a2k~?gdaXO(oyN2MsNFWSS#lY0+}zVgo-45q8+ev7zAdJUK#0DDVIaaLxEiDA z#Atd^NNj+*tEs$}&jzeZU@jM%xDLy4Js~#`vWbzKcqwhhja+;Sw(w5b>KHqX7jYKj z&vOJ*nRo&FNTHg>zR08sv(2LNeVkoOY#c9fln$4`^B;^7L$Vq|Wn*q)uMVL$0Y#{+ z)?5v{zo6AVd3|QghsCUdYs<~I8R+PciCJtVONA+GGP+?RLG@V>9Izvc24r>H+xoto4rX}rps_Bp|y-3_}^#;4{t{4 z@`=>;E`BkrZRfDIx(x4@L=t5ajuDq9_C49OAML@%0_Dz_#wQdzv5zQ6%A4X#DFx2q z*w5yAnT0*TtLznCR{Jpn2S-=~b@&TDC+pE{K*?1QI|fJbS87Vg<`@On5OpXTj$}BO zkn`X0_hHW4hdEadb53IX|E2tOw(ov}?P2nGiwxeThwq@Z0*5h;_Q;D;nhZAcKk!e7 Z?wAp}xx;jiXZvY}ZGb%g#RV>W@jv6gBlG|O delta 2445 zcmZ`(dw3LA9X)qvc4v2Xgs@G7ghwYllq8Ul5|={KmO>B`NCM^2Lbb4lAuMcm*=I&b|9)9)EAisee5B7=VlLHv>L_iE@=Taj>S>R~~HYOvICM_fi3EX4N_YeQ|2D zW8flr#y7#PM}vj;p-v#s=@r=M^d6WO$a*I|qWf7VU zEEXu)7VC}GC1T00y4AZguG4K{3EnRcYqnS>pVekmwqk{W!vNm8}X5oVhH@2s^XRLGknsltwF|kp>HvJ2$mX0O6I-MRj zo=U3iK4hU2n`N1QzStr={PRLvErbylm?{^BCs(f_`Nkl&3zS{qWKxOVc(Tim**oLO zq?4|#tu@J=>XJyw7yZwz+D+WjShr&*QmGz0Yc)}ik6HLQJ|W);yvOdtCkPd;l>knEv}P}xv8{; zPhr1oGHm?@fhqFka79#6HqnpISoo~+B-rJ+ZK+--6Gk6CXW=G%UclHI%d|VYTyMV( z2EHH%j7ihJC=m9bwwp?Aw@pZVNu{P;^$uG2GH#V`8`YD)B4BlUe4Wlzax<$TafkYS zr@(Aksh7&u;KZQBS1laE-LgA4J=lSqg?n+IJP@=4hw-q1hvehIvWfu=3ivY#$LV4C zX0}$XGm%#{dqln!oMsoO`n;iA7=z4Khp`bDwr~`2Ss&^Y$K}nT8u6q&9x9#NkEbns z6L(W0b+@w?%FJ(B_%=>)gA5boX>L)&-?i`zo|QqY(TS@^zZO+2%tyT{$FJbd25 z3pgd4&1-}G__2kb;HUDG84djmzcBD~6%slwQ&!M#;br_%&I!*6y@FQ_{947F|7tD# zMv)1S%-WV_6R+V71F!%4adH{jE(>qsclp6^K!}R`u(e-gg9xG)b<{eC2Yw!WY=N=I zP`~~N=H?OA^SF4BLq05EI|dqClTVm^1C8Dva5|6u=pyPZIPR}Lf~NCR1Kwb9id6*Q zk}NJIGK9;pkVA^X8SbP=G!NnO$kGB@j-i88R^@TUFxKQyvZAJd^*IF9`u$dw`}!vr2=^|pCZHBU#Brv%)U`WNxnQbLxY94&;jq7ut711nL( zX>)NkUAczPjaZCLp5SWeiXeLMVZO`xl}3j2E4`k}-aIb91HJ6+Bq9v$Dgzsq8rY~) zD^Gq=t4JUlK!Au_6zg4Nt>v*tYs_KiK8PXg(KqpX7#~?UglGZREzom_lU@tF{{HSs3Xd@_q*A*-z7=k3mA%#-9 zF^N9da1rI41$;MS7hT;8hx4}~OOLMOpMCu5WAA#l$!6TZ3q;~Z&)5du&ttG3kFo`q za&Qb^Cxs}D{RZvSxZEXpjAI%X@N>Jz+3u9~xYBGN!#TojHKDUQ%M9fIPHRKz)-1YB z(mH!URrN__!{w1DC^CmhXFWSX&#DV}>YQIHyT!OfI2Aa+_8`XMR?Nh09^qn+tEej5 zOMoi24&T@b+?V&p=)TV|g=%`6SHzRLSA?imz;{@~0dMfR1MrIhv0Q5^7P>u$@w3mC zxouVfrzakQf7Wu2d9{AEdVmWSxz#dIK=wYK$@^KH2QUSP>D>UPVi428nzDEc@d$%H z#9$XZ;x;EwWx!QPK~xofK+grSCSK&2&(l&0z04e8mURRDyzE#pTtIC<#E(X`9U9fv zm@N`-%b{x4S>o!1zNA8W<|uw8Q0=t^{FY*84-n-^c|n|)QsEtj6AaUnJXTNfVtSf) z!U@dB$#bm1-dlK^tVd*|lQsg{?od1YFjdH$ylymeP z<>~*I@_({@>A%>XCXeS)zLs~mGO-4y(LjUL#i&dM!~19a#iKj^9NozOWcyl?txcZq JaDoqi{U@==BNzYx diff --git a/bin/net/grosinger/nomads/TownHall.class b/bin/net/grosinger/nomads/TownHall.class index a4358124f4f046ab25f4b4b5bb5972026c5b8e86..64d85857f544f94ddbc23c39e5c65f984442bf7d 100644 GIT binary patch delta 32 ocmeAaoFus6G$W(KWJX5O$qyNoI9)4}QwvHm^Yb<{Gqte+0IGlrH~;_u delta 22 ecmbOv*eST-G$W(=WJX5O$qyNoHuEsGu>k;4CkB83 diff --git a/bin/net/grosinger/nomads/Upgrade$UpgradeType.class b/bin/net/grosinger/nomads/Upgrade$UpgradeType.class index 231cb0b44939a061303798eece010e54607f64c0..499a6a1272a876f8805861809bc0aff3cc995c5f 100644 GIT binary patch delta 23 ecmbQjGlge^7Aq?ULj?o-WPMf>M)t`mtQ!D8Sp{1F delta 23 ecmbQjGlge^7Aq?|Lj?odWPMf>Mz+Z*tQ!D8It5q& diff --git a/bin/net/grosinger/nomads/Upgrade.class b/bin/net/grosinger/nomads/Upgrade.class index dd0f34164e58e3ccade72b074ca7441b473b4146..06f202f2eed40363d0db082dc534eb3c0016729b 100644 GIT binary patch literal 3998 zcmbtWU2GKB75?t*|9ZgAVmpSAKwwLD{kK3{io3)Zymsxf#^7~qY?8pRJ6;bS@4B)n={YmAKQ=3% z>PR#9o}cgBbIv{Y-1+E}Uw;T-C*Jo#64;ni%~;mR7qnbfHDbB^tdc3j9+}G;N=Eg; zEzodMnO9=ElFP=1Pn=ZKrobBW^qe}HceDgrlee=HcJxLG6c<>V*E9Q#{EV7Q82Owk z5U!23q)Dw{4w~vL;dX^n~1l+y(j2eUs^)l+vAmEBb#{v)t$?(7{P@mLt>cQgd3Dp=?PUy5? zD49ww<+9T21LRUC0;3xbcLraq>a(FOE z4&N{10c;{s!Bot_+*Dp*-~W<~q*Vw-Q`2JuN@3dM;NpHfC=i@2>ZUfQYpM~%R(!^X zu)w++>N2+BA@Ycv6WA89EmoCQJbEk3hvVzqmQ!?#Lh6wQme2T8y>20c+G66wao;iDWnpYMJA1u3y z;3TnaIBUe0nR>pIzz?~{Jr>Yr7U6k=WGuIHa zS242r)SSY3@R!1Gs2I2;BgIB2YTLnO^w}Xo7?ptVp zOng_yYuw_!iWMKTz9-}R%nGK<-ZA@!GG1r4KjVbT%pc462{YH}w{8y0e=6fmmN(_C zdv(=@u*OvxKVywLqp}Iie@Dj8neQoZ;+XRb8NakRrk#lqEXa75IrZ}^i^_-V0vjs* z?O;AtOi%Y~s-EdHjJ)APkitvli$+@Q*Z4k@or|cGK|~Jba;nj*D+St8@~!Hc!h^I0 zF4`g&B)%PKCh>Uy8iKqpM0-i24l;e$5Y}Il+(KoR%*%sQoge|{CWC^WHQnAH_ z3sjYUs=YdT6F7*&7)Bb0Fh{d<)NapX4Bx;wHT@&Fh6%inNqm6E@CQ7Ok8uot$8r3N z?z4X*BRo*Wy_gbPkQFgZi=CJed!dWNm=%vACp6@R4nv$qLA(f4yn>>51M}i7oEF#d zr1%}qh(F`3_zTX7zv8_32c8n2;%Q07*QE7$M%suAQWO`ZIG&gK@q(1Xi_#b_Nk?$m zI-Q&ClT+%M(xlTf{nChaPNj0&usMBn>iA5CQ1>4s=uF1r@h*DeU82EHC+v{jPDB^k zNFjo)Yl}5oO6+ zMEFXQw;5EXt}zuT$$mwY+a@Ni-y-%qx3L5#dh-CS5 cfM=D@Dgh<<2HBCYgqt+-AMgmh%RTG=3juw&U;qFB literal 2978 zcmb7GU2GIp6#j1auiZ{*DGLH3A{JUVZ#XF&+jP43)tzI%S|z2`f( z{qe7FF9TSBPhzN2m}VJnTh6hIrj;|CHp?E;v&FVeg`A^jjTpiT4ZHOby)Ca>xwiEK zyN!&iQ0ML|7`?V{rO=wbTa+f>u9r?r6vo;4>H~QuY)so3J>RE0rszHx zb_dO(!t}dl=P|=_w+huc!`rh zh}llowDf#5NgBvc4l_$b4ApVWK}!tH3N!B*^p=unXq9k{+-RR!GMl?C! ziyTdcJwXCLtl<%Hm_@Q^N-29+QEiC;c@)H`Ci1j#H zZ#43}bu(|e`=ZInr}FzuY?f(AicJk|mb|DOT(UJSw@=RxGi0J1X*+hr@C*-IaayOlgBo^1Cszvga|)5>uCA7@ zIJP6BAq#RSoH5M2P=~led}uiDnuWY+I0}k@mKk;&!*bKch(WVD+c9&(5nqoKJSNul z$i=PG3qGggW^tXq*Eb?fw|F(UsoxbIYHqnJO^ZrsFvcd!-7i{WT4* z%lbsS^fLa7q+;==hJ#{J>r{v-_*)v@7CcfEG70jIhIdPdE9?;DsD}3hsUNwuzhXG1 zFtt+uZo6kVGq}n$^4XP+V>>a#dAuHb*vS~HOnH$sza;a;iE7HS45u@%7fEyO?WTh9 zjUbCiwh*f1eWO$*PXo{pm%31o(4rO^zjf4BalMLjy!9K5Yn}Tw#-A_wOyGB1DN+Jq zOr-B52#F_o)&IDHZ&}tugxB{(}1l8hClfVDeP2H3`n`v3e1o~ z`sGeyJa?625jO?W?m#+#dVlp;Ae{`Pu|WDM@c1pj{v>(4$SIO_kU2uUhq6=*q(dZ| zw|YE~&IZzzK>8){xE^4V!}INCbdxzEyyvpCH;@ho(uqJiA4pdN=~^J&2qei-ip(2~ zv3fav_psWHsO?B35{>*N8vjB#6bkVc^BD44hE9?xbS zLg5^@*ua~dhEd$d?r7ya7mtzqqvZYy@_Us0UQZ5>qKB;A!FeZddx*2eUU`A@e!Rg> z8RY>h*AXsVhdg&ulMYN+9mD&7(?D^S&nVKtXRSz;&%YK}iw_v13Llo9E%^s;I>*P! GDgOW$KY%3w diff --git a/bin/net/grosinger/nomads/UpgradeShop.class b/bin/net/grosinger/nomads/UpgradeShop.class index 0826ec2086c2e79e68fb0bd226ce0565766e39b7..e6280a3a5b6b17703baf63c902596fcfa0fd1b61 100644 GIT binary patch delta 513 zcmX|;%WD%+6vlsNk}_syQUf|c(@ARTE05M%-!|yN7X%avwgs2t^ri&cnJ}4vI~V>1 zB}-R=8o|v{|!R6#`X%)#J((c0yrWX+JU!6*RfP#(%h4D`d&m z%(+rb9j|o+H&gEUTz53v$-`ur3B~7G7`=KH4z|OW2WI?H+G34=$;N_*OL6R4-8W~j zIIFwOtN9AHzTRpkuXnBWiC{u)!i9V739b9p-~;YgDla~>{{2`HIUGI9DiM}+VnB(S y?r)hYb&a7ln}kPEBb}*#cwL!XPH}^iSaoe#Bb5Pf?fhbM|ctX(^_;1UxXAvQ)5lZy?6ez}{2HL#0&dqjVhm5GHvz#nCt zi(i$E&71dTUUokA?fvByz!|zB0)Y!dKAt;UXfr1l8@p0j5z|9TYp<;-;u}+xd9G7U z#*a#q71!Uj5Osm>o!Y2)smwh7DF`%%+Gu|%Q0tvc1?pEeqb9ZmlF5RkC$*A~wv@_| zRC2AHmo}G~r9v9(o~0osnTk;euNr!TG&EM;INncPBQk6 z*BMl;+le-GTdrp0CTg}MflgvmwVW!aEB%$MSMLf8lmDM%AP|jh=~5c$s?X8im+M!f z;uw4%{t9puyhVdCWOa^!84#X!n$L)ymY5Pf@zxp+pS33e817cD#xBuGRM(dsZ@Li)|!7&lyY!`@!>Z&?Wz{s4cJ zIOhjeHa0W!hPU(HzPI<6R{+Q8h6n`uhI~A8w$NrqE;e?dvLdF(l$KswQ^dpRoKk;F zcjU;VG%S6lJY^y30^PYdHs9)NQnphXO7~ktc+RuaX zK@~D}RNa!=NF|q!R@#<@^rd5LcwITl?l z9GR2`rO%Y7?DAU?qAt*#silf@Wv21ZgFxe08|_a7YQ4R&K>fmI)WoX5+2~Fe(tdQ7 z_o|SoqpGRYMk={*wA8jNq%R$F!{tI6D|1_|D3>bNS%ezaT3A6#V7r(6jvso*m-MT7 z?L-^8F6R?+BQ?oMpp)2CPoint Will return null if the NeighborBuilding was * created in a previous turn. * - * @throws ObjectReferenceOutdated + * @throws ObjectReferenceOutdatedException */ - public Point requestNewObjective() throws ObjectReferenceOutdated { + public Point requestNewObjective() throws ObjectReferenceOutdatedException { if (verifyObjectValidity()) { return Nomads.awesomeWorld.generateObjective(drone); } else { - throw new ObjectReferenceOutdated(); + throw new ObjectReferenceOutdatedException(); } } } diff --git a/src/net/grosinger/nomads/Upgrade.java b/src/net/grosinger/nomads/Upgrade.java index ded9b2c..2e5f487 100644 --- a/src/net/grosinger/nomads/Upgrade.java +++ b/src/net/grosinger/nomads/Upgrade.java @@ -1,5 +1,6 @@ package net.grosinger.nomads; +import java.util.Hashtable; public class Upgrade { @@ -21,6 +22,15 @@ public class Upgrade { typeToUpgrade = type; } + /** + * Retrieve the type of the upgrade that should be performed. + * + * @return UpgradeType + */ + public UpgradeType getUpgradeType() { + return typeToUpgrade; + } + /** * Provides the prices for a given update type Algorithm: (((Current Level - * Original Level) + 5) * Multiplier)^2 @@ -28,73 +38,13 @@ public class Upgrade { * @return int */ public int getPrice() { - double multiplier; - double currentLevel; - double originalLevel; + Hashtable allInfo = statInfo(typeToUpgrade); - switch (typeToUpgrade) { - case visibleDistance: { - multiplier = 2; - currentLevel = oldBrokenDrone.getVisibleDistance(); - originalLevel = Nomads.BASE_VISIBLEDISTANCE; - break; - } - case lumaLocatorDistance: { - multiplier = 2.5; - currentLevel = oldBrokenDrone.getLumaLocatorDistance(); - originalLevel = Nomads.BASE_LUMALOCATORDISTANCE; - break; - } - case objectLocatorDistance: { - multiplier = 2.5; - currentLevel = oldBrokenDrone.getObjectLocatorDistance(); - originalLevel = Nomads.BASE_OBJECTLOCATORDISTANCE; - break; - } - case reliability: { - multiplier = 2.4; - currentLevel = oldBrokenDrone.getReliability(); - originalLevel = Nomads.BASE_RELIABILITY; - break; - } - case attack: { - multiplier = 2.7; - currentLevel = oldBrokenDrone.getAttack(); - originalLevel = Nomads.BASE_ATTACK; - break; - } - case defenses: { - multiplier = 2.8; - currentLevel = oldBrokenDrone.getDefenses(); - originalLevel = Nomads.BASE_DEFENSES; - break; - } - case speed: { - multiplier = 3.5; - currentLevel = oldBrokenDrone.getSpeed(); - originalLevel = Nomads.BASE_SPEED; - break; - } - case cargoSpace: { - multiplier = 3.5; - currentLevel = oldBrokenDrone.getCargoSpace(); - originalLevel = Nomads.BASE_CARGOSPACE; - break; - } - case theft: { - multiplier = 4; - currentLevel = oldBrokenDrone.getTheft(); - originalLevel = Nomads.BASE_THEFT; - break; - } - default: { - // Must specify an Upgrade Type - return (Integer) null; - } - } + double multiplier = allInfo.get("multiplier"); + double currentLevel = allInfo.get("currentLevel"); + double originalLevel = allInfo.get("originalLevel"); - double price = Math.pow( - (currentLevel - originalLevel + 5) * multiplier, 2.0); + double price = Math.pow((currentLevel - originalLevel + 5) * multiplier, 2.0); return (int) Math.ceil(price); } @@ -105,11 +55,95 @@ public class Upgrade { * @return boolean */ public boolean isMaxLevel() { - // TODO - Implement max levels - return false; + Hashtable allInfo = statInfo(typeToUpgrade); + + double maxLevel = allInfo.get("maxLevel"); + double currentLevel = allInfo.get("currentLevel"); + + return maxLevel == currentLevel; } - public UpgradeType getUpgradeType() { - return typeToUpgrade; + /** + * Retrieve general information about a particular stat + * + * @param type + * The stat to generate information about + * @return HashTable(string, double) + */ + private Hashtable statInfo(UpgradeType type) { + Hashtable allInfo = new Hashtable(); + + switch (typeToUpgrade) { + case visibleDistance: { + allInfo.put("multiplier", (double) 2); + allInfo.put("currentLevel", (double) oldBrokenDrone.getVisibleDistance()); + allInfo.put("originalLevel", (double) Nomads.BASE_VISIBLEDISTANCE); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_RADARS); + break; + } + case lumaLocatorDistance: { + + allInfo.put("multiplier", (double) 2.5); + allInfo.put("currentLevel", (double) oldBrokenDrone.getLumaLocatorDistance()); + allInfo.put("originalLevel", (double) Nomads.BASE_LUMALOCATORDISTANCE); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_RADARS); + break; + } + case objectLocatorDistance: { + allInfo.put("multiplier", (double) 2.5); + allInfo.put("currentLevel", (double) oldBrokenDrone.getObjectLocatorDistance()); + allInfo.put("originalLevel", (double) Nomads.BASE_OBJECTLOCATORDISTANCE); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_RADARS); + break; + } + case reliability: { + allInfo.put("multiplier", (double) 2.4); + allInfo.put("currentLevel", (double) oldBrokenDrone.getReliability()); + allInfo.put("originalLevel", (double) Nomads.BASE_RELIABILITY); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + case attack: { + allInfo.put("multiplier", (double) 2.7); + allInfo.put("currentLevel", (double) oldBrokenDrone.getAttack()); + allInfo.put("originalLevel", (double) Nomads.BASE_ATTACK); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + case defenses: { + allInfo.put("multiplier", (double) 2.8); + allInfo.put("currentLevel", (double) oldBrokenDrone.getDefenses()); + allInfo.put("originalLevel", (double) Nomads.BASE_DEFENSES); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + case speed: { + allInfo.put("multiplier", (double) 3.5); + allInfo.put("currentLevel", (double) oldBrokenDrone.getSpeed()); + allInfo.put("originalLevel", (double) Nomads.BASE_SPEED); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + case cargoSpace: { + allInfo.put("multiplier", (double) 3.5); + allInfo.put("currentLevel", (double) oldBrokenDrone.getCargoSpace()); + allInfo.put("originalLevel", (double) Nomads.BASE_CARGOSPACE); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + case theft: { + allInfo.put("multiplier", (double) 4); + allInfo.put("currentLevel", (double) oldBrokenDrone.getTheft()); + allInfo.put("originalLevel", (double) Nomads.BASE_THEFT); + allInfo.put("maxLevel", (double) Nomads.MAXLEVEL_STATS); + break; + } + default: { + // Must specify an Upgrade Type + return null; + } + } + + return allInfo; } } diff --git a/src/net/grosinger/nomads/UpgradeShop.java b/src/net/grosinger/nomads/UpgradeShop.java index c036845..e81f568 100644 --- a/src/net/grosinger/nomads/UpgradeShop.java +++ b/src/net/grosinger/nomads/UpgradeShop.java @@ -1,5 +1,7 @@ package net.grosinger.nomads; +import net.grosinger.nomads.exceptions.InsufficientFundsException; + /** * A representation of an UpgradeShop. Allows Drones to interact with this * building. @@ -10,6 +12,24 @@ public class UpgradeShop extends NeighborBuilding { super(x, y, name, building, drone); } - // Implement Police Station + // TODO - Implement Upgrade Shop + + /** + * Performs an upgrade on the drone if it is possible. Must be passed an + * upgrade that is not already of max level, and that has enough funds to + * purchase. + * + * @param toPerform + * An Upgrade that should be performed + * @throws InsufficientFundsException + */ + public void performUpgrade(Upgrade toPerform) throws InsufficientFundsException { + int teamBalance = drone.getTeam().getBalance(); + int upgradeCost = toPerform.getPrice(); + + if (upgradeCost > teamBalance) { + throw new InsufficientFundsException(); + } + } } diff --git a/src/net/grosinger/nomads/exceptions/InsufficientFundsException.java b/src/net/grosinger/nomads/exceptions/InsufficientFundsException.java new file mode 100644 index 0000000..625abdb --- /dev/null +++ b/src/net/grosinger/nomads/exceptions/InsufficientFundsException.java @@ -0,0 +1,8 @@ +package net.grosinger.nomads.exceptions; + +public class InsufficientFundsException extends Exception { + + public InsufficientFundsException() { + super("The team you are a part of does not have the required funds for this action."); + } +} diff --git a/src/net/grosinger/nomads/exceptions/ObjectReferenceOutdated.java b/src/net/grosinger/nomads/exceptions/ObjectReferenceOutdatedException.java similarity index 53% rename from src/net/grosinger/nomads/exceptions/ObjectReferenceOutdated.java rename to src/net/grosinger/nomads/exceptions/ObjectReferenceOutdatedException.java index 10e60eb..63d079b 100644 --- a/src/net/grosinger/nomads/exceptions/ObjectReferenceOutdated.java +++ b/src/net/grosinger/nomads/exceptions/ObjectReferenceOutdatedException.java @@ -1,8 +1,8 @@ package net.grosinger.nomads.exceptions; -public class ObjectReferenceOutdated extends Exception { +public class ObjectReferenceOutdatedException extends Exception { - public ObjectReferenceOutdated() { + public ObjectReferenceOutdatedException() { super("This object was created in a previous turn and is no longer valid"); } }