Exemplo n.º 1
0
  public void set(float x, float y, float vx, float vy) {
    //		if( y < -RatioAdjustment.MalletD() ){
    vec.set(-vx, -vy);

    float angle = GeneralCalc.RadToDegree(vec.getAngle());
    Log.d("set", "koko set ( " + x + ", " + y + ", " + angle);

    cir.set(x, y, cir.getR());
    dst.set(
        cir.getDrawX(),
        cir.getDrawY(),
        cir.getDrawX() + packimg.getWidth(),
        cir.getDrawY() + packimg.getHeight());

    // 向きに合わせて回転
    matrix.setRotate(angle);
    zimg =
        Bitmap.createBitmap(packimg, 0, 0, packimg.getWidth(), packimg.getHeight(), matrix, true);
    src.set(0, 0, zimg.getWidth(), zimg.getHeight());
    clientflag = true;
    //
    //		}
  }
Exemplo n.º 2
0
  @Override
  public boolean onUpdate() {

    if (!clientflag) {

      Circle nc = new Circle(cir.getX() + vec.getX(), cir.getY() + vec.getY(), cir.getR());

      // 自分のマレットとの接触判定
      int n = parent.CountMallet();
      for (int i = 0; i < n; i++) {
        if ((check_mallet_state & (1 << i)) > 0) {
          Mallet m = parent.GetMallet(i);
          Circle mc = m.getCircle();
          if (GeneralCalc.CheckCircleInCircle(nc, mc)) {
            float rad = GeneralCalc.CircleToCircleAngle(mc, nc);
            float force = GeneralCalc.CircleInCircleSize(nc, mc);
            force = force > 12f ? 12f : force;
            vec.setF(GeneralCalc.CircleInCircleSize(nc, mc), rad);
            //						Log.d("setF","mc:: ("+mc.getX()+","+mc.getY()+") nc::
            // ("+nc.getX()+","+nc.getY()+") angle = "+GeneralCalc.RadToDegree(rad));
            nc.setX(nc.getX() + vec.getX());
            nc.setY(nc.getY() + vec.getY());
            break;
          }
        }
      }

      // 左端チェック
      if (GeneralCalc.CheckCircleRefLeft(nc)) {
        nc.setX(2 * refl - (nc.getX() - nc.getR()));
        vec.revX();
      }
      // 右端チェック
      if (GeneralCalc.CheckCircleRefRight(nc)) {
        nc.setX(2 * refr - (nc.getX() + nc.getR()));
        vec.revX();
      }

      cir.set(nc);

      int dx = cir.getDrawX(), dy = cir.getDrawY();
      //			Log.d("dx dy","dx = "+dx+" dy = "+dy+" angle = " +
      // GeneralCalc.RadToDegree(vec.getAngle()));
      dst.set(dx, dy, dx + packimg.getWidth(), dy + packimg.getHeight());

      // 向きに合わせて回転
      tmpAngle = GeneralCalc.RadToDegree(vec.getAngle());
      matrix.setRotate(tmpAngle);
      zimg =
          Bitmap.createBitmap(packimg, 0, 0, packimg.getWidth(), packimg.getHeight(), matrix, true);
      src.set(0, 0, zimg.getWidth(), zimg.getHeight());
    }

    if (cir.getY() > RatioAdjustment.GoalY()) {
      parent.gameEnd();
      parent.setLose();
    } else if (cir.getY() >= RatioAdjustment.PackR()) {
      mineflag = true;
    } else if (mineflag && cir.getY() < RatioAdjustment.PackR()) {
      parent.setSendStart();
      mineflag = false;
    }

    clientflag = false;
    check_mallet_state = 0;
    return true;
  }