| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #include "Jewel.h"
- #include "shared.h"
- const Vector2 JewelSize(100, 100);
- Jewel::Jewel(): _swaping(false), _exploding(false), _dead(false), _falling(false)
- {
- _type = rand() % 6 + 1;
- _view = new Sprite;
- char name[255];
- safe_sprintf(name, "jewel%d", _type);
- ResAnim* rs = res.getResAnim(name);
- _view->setResAnim(rs);
- //set pilot to center of sprite
- Vector2 center = _view->getSize() / 2;
- //round center to avoid blurred image
- center.x = int(center.x);
- center.y = int(center.y);
- _view->setAnchorInPixels(center);
- }
- spActor Jewel::getView() const
- {
- return _view;
- }
- int Jewel::getType() const
- {
- return _type;
- }
- void Jewel::explode()
- {
- _exploding = true;
- float angle = 360 * (rand() % 2 ? -1 : 1);
- spTween tween = _view->addTween(Actor::TweenRotationDegrees(angle), 500);
- _view->addTween(Actor::TweenAlpha(0), 500);
- tween->setDoneCallback(CLOSURE(this, &Jewel::exploded));
- }
- void Jewel::exploded(Event*)
- {
- _dead = true;
- _view->detach();
- }
- void Jewel::select()
- {
- _view->addTween(Actor::TweenRotation(1), 500, -1, true);
- }
- void Jewel::unselect()
- {
- _view->removeTweens(false);
- _view->addTween(Actor::TweenRotation(0), 250);
- }
- void Jewel::fall(const Vector2& pos)
- {
- _falling = true;
- _view->addTween(Actor::TweenPosition(pos), 300) ->setDoneCallback(CLOSURE(this, &Jewel::fallen));
- }
- spTween Jewel::swap(const Vector2& pos)
- {
- _swaping = true;
- spTween tween = _view->addTween(Actor::TweenPosition(pos), 500);
- tween->addDoneCallback(CLOSURE(this, &Jewel::swapped));
- return tween;
- }
- void Jewel::swapped(Event*)
- {
- _swaping = false;
- }
- void Jewel::fallen(Event*)
- {
- _falling = false;
- }
|