void PonyAnimation::updateState(unsigned added, unsigned /*removed*/) { if (added & Creature::TurnedLeft) { if (!m_flip) { scale(-1, 1); translate(-1, 0); m_flip = true; } } else if (added & Creature::TurnedRight) { if (m_flip) { scale(-1, 1); translate(-1, 0); m_flip = false; } } if (strcmp(currentSprite(), "preparePunch") == 0) return; else if (strcmp(currentSprite(), "prepareJump") == 0) return; if (owner()->currentState() & Creature::OnGround) { if (owner()->currentState() & (Creature::GoingLeft | Creature::GoingRight)) setCurrentSprite("walking"); else setCurrentSprite("standStill"); } }
void E_Tortoise_Fly::SetSprite() { if (status == 0) { if (m_hSpeed.x<0) setCurrentSprite(E_FlyTortoiseGreenLeft); else setCurrentSprite(E_FlyTortoiseGreenRight); } else if (status == 1) { if (m_hSpeed.x<0) setCurrentSprite(E_TortoiseGreenLeft); else setCurrentSprite(E_TortoiseGreenRight); } else if (status == 2) { if (m_hSpeed.x<0) setCurrentSprite(E_TortoiseshellGreenLeft); else setCurrentSprite(E_TortoiseshellGreenRight); } else { if (m_hSpeed.x<0) setCurrentSprite(E_TortoiseshellGreenLeftReverse); else setCurrentSprite(E_TortoiseshellGreenRightReverse); } }
static int drawScreen(ShellEffect *ef) { float x,y; State *state = (State*)ef->data; TravelingSprite *sprite = &state->currentSprite; //Calculate x and y float t = sprite->location; x = ((1-t)*(1-t))*sprite->x1 + 2*t*(1-t)*sprite->x2 + t*t*sprite->x3; y = ((1-t)*(1-t))*sprite->y1 + 2*t*(1-t)*sprite->y2 + t*t*sprite->y3; x *= ef->x; y *= ef->y; //draw it clearSpriteAtPoint(sprite->width, sprite->height, sprite->oldx, sprite->oldy, ef->screen); drawSpriteAtPoint(sprite->spriteArray,sprite->width, sprite->height, x, y, ef->screen); sprite->oldx = x; sprite->oldy = y; //update the location and speed sprite->location += sprite->speed; sprite->speed += sprite->accelleration; if(sprite->location > 1) { if(sprite->nextSprite==NULL) return -1; //we are done //Otherwise, if there is another sprite, lets move on to that one setCurrentSprite(ef, sprite->nextSprite); srClearScreen(ef->screen); } return 100; }
ShellEffect *effectTravelingSprite(const EffectTravelingSpriteDef list[]) { State *state = (State*)malloc(sizeof(State)); if(state==NULL) return NULL; state->spriteDefinition = copySpriteDefList(list); ShellEffect *rv = allocEffect(drawScreen, NULL, effectFree, NULL, state); if(rv==NULL) return rv; setCurrentSprite(rv, list); return rv; }
void Pony::initialize(QWorld* w) { Creature::initialize(w); m_body.initialize(m_bodySource.c_str()); m_body.translate(-0.5 * size().width(), -0.5 * size().height()); m_body.scale(size().width(), size().height()); m_wings.initialize(m_wingsSource.c_str()); m_wings.translate(-0.5 * size().width(), -0.5 * size().height()); m_wings.scale(size().width(), size().height()); setCurrentSprite("standStill"); }
void E_Tortoise_Fly::Load() { E_FlyTortoiseGreenLeft = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_FlyTortoiseGreenLeft); E_FlyTortoiseGreenRight = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_FlyTortoiseGreenRight); E_TortoiseGreenLeft = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseGreenLeft); E_TortoiseGreenRight = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseGreenRight); E_TortoiseshellGreenLeft = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseshellGreenLeft); E_TortoiseshellGreenRight = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseshellGreenRight); E_TortoiseshellGreenLeftReverse = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseshellGreenLeftReverse); E_TortoiseshellGreenRightReverse = ResourcesManager::GetInstance()->GetSprite(SpriteID::E_TortoiseshellGreenRightReverse); setCurrentSprite(E_FlyTortoiseGreenLeft); Object::Load(); status = 0; m_hState = ON_SPACE; m_hSpeed.x = -2; m_hSpeed.y = -2; IsControl = false; timelife = 0; }
void Pony::punchRequested() { setCurrentSprite("preparePunch"); }
void Pony::jumpRequested() { setCurrentSprite("prepareJump"); }