Ignore:
File:
1 edited

Legend:

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

    r04a9a00 r69f6f01  
    1010import android.graphics.Color;
    1111import android.graphics.Paint;
     12import android.graphics.RectF;
     13import android.graphics.Paint.FontMetrics;
    1214import android.os.Bundle;
    1315import android.os.Handler;
     
    7779        public ArrayList<Fleet> fleets;
    7880        public Planet planetSelected;
     81       
     82        int mFleetSize;
    7983
    8084        public DrawingThread(SurfaceHolder surfaceHolder, Context context,
     
    101105           
    102106            fleets = new ArrayList<Fleet>();
     107           
     108            mFleetSize = 50;
    103109        }
    104110
     
    125131        public void run() {
    126132            while (mRun) {
     133                //Log.i("Gencon", "run called");
     134               
    127135                Canvas c = null;
    128136                try {
    129137                    c = mSurfaceHolder.lockCanvas(null);
    130                     synchronized(mSurfaceHolder) {
    131                         if(mMode == STATE_RUNNING)
    132                                 updatePhysics();
     138                    synchronized (mSurfaceHolder) {
     139                        //Log.i("Gencon", "about to call stuff: mode is "+mMode);
     140                       
     141                        if (mMode == STATE_RUNNING) updatePhysics();
    133142                        doDraw(c);
    134143                    }
     
    236245                                if(Planet.collisionDetected(p, planets)) {
    237246                                        x--;
    238                                 }else if(p.getX()-p.getRadius() < 0 || mCanvasWidth<=p.getX()+p.getRadius() ||
    239                                                  p.getY()-p.getRadius() < 0 || mCanvasHeight<=p.getY()+p.getRadius()) {
     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()) {
    240249                                        x--;
    241250                                }else {
     
    340349                }
    341350                }
     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);
    342366        }
    343367
     
    348372         */
    349373        private void updatePhysics() {
     374                //Log.i("Gencon", "updatePhysics called");
     375               
    350376            long now = System.currentTimeMillis();
    351377
     
    354380            // by 100ms or whatever.
    355381            if (mLastTime > now) return;
    356            
     382
    357383            synchronized(planetsLock) {
    358384                for(Planet p : planets) {
     
    366392                while(i.hasNext()){
    367393                        f = i.next();
    368                         if(f.getNumShips() == 0)
     394                        if(f.getNumShips() == 0) {
    369395                                i.remove();
    370                         else
     396                        }else
    371397                                f.update(planets);
    372398                }
    373399            }
    374400
    375             mLastTime = now+50;
     401            mLastTime = now;
    376402        }
    377403    }
     
    408434        Log.i("Gencon", "Detected touch event");
    409435       
    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                         }
     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);
    442440                }
     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                }
    443473        }
    444474       
Note: See TracChangeset for help on using the changeset viewer.