From bb5ab7a7aabaaa537b46f79fd79400476639c696 Mon Sep 17 00:00:00 2001 From: Tony Grosinger Date: Tue, 26 Apr 2011 13:47:41 -0700 Subject: [PATCH] -Implemented most of creating a new drone Signed-off-by: Tony Grosinger --- bin/net/grosinger/nomads/DroneTeam.class | Bin 3324 -> 4333 bytes bin/net/grosinger/nomads/DroneTools.class | Bin 4024 -> 4455 bytes bin/net/grosinger/nomads/InitializeGame.class | Bin 5223 -> 5223 bytes bin/net/grosinger/nomads/Nomads.class | Bin 3916 -> 3950 bytes src/net/grosinger/nomads/DroneListItem.java | 2 +- src/net/grosinger/nomads/DroneTeam.java | 34 ++++++++++++++ src/net/grosinger/nomads/DroneTools.java | 44 ++++++++++++++---- src/net/grosinger/nomads/InitializeGame.java | 2 +- src/net/grosinger/nomads/Nomads.java | 5 ++ 9 files changed, 77 insertions(+), 10 deletions(-) diff --git a/bin/net/grosinger/nomads/DroneTeam.class b/bin/net/grosinger/nomads/DroneTeam.class index b28ebb955179d5ca1d29508541f5793d415ca28a..98562c90069b38eb364d52c596f1e721d331f56e 100644 GIT binary patch delta 1000 zcmZuvSx*yD6#njX=#Vl&i!36t*&tdZASNVIV}dL)gw2RX9xua9QyiwGGm7Fe;)V+@ zSoeL$R}`ygVtn?u$g4)hw3C8#lPA3x+Y49orssW^#K3|Xca(M-#BQjEDvYIOGx3f-n6 z<2b9}3`5yM5jTmOc7)rJsM&Hr7sIZj;vDjbjD(x^PMhm{dt+QD#S?CY3ri~)h6r<` zQP+iK1=1yaVAz<23S3s9q1}foxT+w|5TIG*MKv=*q()>^Z0AEl#WifAF2ceTF&fb> zt=Ubzq2eam8N8OT>B=p6Tg49eX<$agvNc-_F)*FM|If$>LNiGYnqhT(QYvyngr#R# zvk3eD_6fKIw7A1`g9LJ?-jUXk-x1Zhv75&tyx$PL2Zu$k>oC-&2-SrL-BRTW@`SdA z;(NS(Ea%lrZ;RLIr2cYftD0yrB(hn-z8TaP4ZKGEG#w=r)8Cg2eI`4H5<2InpeRKd zohS*T^iiic1b?a^tArOB6zi!~MEC`n_)3v) zg!qmE{2;_U%JCCx8Bog@HZu=2CZn5WILUt6ptwrY{q*1tsi)UO8}8y>lCTx`@qmU@ zKwUk=Bcd!%dXLG|DE|p%$aqS1)O6-E$_&#@F+9IXjjVtv2q+j+Xwk?W*RmB%xJ=Ip HC1L6hEpP0C delta 46 zcmaE>_(xLU)W2Q(7#J9g7^>MBm>3!4COa}qZPYSgn|zcboKax2ET=0QD+2=)Llpp0 CfeW|* diff --git a/bin/net/grosinger/nomads/DroneTools.class b/bin/net/grosinger/nomads/DroneTools.class index fb203e42bedf61dbf2d299deeb4a0096b036f6bf..e034ab50a146397643e6e7b6c0380719495f5ab9 100644 GIT binary patch literal 4455 zcmai1{Z|y{6@Fe=7+3~W1aTDP4xQb_U`_L7 zk~VFVek3;3Hc71wX=+<*!P>)9y-JvqmD*b zoipQEg?igOYudJ%a6}bahsqo3Rj5fNGugqcIjgXJ70Dq_iW+tC9L=Y*W2Ql+_EnTb zf(i{6EIXArA#R!JxLMYv2@#`wts_60yhu?ss8GE(nNDW=6i$a%0qb4mThV)e85cM* zt`In2CCnfyv0ld-G$~YuBjdGD*r1~d)w0^CLqm-$*&Si{LLZG5L zY7taeGn7o5!@1ch(;hRXQp|MYkQFyl7$sps{BWZt1$A0ver1glMOepLKM^2sc_xOl0Yr2inD^?z7yNqUy`1xbToENd~ z;f-23!K?GOhl~t^DeNXp*#(p7QRA#R$!Nu!K^;f%v_d32IOvbQqJq7VNt%eynDO%` zjD%q;w6KIuKj*T^R9C-k8w*ly>4?$fblS+~Y}V;Xf2qCxki%wjdS=S9d;5Ad99LNH z0}#Xr)=SPub&N^Q8(D_&WF|=-9HavVn^poG*D-|nTMs8^D04UE>m zL7c1v@jSkv;p+;UeaS!Uj6WTxafak|7&c}Vnn7V;)yYuCy_MzAFs0Du5AG$g4lyKj zm^kZp-Z0su&{QahGloaAHU~D@Wne~TNK)!bLfjkFouI%;;;=vS_4zx`pYaX?783wea+|YBrJ1zcg9WUW!_W6vF zIh3|?(=!K*3>!NT9*j(Cc(oiW9SgO%j5jpAuJEugF$Qu>2+O^lHOyMgOlyUthsnLYVI<>@UM+AGLDKYQ+z9yp4BwMVLz&adX(bP|)W2@&Nn2 z!p$GyCmMdt9Q#J@^p2c7I^M;53hNSPf*Ck$TeAZO8$phFNiomVnzVVrt5=!3h+8dQ z6x`y{SI4~g@G~9n<0|uC#^seg?E3u+9UsUT3vy0*&eY-~T+{H&6*s2Qg$(aKI(~)g zY(UQYVsj;}uH$UuEXyhfXAM5)Xoy+4_Jq}*wzBOr#=O~XI&5m6<@jId2;vibs^K?< z3A@sQj^E-2XU3cuO{MQ^^x{AuZzv(DYw+$^#asq?9@%m8a8i!yHE#Ch;C)o)3Qxen zblS8Jq>N0)`7Tt-Xuk!6IU(a#XdWAidPWZ9C(wq->A=-BGy?-n8f z>#5(wi%B!BZ{V(l?>8cX5O#`P*E$}-quj~9i(V>c^%(uEa8_TXhn0NGn}z3BH=iO^ z;{xxx!F2@$)z$8Btn03fXI;rf#9x2+{rXW~ecoF9^}lw%{w`nrUhMVsO(z~863t^D zW9SGZuA$9MXdmAVbjydpneKm}DsZEc{}@`O6JUc=&^{LGDP9!&OMoI?pa&=$K*bJ8 z(ZM3*X%BLnSpL8VEKwHhX;$(Xa_LwJ*tV5mTLtV;5v(-60l)Ydn)p!`a-8u^Fuqs` zq+fi8i;$)94XlhWkXRjTit)u6pIHLt7vGU0SRWHC{A-euNxdW(uGs`f@8^P5VzsHr z#b+=?#vY@M3JgoHsYP~ZE%$fsVkCAO&knivPV8%~nCV->hkWb~Ea7c|Ydcd&>Lqu3 z6&Z1%IZ*r%_x4v2Yg@$0=D;G37rdpqE1bv4o~lsQ-w|6xcc|)bi1k#5sz1l69_=oS zSV+rbm;CGwRsR`rh1;0!sp$;WP&i zG%RL)Ek31w1M}8|>-Z*DmAt{e3!AF|zwAK zC3Xw1NhO$nmkG^YzP>AE40Y!5eLf>p$>WEeHpup}UX>R8~lxWhx>E;ivW4p_Tu#{;89I?+IsI%fR$PN}6h9PM9VlOpOLxT_#p QBnMOu(|-PH$mZ?u#R;jEYBCz4Ic2!H4G_#OC zIeS^pIRb6Aeo41&J@1+dbd5K5G$0Ty8D(e8(dPtquVFdvTXDs@1BfeXEB1RPl7TWvGJHeTT5ltARDmDghkW21^TvovY}^b^*1ZJMP>AN9SYGQ9?y4 zRDt#5hN(|f=4N$!QkyLie*3tU(@ImCZOFO*GU61CvcQgDFpm>XDw{PwsjYdbgHswa zz?4UwqVDd4h`FWbV@RP-!9IbVff!sTRT5S7N-T2Wj9i#jv0uJu=8Gc*vX?@?if_1h zbDDX=x~flDwo`P;JQpM0wB+nb6;I*mI!;DxBQLP0H+lYiFtQPCPWMDRAieZax>-ld zT{)r6`^>0*ysTA`@ml@qaji_y)!DQzXEDRfYM1nLWJT`gh>B-0ERgIS8w-xUf`ftN zIl9Od_1u*+T3)jSI(n1iZf#W@qm({k+uEWeOv*WH6im&j*v#is!B&I8At!XBP@J{w zfuR8fqXL@(0>m(ajgs@{RE$f`+nI(bqij$w$G8EF6(<2ss5psJWPzVO5|5CDJ%pPK z4qnH$f-{ZO?XnWXB&HOc71$Oip9!}WshGy|6uGO!NvkR+f#EgFy218Vrb7Yq(H$Jz zC$SZ$@q&u);(G!LNtmFTSl88rxGgd3*leCu*9J$tp} zcVKVYrcE2Ad{t3AErPRNHK1;{tn59D^VR-yFbKr|m$0lrTh|s?>ch-4&IlQ^DBYF4az!T zS)&r$iVsyR;Unf_zNF>!34NiuT1sKwFAvUD;J;0_^-vh)``yZeqmHHDpmeKhD zJ%4l^?BMTK*Lgb^ZQ^BRGabb_+Jf!qz)pTodG4?ayE&s{?BNRGj=s(fh1}6zZYj*S zJox>M^z$jLq6`{eM)EU`LxhFeYUy3|Y<%x5jz;SbtX|*i?r!yZUMhm)Ke2lK6M^f$ ziEsJqbr%niOfBQv#LyGT-$u8`;6c92^ve&Ci~WB`Q{=NS{|G1S0$k^2Zjf0yguT2q zJO-Ndfez4?ncX8P8mxu9;D_8LJ%17qEZ;ELD8(_x;Lp_s+qE)Sj|_IG7OWm$CI}y) z$$c~oIZ1qHiEp|tWDvfgTF82QnU(k=`L%;xBtDJ!a&^Ii@I6xtHbjD@{x-{$$$UvL z98-&jS8HLe&g6?>dMLU>jdmsnycws8K%BaF;E#Mrp!?>mROLdBuG_>_-> zk-PYb4A*_JO6rT=^cKo;3-L(pL(ZSy!c6xP&c-84I91&(mwU#`IFV`UZ2B8cFQLD) z>907QY3^+P9NCQW2s1OC3TsRL9O!KRGtLV<#Dz?BUuSd~v(q;tA|C0w^B?SQPhh2?esg0e?V|wH;zVxdVfvFuL#_E^`#2=O=LmC35)+`^6mlK{F%l zfXTfmjHAG!O%&hfE@gdter=9q*~HQG6*?4*2=OHp@o&5t`WH>5ceM8otgVys+bW^8=HIv-#a1G(6@{a`XpgqRd46U zKoG5XAMN;njq^i-`Un}^!Z1E|2}yWyeL`CCG`~p*8Meod@oN$yA+UXZi7vs}C!B@w RDM5o4g2(W0@w>yF{{<`T%t!zL diff --git a/bin/net/grosinger/nomads/InitializeGame.class b/bin/net/grosinger/nomads/InitializeGame.class index dec170ba76740ceb5f532a9245cedb4bbc993470..d597a084e3bb547aaf8424e2d8de0b89ce5185f3 100644 GIT binary patch delta 13 UcmaE^@mynpFeB$?M&UF@03;&>3IG5A delta 13 UcmaE^@mynpFeBGyM&UF@03;~{3jhEB diff --git a/bin/net/grosinger/nomads/Nomads.class b/bin/net/grosinger/nomads/Nomads.class index ab6289c51029e9a62fa8cad12147330740acb8a8..d37e9b223c39fa92119f5e6644ce96cdd83604b3 100644 GIT binary patch delta 1975 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 NOpBDR(}4{?{R;qAhcN&E diff --git a/src/net/grosinger/nomads/DroneListItem.java b/src/net/grosinger/nomads/DroneListItem.java index ad9ad27..c2896dd 100644 --- a/src/net/grosinger/nomads/DroneListItem.java +++ b/src/net/grosinger/nomads/DroneListItem.java @@ -162,7 +162,7 @@ public class DroneListItem { } /** - * Retrieve the level of this drone in theiving + * Retrieve the level of this drone in thieving * * @return int */ diff --git a/src/net/grosinger/nomads/DroneTeam.java b/src/net/grosinger/nomads/DroneTeam.java index 26cf58f..e1603ce 100644 --- a/src/net/grosinger/nomads/DroneTeam.java +++ b/src/net/grosinger/nomads/DroneTeam.java @@ -225,4 +225,38 @@ public class DroneTeam { current = current.getNext(); } } + + /** + * Removes money from the balance + * + * @param price + * - Amount to remove + */ + public void deductFromBalance(int price) { + currentBalance -= price; + } + + /** + * Creates a new drone on the same team next to the creator + * + * @param listItem + * - Drone that issued the request + */ + public void createNewDrone(DroneListItem listItem) { + Class c = listItem.getCurrent().getClass(); + Drone newDrone = null; + try { + newDrone = (Drone) c.newInstance(); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + + newDrone.setName(getName()); + newDrone.setUID(InitializeGame.generateUID()); + + DroneListItem newListItem = new DroneListItem(null, last, newDrone, this); + addToEnd(newListItem); + } } diff --git a/src/net/grosinger/nomads/DroneTools.java b/src/net/grosinger/nomads/DroneTools.java index 248232d..bb5b0ce 100644 --- a/src/net/grosinger/nomads/DroneTools.java +++ b/src/net/grosinger/nomads/DroneTools.java @@ -12,6 +12,7 @@ public class DroneTools { private Drone referredDrone; private DroneListItem listItem; + private DroneTeam currentTeam; private World worldReference; private int worldSize; @@ -20,6 +21,7 @@ public class DroneTools { listItem = droneParent; worldReference = theWorld; worldSize = worldReference.getWorldSize(); + currentTeam = listItem.getTeam(); } /** @@ -144,20 +146,46 @@ public class DroneTools { * if it can not create the house. */ public House createHouse() { - // Check that there is enough money in the team bank - int currentBalance = listItem.getTeam().getBalance(); - if (currentBalance < Nomads.HOUSEPRICE) { - if (Nomads.DEBUGBUILDINGS) - System.out.println("You do not have enough money to build a house"); - return null; - } else { + if (hasEnoughCash(Nomads.HOUSEPRICE)) { House newHouse = new House(Structure.HOUSE, getX() + 1, getY(), referredDrone.getName()); worldReference.placeNewBuilding(newHouse); + currentTeam.deductFromBalance(Nomads.HOUSEPRICE); return newHouse; - } + } else + return null; // TODO - Implement time to create house // Building a house should take many turns. Their drone will remain // immobile while house is constructed. } + + /** + * If your team has enough money, will create an exact clone of your drone. + */ + public void createNewDrone() { + if (hasEnoughCash(Nomads.DRONEPRICE)) { + currentTeam.createNewDrone(listItem); + currentTeam.deductFromBalance(Nomads.DRONEPRICE); + // TODO - Implement time to create new drone + // Creating a drone should take many turns. Their drone will remain + // immobile while drone is constructed. + } + } + + /** + * Tests to see if the team has enough money for an action + * + * @param price + * - Amount of money required + * @return boolean + */ + private boolean hasEnoughCash(int price) { + int currentBalance = listItem.getTeam().getBalance(); + if (currentBalance < price) { + if (Nomads.DEBUGMOVES) + System.out.println("You do not have enough money!"); + return false; + } else + return true; + } } diff --git a/src/net/grosinger/nomads/InitializeGame.java b/src/net/grosinger/nomads/InitializeGame.java index 8ada0eb..1ec397c 100644 --- a/src/net/grosinger/nomads/InitializeGame.java +++ b/src/net/grosinger/nomads/InitializeGame.java @@ -130,7 +130,7 @@ public class InitializeGame { * * @return String- UID */ - private static String generateUID() { + public static String generateUID() { SecureRandom random = new SecureRandom(); return new BigInteger(130, random).toString(32); } diff --git a/src/net/grosinger/nomads/Nomads.java b/src/net/grosinger/nomads/Nomads.java index 96c3fdd..e0803b6 100644 --- a/src/net/grosinger/nomads/Nomads.java +++ b/src/net/grosinger/nomads/Nomads.java @@ -29,6 +29,11 @@ public class Nomads { */ public static final int HOUSEPRICE = 200; + /** + * How much should a new drone cost? + */ + public static final int DRONEPRICE = 150; + public static void main(String[] args) { if (DEBUGSTATUS) System.out.println("Game initialization beginning...");