Beispiel #1
0
 void GameLevel::removeActor(Actor* actor)
 {
     for (auto i = mActors.begin(); i != mActors.end(); ++i)
     {
         if (*i == actor)
         {
             mActors.erase(i);
             actorMapRemove(actor, actor->getPos().current());
             actorMapRemove(actor, actor->getPos().next());
             return;
         }
     }
     release_assert(false && "tried to remove actor that isn't in level");
 }
Beispiel #2
0
    void World::update(bool noclip)
    {
        mTicksSinceLastAnimUpdate++;
        mTicksPassed++;

        bool advanceAnims;


                        
        for(size_t i = 0; i < mActors.size(); i++)
        {
            Actor * actor = mActors[i];
            size_t animDivisor =actor->mAnimTimeMap[actor->getAnimState()];
            if(animDivisor == 0)
            {
                animDivisor=12;
            }
            advanceAnims  = !(mTicksPassed % (ticksPerSecond/animDivisor));
            actorMapRemove(mActors[i]);
            actor->update(noclip);
            if(advanceAnims)
            {

                if(!actor->mAnimPlaying && !actor->isDead())
                {
                    actor->mFrame = fmod((actor->mFrame + 1), (double)(actor->getCurrentAnim().animLength));
                }

                else if(actor->mAnimPlaying && actor->mFrame <= actor->getCurrentAnim().animLength-1)
                {
                    actor->mFrame++;
                }

                else if(actor->mAnimPlaying && actor->mFrame == actor->getCurrentAnim().animLength)
                {
                    actor->mAnimPlaying = false;
                }

                else if(!actor->mAnimPlaying && actor->mFrame < actor->getCurrentAnim().animLength-1)
                {
                    actor->mFrame++;
                }
            }            
            actorMapInsert(actor);
        }

        actorMapClear();
        for(size_t i = 0; i < mActors.size(); i++)
            actorMapInsert(mActors[i]);
    }
Beispiel #3
0
    void GameLevel::update(bool noclip)
    {
        for (size_t i = 0; i < mActors.size(); i++)
        {
            Actor* actor = mActors[i];

            actorMapRemove(actor);
            actor->update(noclip);
            actorMapInsert(actor);
        }

        actorMapRefresh();

        for (auto& p : mItemMap->mItems)
            p.second.update();
    }