Jewel.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "Jewel.h"
  2. #include "shared.h"
  3. const Vector2 JewelSize(100, 100);
  4. Jewel::Jewel(): _swaping(false), _exploding(false), _dead(false), _falling(false)
  5. {
  6. _type = rand() % 6 + 1;
  7. _view = new Sprite;
  8. char name[255];
  9. safe_sprintf(name, "jewel%d", _type);
  10. ResAnim* rs = res.getResAnim(name);
  11. _view->setResAnim(rs);
  12. //set pilot to center of sprite
  13. Vector2 center = _view->getSize() / 2;
  14. //round center to avoid blurred image
  15. center.x = int(center.x);
  16. center.y = int(center.y);
  17. _view->setAnchorInPixels(center);
  18. }
  19. spActor Jewel::getView() const
  20. {
  21. return _view;
  22. }
  23. int Jewel::getType() const
  24. {
  25. return _type;
  26. }
  27. void Jewel::explode()
  28. {
  29. _exploding = true;
  30. float angle = 360 * (rand() % 2 ? -1 : 1);
  31. spTween tween = _view->addTween(Actor::TweenRotationDegrees(angle), 500);
  32. _view->addTween(Actor::TweenAlpha(0), 500);
  33. tween->setDoneCallback(CLOSURE(this, &Jewel::exploded));
  34. }
  35. void Jewel::exploded(Event*)
  36. {
  37. _dead = true;
  38. _view->detach();
  39. }
  40. void Jewel::select()
  41. {
  42. _view->addTween(Actor::TweenRotation(1), 500, -1, true);
  43. }
  44. void Jewel::unselect()
  45. {
  46. _view->removeTweens(false);
  47. _view->addTween(Actor::TweenRotation(0), 250);
  48. }
  49. void Jewel::fall(const Vector2& pos)
  50. {
  51. _falling = true;
  52. _view->addTween(Actor::TweenPosition(pos), 300) ->setDoneCallback(CLOSURE(this, &Jewel::fallen));
  53. }
  54. spTween Jewel::swap(const Vector2& pos)
  55. {
  56. _swaping = true;
  57. spTween tween = _view->addTween(Actor::TweenPosition(pos), 500);
  58. tween->addDoneCallback(CLOSURE(this, &Jewel::swapped));
  59. return tween;
  60. }
  61. void Jewel::swapped(Event*)
  62. {
  63. _swaping = false;
  64. }
  65. void Jewel::fallen(Event*)
  66. {
  67. _falling = false;
  68. }