Changeset 3554

Show
Ignore:
Timestamp:
03/06/10 16:51:26 (5 months ago)
Author:
Dexter
Message:

made an interface "turretwar" to make it clear and help on coding( well more OO :P )
changed switch and addTerr methods to have .getFuzzyPlayer() method there..
still need to work on "lagout" of terrs

Location:
trunk/twcore/src/twcore/bots/multibot/twar
Files:
1 added
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/twcore/src/twcore/bots/multibot/twar/twar.java

    r3548 r3554  
    1616import twcore.core.events.Message; 
    1717import twcore.core.events.PlayerDeath; 
     18import twcore.core.events.PlayerLeft; 
    1819import twcore.core.events.TurretEvent; 
    1920import twcore.core.game.Player; 
     
    3637        --------------- Turret War ---------------------- 
    3738*/ 
    38 public class twar extends MultiModule 
     39public class twar 
     40extends MultiModule 
     41implements turretwar 
    3942{ 
    40          
    41         private boolean promotion = false; 
    42         private boolean turretWar = false; 
    43         private boolean warpOn = false; 
    44         private boolean freq1Terr = false; 
    45         private boolean freq0Terr = false; 
    46          
    47         private int firstShip = 0; 
    48          
    49         private ArrayList<shipSettings> listShipSettings = new ArrayList() ; 
     43    private    boolean     promotion   = false; 
     44        private    boolean     turretWar   = false; 
     45        private    boolean     warpOn      = false; 
     46        /*      private    boolean     freq1Terr   = false; 
     47        private    boolean     freq0Terr   = false; 
     48        */ 
     49        private    int         firstShip   = 0; 
     50 
     51        private    ArrayList<shipSettings> listShipSettings = new ArrayList() ; 
    5052         
    5153        //guide to ER+s 
     
    6769         
    6870        }; 
     71         
    6972        public void handleEvent(TurretEvent event) 
    7073        { 
    7174                if(!event.isAttaching()){ 
    72                         if(warpOn){ //if any player detaches, he'll get warped. 
     75                        if(isWarpOn()){ //if any player detaches, he'll get warped. 
    7376                                int idDetacher = event.getAttacherID(); 
    7477                                m_botAction.specificPrize(idDetacher, 7); 
     
    7780                } 
    7881        } 
     82         
    7983        public void handleEvent(PlayerDeath event) 
    80         { 
    81                         if(promotion) 
     84        {    
     85            Player killee  = null; 
     86            Player killer  = null; 
     87             
     88                if(isPromotion()) 
     89                { 
     90                        killer =  m_botAction.getPlayer(event.getKillerID()) ; 
     91                    killee =  m_botAction.getPlayer(event.getKilleeID()) ; 
     92                         
     93                        if(killer.getFrequency() != killee.getFrequency()) 
    8294                        { 
    83                         Player killer = m_botAction.getPlayer(event.getKillerID()); 
    84                         handleCustomPromotion(killer.getPlayerName(), (int) killer.getWins()); 
     95                                if(killer.getShipType() != 5) 
     96                                        handleCustomPromotion(killer.getPlayerName(), (int) killer.getWins());                           
    8597                        } 
    86         } 
     98                } 
     99        } 
     100 
    87101        public void handleEvent(Message event) 
    88102        { 
     
    112126                try 
    113127                { 
    114                         if(message.toLowerCase().startsWith("!start")) startTurretWar(name, message); 
    115                         else if(message.toLowerCase().startsWith("!terr")) setTerr(name, message); 
    116                         else if(message.toLowerCase().startsWith("!ship")) setFirstShip(name, message); 
    117                         else if(message.toLowerCase().startsWith("!prom")) setPromotion(name, message); 
    118                         else if(message.toLowerCase().startsWith("!lprom")) listPromotion(name, message); 
    119                         else if(message.toLowerCase().startsWith("!removep")) removePromotion(name, message); 
    120                         else if(message.toLowerCase().startsWith("!stop")) stopTurretWar(name, message); 
    121                         else if(message.toLowerCase().startsWith("!warp")) warpDetachedPlayer(name, message); 
    122                         else if(message.toLowerCase().startsWith("!guide")) showGuide(name, message); 
    123                         else if(message.toLowerCase().startsWith("!switch")) switchTerr(name, message); 
     128                        if(message.toLowerCase().startsWith("!start"))           cmd_start(name, message); 
     129                        else if(message.toLowerCase().startsWith("!ship"))       cmd_firstShip(name, message); 
     130                        else if(message.toLowerCase().startsWith("!terr"))       cmd_addTerr(name, message); 
     131                        else if(message.toLowerCase().startsWith("!switch"))     cmd_switchTerr(name, message); 
     132                        else if(message.toLowerCase().startsWith("!warp"))       cmd_warp(name, message); 
     133                        else if(message.toLowerCase().startsWith("!stop"))       cmd_stop(name, message); 
     134             
     135                        else if(message.toLowerCase().startsWith("!prom"))       setPromotion(name, message); 
     136                        else if(message.toLowerCase().startsWith("!lprom"))      listPromotion(name, message); 
     137                        else if(message.toLowerCase().startsWith("!removep"))    removePromotion(name, message); 
     138                         
     139                        else if(message.toLowerCase().startsWith("!guide"))      showGuide(name, message); 
     140                         
    124141                }catch(Exception e){} 
    125142        } 
     
    127144        public void handleCustomPromotion(String name, Integer kills) 
    128145        { 
     146             
    129147                for(int i = 0; i < listShipSettings.size() ; i++ )//loop to check promotions in the sorted list by kills 
    130148                { 
     
    137155                                        { 
    138156                                                m_botAction.setShip(name, e.getShip()); 
    139                                                 m_botAction.sendArenaMessage(name+" is owning! He just got promoted to "+e.getShipName()+"!", 7); 
     157                                        //      m_botAction.sendArenaMessage(name+" is owning! He just got promoted to "+e.getShipName()+"!", 7); 
     158                                        // REMOVING the *arena messages (if Nfer kills, it'll N *arena promotions) 
    140159                                        } 
    141160                        } 
     
    145164                                { 
    146165                                        m_botAction.setShip(name, e.getShip()); 
    147                                         m_botAction.sendArenaMessage(name+" got promoted to "+e.getShipName()+"!", 21); 
     166                                //      m_botAction.sendArenaMessage(name+" got promoted to "+e.getShipName()+"!", 21); 
    148167                                } 
    149168                } 
    150169        } 
    151170         
    152         public void setFirstShip(String name, String message) 
    153         { 
    154                 if(!freq1Terr && !freq0Terr) 
    155                 {//!ship 3 
    156                         this.firstShip = Integer.parseInt( message.substring(6) ); 
    157                         m_botAction.changeAllShips(firstShip); 
    158                 } 
    159                 else m_botAction.sendPrivateMessage(name, "Use !ship before the command !terr please. Now !stop and start all again."); 
    160         } 
    161          
    162         public void startTurretWar(String name, String message) 
    163         { 
    164                 if(!turretWar){ 
    165                         m_botAction.sendArenaMessage("Locking in 10 seconds, get ready!", 13); 
    166                         m_botAction.sendPrivateMessage(name, "I am locking arena in 10 seconds"); 
    167                         m_botAction.sendPrivateMessage(name,"do !terr <name> to pick the terrs, if you haven't yet"); 
    168                         m_botAction.sendPrivateMessage(name,"do *arena GO GO GO %%104"); 
    169                         m_botAction.sendPrivateMessage(name ,"do *timer <minutes> after it"); 
    170                          
    171                          
    172                         TimerTask starting = new TimerTask(){ 
    173                                 public void run(){ 
    174                                                 m_botAction.toggleLocked(); 
    175                                                 m_botAction.scoreResetAll(); 
    176                                                 m_botAction.shipResetAll(); 
    177                                                 m_botAction.resetFlagGame(); 
    178                                                  
    179                                                 turretWar = true; 
    180                                                 } 
    181                         };m_botAction.scheduleTask(starting, 10000); 
    182                 }else m_botAction.sendPrivateMessage(name, "The game has already started. To stop the game use !stop"); 
    183         } 
    184         public int getFreq( String player ) 
    185         { 
    186                 return m_botAction.getPlayer(player).getFrequency(); 
    187         } 
    188          
    189         public void setTerr(String name, String message) 
    190         { //setting terrs 
    191                 StringTokenizer st = new StringTokenizer(message); 
    192                 String terrName; 
    193                 st.nextToken(); 
    194                 terrName = st.nextToken(); 
     171        public void setPromotion( String name, String message ) 
     172    { 
     173        if(!isPromotion()) 
     174        { 
     175            setPromotion(true); 
     176            m_botAction.sendArenaMessage("Yes! Ship Promotions ON!", 24); 
     177        } 
     178         
     179        String messageSplit [] = message.split(":"); 
     180         
     181        shipSettings object = new shipSettings(); 
     182         
     183        object.setShip( Integer.parseInt(messageSplit[0].substring(6)) ); 
     184        object.setKill( Integer.parseInt(messageSplit[1]) ); 
     185         
     186        listShipSettings.add(object); 
     187        Collections.sort(listShipSettings);      
     188    }    
     189         
     190    public void listPromotion(String name, String message) 
     191    { 
     192        m_botAction.sendPrivateMessage(name,"------------------------------------------"); 
     193        for(shipSettings e:listShipSettings) 
     194            m_botAction.sendPrivateMessage(name, "| be a "+e.getShipName()+ " with "+e.getKill()+" kills"); 
     195         
     196        m_botAction.sendPrivateMessage(name,"------------------------------------------");   
     197    } 
     198     
     199    public void removePromotion( String name, String message) 
     200    { 
     201        //!removep 1 
     202        Integer removeP = Integer.parseInt( message.substring(9) ); 
     203         
     204        for( shipSettings e:listShipSettings) 
     205            if(e.getShip() == removeP) 
     206            { 
     207                listShipSettings.remove(e); 
     208                break; 
     209            } 
     210     } 
     211     
     212    @Override 
     213    public void cmd_start(String name, String message) { 
     214        if(!isTurretWar()) 
     215        { 
     216            m_botAction.scoreResetAll(); 
     217            m_botAction.shipResetAll(); 
     218            m_botAction.resetFlagGame(); 
     219            setTurretWar(true); 
     220        } 
     221        else m_botAction.sendPrivateMessage(name, "Game has already started, to stop type ::!stop"); 
     222    } 
     223 
     224        public void cmd_firstShip(String name, String message) 
     225        { 
     226            //!ship # 
     227            if(message.length() > 5) 
     228            { 
     229            setFirstShip( Integer.parseInt( message.substring(6) ) ); 
     230            m_botAction.changeAllShips( getFirstShip() ); 
     231            m_botAction.scoreResetAll(); 
     232            m_botAction.shipResetAll(); 
     233            } 
     234        } 
     235         
     236    @Override 
     237    public void cmd_addTerr(String name, String message) { 
     238      //!terr name 
     239        Player terr = null; 
     240         
     241        if(message.length() > 5) 
     242            terr = m_botAction.getFuzzyPlayer( message.substring(6) ); 
     243         
     244        if( terr == null) 
     245        { 
     246            m_botAction.sendPrivateMessage(name, message.substring(6)+" is not in arena"); 
     247            return ; 
     248        } 
     249         
     250        putTerr(name, message, terr); 
     251         
     252    } 
     253 
     254    @Override 
     255    public void cmd_switchTerr(String name, String message) { 
     256        //!switch name1:name2 
     257        Player p1 = null; 
     258        Player p2 = null; 
     259         
     260        if(!message.contains(":")) 
     261            return ; 
     262         
     263        p1 = m_botAction.getFuzzyPlayer( getOldTerr( message.split(":")) ); 
     264        p2 = m_botAction.getFuzzyPlayer( getNewTerr( message.split(":")) ); 
     265         
     266        if( p1 == null ) 
     267        { 
     268            m_botAction.sendPrivateMessage(name, getOldTerr( message.split(":"))+" is not here"); 
     269            return ; 
     270        } 
     271        if( p2 == null ) 
     272        { 
     273            m_botAction.sendPrivateMessage(name, getNewTerr( message.split(":"))+" is not here"); 
     274            return ; 
     275        } 
     276         
     277        //ok..the player might be lagged out(work on it still) 
     278        switchTerrs(p1, p2); 
     279    } 
     280     
     281        public void cmd_warp(String name, String message) 
     282    { 
     283        if(isWarpOn ()) setWarpOn(false); 
     284        else{ 
     285            setWarpOn(true); 
     286            m_botAction.sendPrivateMessage(name, "Allright! any players dettaching will be warped!"); 
     287     
     288        } 
     289    } 
     290    @Override 
     291    public void cmd_stop(String name, String message) { 
     292        setTurretWar(false); 
     293        setPromotion(false); 
     294        setWarpOn(false); 
     295    //  freq1Terr = false; 
     296    //  freq0Terr = false; 
     297        listShipSettings.clear(); 
     298        m_botAction.cancelTasks(); 
     299        m_botAction.sendPrivateMessage(name, "Game stopped. Now you can make other round by !start"); 
     300        m_botAction.sendPrivateMessage(name, "or just !unload twar"); 
     301     
     302    } 
     303    @Override 
     304    public void cmd_removeTerr() { 
     305        // TODO Auto-generated method stub 
     306         
     307    } 
     308      
     309        /*public void handleEvent(PlayerLeft event){ 
     310            Player p_left = m_botAction.getPlayer( event.getPlayerID() ); 
     311            TWARPlayer p = new TWARPlayer(); 
     312             
     313            if(!p_left.isShip(0)) 
     314            { 
     315                if(team[p_left.getFrequency()].) 
     316            } 
     317        } 
     318         */ 
    195319                 
    196                 if(!freq1Terr && !freq0Terr) 
    197                         m_botAction.createNumberOfTeams(2); 
    198                  
    199                 if(getFreq(terrName) == 1) 
    200                         if(!freq1Terr) 
    201                                 { 
    202                                         m_botAction.setShip(terrName, 5); 
    203                                         m_botAction.sendArenaMessage(terrName+" is your the terr!",1); 
    204                                         freq1Terr = true; 
    205                                 }else m_botAction.sendPrivateMessage(name, "Freq 1 has a terr already, try to use !switch please"); 
    206                  
    207                 else if(getFreq(terrName) == 0) 
    208                         if(!freq0Terr) 
    209                         { 
    210                                 m_botAction.setShip(terrName, 5); 
    211                                 m_botAction.sendArenaMessage(terrName+ " is your the terr!", 1); 
    212                                 freq0Terr = true; 
    213                         }else m_botAction.sendPrivateMessage(name, "Freq 0 has a terr already, try to use !switch please."); 
    214         } 
    215          
    216         public void switchTerr( String name, String message ) 
    217         { //switching terrs 
    218                 if(turretWar){   
    219                         String oldTerr; 
    220                         String newTerr; 
    221                         String [] terr; 
    222                         terr = message.split(":", 2); 
    223                         oldTerr = terr[0].substring(8).toLowerCase(); 
    224                         newTerr = terr[1].toLowerCase(); 
    225                          
    226                         if(getFreq(oldTerr) == getFreq(newTerr)) 
    227                                 { 
    228                                         m_botAction.setShip(newTerr, 5); 
    229                                         m_botAction.scoreReset(newTerr); 
    230                                         m_botAction.sendArenaMessage(newTerr+ " is the new terr to the freq "+getFreq(newTerr)+"!", 21); 
    231                                         m_botAction.setShip(oldTerr, firstShip); //set back to the first ship of !setship command 
    232                                         m_botAction.scoreReset(oldTerr); 
    233                                 }else m_botAction.sendPrivateMessage(name, "Choose a new terr from the same frequence please."); 
    234                         }else m_botAction.sendPrivateMessage(name, "Game hasn't started. Start it first please."); 
    235                 } 
    236          
    237         //setter of !warp 
    238         public void warpDetachedPlayer(String name, String message) 
    239         { 
    240                 if(warpOn) warpOn = false; 
    241                 else{ 
    242                         warpOn = true; 
    243                         m_botAction.sendPrivateMessage(name, "Allright! any players dettaching will be warped!"); 
    244          
    245                 } 
    246         } 
    247          
    248         public void setPromotion( String name, String message ) 
    249         { 
    250                 if(!promotion) 
    251                 { 
    252                         promotion = true; 
    253                         m_botAction.sendArenaMessage("Yes! Ship Promotions ON!", 24); 
    254                 } 
    255                  
    256                 String messageSplit [] = message.split(":"); 
    257                  
    258                 shipSettings object = new shipSettings(); 
    259                  
    260                 object.setShip( Integer.parseInt(messageSplit[0].substring(6)) ); 
    261                 object.setKill( Integer.parseInt(messageSplit[1]) ); 
    262                  
    263                 listShipSettings.add(object); 
    264                 Collections.sort(listShipSettings); 
    265                  
    266         }        
    267          
    268         public void removePromotion( String name, String message) 
    269         { 
    270                 //!removep 1 
    271                 //      m_botAction.sendPrivateMessage(name, message.substring(6+3)+" ship being removed..."); 
    272                 Integer removeP = Integer.parseInt( message.substring(9) ); 
    273                  
    274                 for( shipSettings e:listShipSettings) 
    275                         if(e.getShip() == removeP) 
    276                         { 
    277                                 listShipSettings.remove(e); 
    278                                 break; 
    279                         } 
    280                  
    281         } 
    282          
    283320        public void cancel() {} 
    284321 
    285         public void listPromotion(String name, String message) 
    286         { 
    287                 m_botAction.sendPrivateMessage(name,"------------------------------------------"); 
    288                 for(shipSettings e:listShipSettings) 
    289                         m_botAction.sendPrivateMessage(name, "| be a "+e.getShipName()+ " with "+e.getKill()+" kills"); 
    290                  
    291                 m_botAction.sendPrivateMessage(name,"------------------------------------------");       
    292         } 
    293322        public String[] getModHelpMessage()  
    294323        { 
    295324                String erHelp [] = { 
    296                         "--------------------------------------------------------------------------------------------------", 
    297                         "|      !guide                                                                                                                                                                                                                                                                                                                                                                                                                  - A GUIDE TO HOST TURRETWAR", 
    298                         "| !ship number                                                                                                                                                                                                                                                                                                                                                                                 - to set everyone in this ship",                                                                                                                                                                 
    299                         "|      !terr name                                                                                                                                                                                                                                                                                                                                                                                                      - to pick a terr", 
    300                         "|      !switch name:terr                                                                                                                                                                                                                                                                                                                                               - to switch terrs", 
    301                         "---------------------------------- Promotion -----------------------------------------------------", 
    302                         "|      !prom   ship:kill                                                                                                                                                                                                                                                                                                                                                               - to enable promotion",  
    303                         "| !lprom                                                                                                                                                                                                                                                                                                                                                                                                                                       - to check the list of promotions", 
    304                         "| !removep ship                                                                                                                                                                                                                                                                                                                                                                                - removes the promotion of this #ship", 
    305                         "--------------------------------------------------------------------------------------------------", 
    306                         "|      !start                                                                                                                                                                                                                                                                                                                                                                                                                                  - to start game (*scorereset, *shipreset and *lock)", 
    307                         "|      !warp                                                                                                                                                                                                                                                                                                                                                                                                                                           - to enable warpback", 
    308                         "| ---- Warping to safes ----", 
    309                         "|| !setupwarplist                                                                                                                                                                                                                                                                                                                                                              - to see warp safes list", 
    310                         "--------------------------------------------------------------------------------------------------" 
     325                        "| --------------------------------------------------------------------------------- |", 
     326                        "|      !guide                        - A GUIDE TO HOST TURRETWAR                         |", 
     327                        "| !ship number                  - to set everyone in this ship                      |",                                                                                                                                                                 
     328                        "|      !terr name                    - to pick a terr                                    |", 
     329                        "|      !switch name:terr             - to switch terrs                                   |", 
     330                        "| ------------------ Promotion ---------------------------------------------------  |", 
     331                        "| !prom ship:kill               - to enable promotion                               |",         
     332                        "| !lprom                        - to check the list of promotions                   |", 
     333                        "| !removep ship                 - removes the promotion of this #ship               |", 
     334                        "| --------------------------------------------------------------------------------  |", 
     335                        "|      !start                        - to start game (*scorereset, *shipreset and *lock) |", 
     336                        "|      !warp                         - to enable warpback                                |", 
     337                        "| --- Warping to safes ----                                                         |", 
     338                        "| !setupwarplist                - to see warp safes list                            |", 
     339                        "| --------------------------------------------------------------------------------- |" 
    311340                }; 
    312341                return erHelp; 
     
    341370                m_botAction.sendPrivateMessage(name, guideER[12]); 
    342371        } 
    343         //stopping game. 
    344         public void stopTurretWar(String name, String message) 
    345         { 
    346                 turretWar = false; 
    347                 promotion = false; 
    348                 warpOn = false; 
    349                 freq1Terr = false; 
    350                 freq0Terr = false; 
    351                 listShipSettings.clear(); 
    352                 m_botAction.cancelTasks(); 
    353                 m_botAction.toggleLocked(); 
    354                 m_botAction.sendPrivateMessage(name, "Game stopped. Now you can make other round by !start"); 
    355                 m_botAction.sendPrivateMessage(name, "or just !unload twar"); 
    356         } 
     372                 
    357373        public void init() { 
    358374        } 
     
    365381                eventRequester.request(this, EventRequester.PLAYER_DEATH); 
    366382        } 
    367          
     383     
     384    public void putTerr(String name, String message, Player terr) 
     385    { 
     386        m_botAction.setShip(terr.getPlayerID(), 5); 
     387        m_botAction.scoreReset(terr.getPlayerID()); 
     388        m_botAction.shipReset(terr.getPlayerID()); 
     389        m_botAction.sendArenaMessage(terr.getPlayerName()+" is your terr!"); 
     390         
     391    } 
     392   
     393    public void switchTerrs(Player p1, Player p2){ 
     394         
     395        m_botAction.setShip     (p2.getPlayerID(), 5); 
     396        m_botAction.scoreReset  (p2.getPlayerID()); 
     397        m_botAction.shipReset   (p2.getPlayerID()); 
     398        m_botAction.setShip     (p1.getPlayerID(), getFirstShip() ); 
     399         
     400        m_botAction.sendArenaMessage(p1.getPlayerName()+" (terr) switched with "+p2.getPlayerName()); 
     401    } 
     402     
     403    //getters setters 
     404    public String getOldTerr(String split []){ 
     405        return split[0].substring(8); 
     406    } 
     407    public String getNewTerr(String split[]){ 
     408        return split[1]; 
     409    } 
     410     
     411    public int getFreq( String player ) 
     412    { 
     413        return m_botAction.getPlayer(player).getFrequency(); 
     414    } 
     415 
     416    public boolean isWarpOn() { 
     417        return warpOn; 
     418    } 
     419    public void setWarpOn(boolean warpOn) { 
     420        this.warpOn = warpOn; 
     421    } 
     422    public int getFirstShip(){ 
     423        return firstShip; 
     424    } 
     425    public void setFirstShip(int firstShip) { 
     426        this.firstShip = firstShip; 
     427    } 
     428    public boolean isPromotion() { 
     429        return promotion; 
     430    } 
     431    public void setPromotion(boolean promotion) { 
     432        this.promotion = promotion; 
     433    } 
     434    public boolean isTurretWar() { 
     435        return turretWar; 
     436    } 
     437    public void setTurretWar(boolean turretWar) { 
     438        this.turretWar = turretWar; 
     439    } 
     440    /* 
     441    public boolean isFreq1Terr() { 
     442        return freq1Terr; 
     443    } 
     444    public void setFreq1Terr(boolean freq1Terr) { 
     445        this.freq1Terr = freq1Terr; 
     446    } 
     447    public boolean isFreq0Terr() { 
     448        return freq0Terr; 
     449    } 
     450    public void setFreq0Terr(boolean freq0Terr) { 
     451        this.freq0Terr = freq0Terr; 
     452    } 
     453    */ 
    368454}