Changes in / [17dfb52:c65ef39] in galcon-client


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/com/example/helloandroid/Fleet.java

    r17dfb52 rc65ef39  
    2020        private int faction;
    2121        private boolean isNextToAPlanet;
    22         private boolean dirChanged, isClockwise;
    23 
     22        private boolean dirChanged;
     23       
    2424        /* Optimising: pre-calculate paths */
    2525        public Fleet(Planet source, Planet destination, int numShips, int faction) {
     
    2828                //Calculate initial coordinates and direction
    2929                if((destination.getX() - source.getX()) != 0){
    30                         //line formula
    31                         slope = getSlope(source.getX(),source.getY(),destination.getX(),destination.getY());
    32                
    33                         xIntercept = destination.getY() - (slope*destination.getX());
    34 
    35                         //direction
    36                         direction = Math.atan(slope);
    37 
    38                         //coordinates for all 4 coordinates
    39                         if((destination.getX() - source.getX()) < 0 )
    40                                 direction += Math.PI;
    41 
    42                         dblX = ((Math.cos(direction)*(source.radius + 10) + source.getX()));
    43                         dblY = ((Math.sin(direction)*(source.radius + 10) + source.getY()));
    44 
     30                //line formula
     31                slope = getSlope(source.getX(),source.getY(),destination.getX(),destination.getY());
     32               
     33                xIntercept = destination.getY() - (slope*destination.getX());
     34               
     35                //direction
     36                direction = Math.atan(slope);
     37               
     38                //coordinates for all 4 coordinates
     39                if((destination.getX() - source.getX()) < 0 )
     40                        direction += Math.PI;
     41               
     42                dblX = ((Math.cos(direction)*(source.radius + 10) + source.getX()));
     43                dblY = ((Math.sin(direction)*(source.radius + 10) + source.getY()));
     44               
    4545                } else {
    4646                        if((destination.getY() - source.getY()) > 0 ){
     
    5353                                dblY = source.getY() - source.radius - 10;
    5454                        }
    55                         xIntercept = destination.getX();
    56                 }
    57 
     55                }
     56               
    5857                x = (int)dblX;
    5958                y = (int)dblY;
    60 
     59               
    6160                this.numShips = numShips;
    6261                this.faction = faction;
     
    6564                dirChanged = false;
    6665        }
    67 
    68 
     66       
     67               
    6968        public int getX() {
    7069                return x;
     
    176175        public void update(ArrayList<Planet> planets) {
    177176                int speed = 1; //pixels per move
    178                 double distance, tangentDirection, angle;
     177                double distance, tangentDirection;
    179178                Planet temp = null;
    180179                //is the ship going around a planet already
     
    194193                                dblY += (Math.sin(direction)*speed);
    195194                                dblX += (Math.cos(direction)*speed);
    196 
     195                               
    197196                                x = (int)dblX;
    198197                                y = (int)dblY;
    199198                        }else {                         
    200199                                double radAngle = Math.atan(getSlope(temp.getX(), temp.getY(), dblX, dblY));
    201                                 //figure out which way to go clockwise or counter clockwise
    202                                 tangentDirection = (Math.atan(getSlope(temp.getX(),temp.getY(),dblX,dblY))) + (Math.PI/2);
    203                                 angle = Math.atan((Math.tan(tangentDirection) - Math.tan(direction))/(1 + Math.tan(tangentDirection)*Math.tan(direction)));
    204                                 if (angle <= Math.PI/2)
    205                                         angle = Math.PI - angle;
    206200                               
    207201                                if(dblX < temp.getX())
    208202                                        radAngle += Math.PI;
    209203                               
    210                                 angle = radAngle + Math.PI/2;
     204                                double angle = radAngle + Math.PI/2;
    211205                               
    212206                                double diff = direction-angle;
    213207                               
    214                                 if(diff > 0)
    215                                         isClockwise = false;
    216                                 else
    217                                         isClockwise = true;
    218208                                if(Math.abs(diff)>Math.PI/2)
    219209                                        direction = angle-Math.PI;
    220210                                else
    221211                                        direction = angle;
    222                                        
     212                               
    223213                                dirChanged = true;
    224214                               
     
    234224                        //if so set isNextToAPlanet to false and move
    235225                        //otherwise continue moving along the circumferenceds4
    236                        
    237                        
    238                         if(true){
    239                                
    240                         } else {
    241                                 angle = speed/temp.radius;
    242                                 if(isClockwise){
    243                                         dblX = ((Math.cos(direction + (Math.PI/2) - angle)*(temp.radius) + temp.getX()));
    244                                         dblY = ((Math.sin(direction + (Math.PI/2) - angle)*(temp.radius) + temp.getY()));
    245                                         direction = direction - (Math.PI/2);
    246                                 } else {
    247                                         dblX = ((Math.cos(direction - (Math.PI/2) + angle)*(temp.radius) + temp.getX()));
    248                                         dblY = ((Math.sin(direction - (Math.PI/2) + angle)*(temp.radius) + temp.getY()));
    249                                         direction = direction + (Math.PI/2);
    250                                 }
    251                         }
    252                 }
    253         }
    254 
     226               
     227                }
     228               
     229               
     230        }
     231       
    255232        // attack the destination planet
    256233        //after the method is called the fleet needs to removed
     
    263240                }
    264241        }
    265 
     242       
    266243        //helper functions
    267244        private double getDistanceBetween(double x1, double y1, double x2, double y2) {
    268245                return Math.sqrt(Math.pow((x2 - x1),2) + Math.pow((y2 - y1),2));
    269246        }
    270 
     247       
    271248        private double getSlope(double x1, double y1, double x2, double y2) {
    272249                return ((y2 - y1)/(double)(x2 - x1));
Note: See TracChangeset for help on using the changeset viewer.