Ignore:
File:
1 edited

Legend:

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

    r69f6f01 r04a9a00  
    1010import android.graphics.Color;
    1111import android.graphics.Paint;
    12 import android.graphics.RectF;
    13 import android.graphics.Paint.FontMetrics;
    1412import android.os.Bundle;
    1513import android.os.Handler;
     
    7977        public ArrayList<Fleet> fleets;
    8078        public Planet planetSelected;
    81        
    82         int mFleetSize;
    8379
    8480        public DrawingThread(SurfaceHolder surfaceHolder, Context context,
     
    105101           
    106102            fleets = new ArrayList<Fleet>();
    107            
    108             mFleetSize = 50;
    109103        }
    110104
     
    131125        public void run() {
    132126            while (mRun) {
    133                 //Log.i("Gencon", "run called");
    134                
    135127                Canvas c = null;
    136128                try {
    137129                    c = mSurfaceHolder.lockCanvas(null);
    138                     synchronized (mSurfaceHolder) {
    139                         //Log.i("Gencon", "about to call stuff: mode is "+mMode);
    140                        
    141                         if (mMode == STATE_RUNNING) updatePhysics();
     130                    synchronized(mSurfaceHolder) {
     131                        if(mMode == STATE_RUNNING)
     132                                updatePhysics();
    142133                        doDraw(c);
    143134                    }
     
    245236                                if(Planet.collisionDetected(p, planets)) {
    246237                                        x--;
    247                                 }else if(p.getX()-p.getRadius() < 0 || mCanvasWidth-20<=p.getX()+p.getRadius() ||
    248                                                  p.getY()-p.getRadius() < 0 || mCanvasHeight-20<=p.getY()+p.getRadius()) {
     238                                }else if(p.getX()-p.getRadius() < 0 || mCanvasWidth<=p.getX()+p.getRadius() ||
     239                                                 p.getY()-p.getRadius() < 0 || mCanvasHeight<=p.getY()+p.getRadius()) {
    249240                                        x--;
    250241                                }else {
     
    349340                }
    350341                }
    351                
    352                 float textSize = mTextPaint.getTextSize();
    353                 mTextPaint.setTextSize(24);
    354                 FontMetrics metrics = mTextPaint.getFontMetrics();
    355                 mTextPaint.setColor(Color.WHITE);
    356                
    357                 canvas.drawText(mFleetSize+"%", mCanvasWidth-mTextPaint.measureText(mFleetSize+"%"), mCanvasHeight-20-(metrics.ascent+metrics.descent), mTextPaint);
    358                
    359                 mTextPaint.setTextSize(textSize);
    360                
    361                 mLinePaint.setColor(Color.YELLOW);
    362                 canvas.drawRoundRect(new RectF(70, mCanvasHeight-15, mCanvasWidth-70, mCanvasHeight-5), 5, 5, mLinePaint);
    363                
    364                 mLinePaint.setColor(Color.GREEN);
    365                 canvas.drawRoundRect(new RectF(70, mCanvasHeight-15, 70+(mCanvasWidth-140)*mFleetSize/100, mCanvasHeight-5), 5, 5, mLinePaint);
    366342        }
    367343
     
    372348         */
    373349        private void updatePhysics() {
    374                 //Log.i("Gencon", "updatePhysics called");
    375                
    376350            long now = System.currentTimeMillis();
    377351
     
    380354            // by 100ms or whatever.
    381355            if (mLastTime > now) return;
    382 
     356           
    383357            synchronized(planetsLock) {
    384358                for(Planet p : planets) {
     
    392366                while(i.hasNext()){
    393367                        f = i.next();
    394                         if(f.getNumShips() == 0) {
     368                        if(f.getNumShips() == 0)
    395369                                i.remove();
    396                         }else
     370                        else
    397371                                f.update(planets);
    398372                }
    399373            }
    400374
    401             mLastTime = now;
     375            mLastTime = now+50;
    402376        }
    403377    }
     
    434408        Log.i("Gencon", "Detected touch event");
    435409       
    436         if(event.getAction() == MotionEvent.ACTION_UP) {
    437                 if(70 <= event.getX() && event.getX() <= thread.mCanvasWidth-70 &&
    438                    thread.mCanvasHeight-15 <= event.getY() && event.getY() <= thread.mCanvasHeight-5) {
    439                         thread.mFleetSize = ((int)event.getX()-70)*100/(thread.mCanvasWidth-140);
     410        if(event.getAction() != MotionEvent.ACTION_DOWN)
     411                return true;
     412       
     413        synchronized(thread.planetsLock) {
     414                if(thread.planetSelected != null) {
     415                        Planet target = null;
     416                       
     417                        for(Planet p : thread.planets) {
     418                                if(p.contains((int)event.getX(), (int)event.getY())) {
     419                                        target = p;
     420                                        break;
     421                                }
     422                        }
     423                       
     424                        if(target != null && thread.planetSelected.getFaction() != 0) {
     425                                synchronized(thread.fleetsLock) {
     426                                Fleet f = new Fleet(thread.planetSelected, target, 1, 1);
     427                                f.setFaction(thread.planetSelected.getFaction());
     428                                thread.fleets.add(f);
     429                    }
     430                        }
     431                               
     432                        thread.planetSelected.unselect();
     433                        thread.planetSelected = null;
     434                }else {
     435                        for(Planet p : thread.planets) {
     436                                if(p.contains((int)event.getX(), (int)event.getY())) {
     437                                        p.select();
     438                                        thread.planetSelected = p;
     439                                        break;
     440                                }
     441                        }
    440442                }
    441         }else if(event.getAction() == MotionEvent.ACTION_DOWN) {
    442                 synchronized(thread.planetsLock) {
    443                         if(thread.planetSelected != null) {
    444                                 Planet target = null;
    445                                
    446                                 for(Planet p : thread.planets) {
    447                                         if(p.contains((int)event.getX(), (int)event.getY())) {
    448                                                 target = p;
    449                                                 break;
    450                                         }
    451                                 }
    452                                
    453                                 if(target != null && target != thread.planetSelected && thread.planetSelected.getFaction() != 0) {
    454                                         synchronized(thread.fleetsLock) {
    455                                         Fleet f = new Fleet(thread.planetSelected, target, thread.planetSelected.getNumShips()*thread.mFleetSize/100, thread.planetSelected.getFaction());
    456                                         f.setFaction(thread.planetSelected.getFaction());
    457                                         thread.fleets.add(f);
    458                             }
    459                                 }
    460                                        
    461                                 thread.planetSelected.unselect();
    462                                 thread.planetSelected = null;
    463                         }else {
    464                                 for(Planet p : thread.planets) {
    465                                         if(p.contains((int)event.getX(), (int)event.getY())) {
    466                                                 p.select();
    467                                                 thread.planetSelected = p;
    468                                                 break;
    469                                         }
    470                                 }
    471                         }
    472                 }
    473443        }
    474444       
Note: See TracChangeset for help on using the changeset viewer.