Robert::Robert(double x, double y) : PhysicsSprite("images/spr_robert.png") { setPosition(x, y); // animations: // 0 - standing // 1 - walking // 2 - attacking // 3 - get hit // ANIMATION SETUP // setNumberOfAnimations(4); setSpriteFrameSize(128,128); addSpriteAnimRow(0, 0, 256, 128, 0, 1); // standing animation - 0 setAnimationSpeed(0, 0.1); addSpriteAnimRow(1, 0, 384, 128, 0, 4); // walking animation - 1 setAnimationSpeed(1, 0.25); addSpriteAnimRow(2, 0, 128, 128, 0, 5); // attacking animation - 2 setAnimationSpeed(2, 0.25); setAnimationLoop(2, false); addSpriteAnimRow(3, 0, 0, 128, 0, 2); // hit animation - 3 setAnimationSpeed(3, 0.1); setAnimationLoop(3, false); setCurrentAnimation(0); // PHYSICAL PROPERTIES // mass = 50; airDrag = 0.1; groundFriction = 0.75; // (airGroundFriction and gravity are left to defaults) hitbox = Hitbox(40, 0, 48, 117); setCenter(64, 58); health = 3; // BEHAVIORAL STATE VARIABLE(S) // walking = false; attacking = false; gotHit = false; thrown = false; willAttack = false; }
void ModelEntityItem::setAnimationSettings(const QString& value) { // the animations setting is a JSON string that may contain various animation settings. // if it includes fps, currentFrame, or running, those values will be parsed out and // will over ride the regular animation settings QJsonDocument settingsAsJson = QJsonDocument::fromJson(value.toUtf8()); QJsonObject settingsAsJsonObject = settingsAsJson.object(); QVariantMap settingsMap = settingsAsJsonObject.toVariantMap(); if (settingsMap.contains("fps")) { float fps = settingsMap["fps"].toFloat(); setAnimationFPS(fps); } // old settings used frameIndex if (settingsMap.contains("frameIndex")) { float currentFrame = settingsMap["frameIndex"].toFloat(); #ifdef WANT_DEBUG if (isAnimatingSomething()) { qCDebug(entities) << "ModelEntityItem::setAnimationSettings() calling setAnimationFrameIndex()..."; qCDebug(entities) << " model URL:" << getModelURL(); qCDebug(entities) << " animation URL:" << getAnimationURL(); qCDebug(entities) << " settings:" << value; qCDebug(entities) << " settingsMap[frameIndex]:" << settingsMap["frameIndex"]; qCDebug(entities" currentFrame: %20.5f", currentFrame); } #endif setAnimationCurrentFrame(currentFrame); } if (settingsMap.contains("running")) { bool running = settingsMap["running"].toBool(); if (running != getAnimationIsPlaying()) { setAnimationIsPlaying(running); } } if (settingsMap.contains("firstFrame")) { float firstFrame = settingsMap["firstFrame"].toFloat(); setAnimationFirstFrame(firstFrame); } if (settingsMap.contains("lastFrame")) { float lastFrame = settingsMap["lastFrame"].toFloat(); setAnimationLastFrame(lastFrame); } if (settingsMap.contains("loop")) { bool loop = settingsMap["loop"].toBool(); setAnimationLoop(loop); } if (settingsMap.contains("hold")) { bool hold = settingsMap["hold"].toBool(); setAnimationHold(hold); } _dirtyFlags |= Simulation::DIRTY_UPDATEABLE; }
BoxBot::BoxBot(double x, double y) : PhysicsSprite("images/spr_boxbot.png") { setPosition(x, y); // animations: // 0 - standing // 1 - walking // 2 - attacking // 3 - get hit // ANIMATION SETUP // setNumberOfAnimations(4); setSpriteFrameSize(128,128); addSpriteAnimRow(0, 0, 0, 128, 0, 1); // standing animation - 0 setAnimationSpeed(0, 0.1); addSpriteAnimRow(1, 0, 384, 128, 0, 2); // walking animation - 1 setAnimationSpeed(1, 0.1); addSpriteAnimRow(2, 0, 128, 128, 0, 7); // attacking animation - 2 setAnimationSpeed(2, 0.25); setAnimationLoop(2, false); addSpriteAnimRow(3, 0, 256, 128, 0, 2); // hit animation - 3 setAnimationSpeed(3, 0.1); setAnimationLoop(3, false); setCurrentAnimation(1); // PHYSICAL PROPERTIES // mass = 50; airDrag = 0.1; groundFriction = 0.75; // (airGroundFriction and gravity are left to defaults) hitbox = Hitbox(44, 0, 30, 110); setCenter(35, 54); // BEHAVIORAL STATE VARIABLE(S) // walking = true; }
void ParticleEffectEntityItem::setAnimationSettings(const QString& value) { // the animations setting is a JSON string that may contain various animation settings. // if it includes fps, frameIndex, or running, those values will be parsed out and // will over ride the regular animation settings QJsonDocument settingsAsJson = QJsonDocument::fromJson(value.toUtf8()); QJsonObject settingsAsJsonObject = settingsAsJson.object(); QVariantMap settingsMap = settingsAsJsonObject.toVariantMap(); if (settingsMap.contains("fps")) { float fps = settingsMap["fps"].toFloat(); setAnimationFPS(fps); } if (settingsMap.contains("frameIndex")) { float frameIndex = settingsMap["frameIndex"].toFloat(); #ifdef WANT_DEBUG if (isAnimatingSomething()) { qCDebug(entities) << "ParticleEffectEntityItem::setAnimationSettings() calling setAnimationFrameIndex()..."; qCDebug(entities) << " settings:" << value; qCDebug(entities) << " settingsMap[frameIndex]:" << settingsMap["frameIndex"]; qCDebug(entities, " frameIndex: %20.5f", frameIndex); } #endif setAnimationFrameIndex(frameIndex); } if (settingsMap.contains("running")) { bool running = settingsMap["running"].toBool(); if (running != getAnimationIsPlaying()) { setAnimationIsPlaying(running); } } if (settingsMap.contains("firstFrame")) { float firstFrame = settingsMap["firstFrame"].toFloat(); setAnimationFirstFrame(firstFrame); } if (settingsMap.contains("lastFrame")) { float lastFrame = settingsMap["lastFrame"].toFloat(); setAnimationLastFrame(lastFrame); } if (settingsMap.contains("loop")) { bool loop = settingsMap["loop"].toBool(); setAnimationLoop(loop); } if (settingsMap.contains("hold")) { bool hold = settingsMap["hold"].toBool(); setAnimationHold(hold); } if (settingsMap.contains("startAutomatically")) { bool startAutomatically = settingsMap["startAutomatically"].toBool(); setAnimationStartAutomatically(startAutomatically); } _animationSettings = value; _dirtyFlags |= EntityItem::DIRTY_UPDATEABLE; }