void setEntityHealth(pent e, int hp){ e->hp = hp; if(hp <= 0){ killEntity(e); //deleteEntity(e); ????? } }
void World::killEntities(std::vector<Entity>& entities) { for(auto& i : entities) { killEntity(i); } }
// uppdaterar alla objekt void EntityManager::update() { if(mPlayerLife > 0) { for(EntityVector::size_type i = 0; i < mCharacters.size(); ++i) { //if(!mCantMoveCharacters) //{ mCharacters[i]->update(mPrimaryCharacter); //} //else //{ // Entity::EntityKind noCharacter = Entity::DOOR; // mCharacters[i]->update(noCharacter); //} } for(EntityVector::size_type i = 0; i < mEntities.size(); ++i) { if(mEntities[i]->getBaseKind() != Entity::CHARACTER) { mEntities[i]->update(mPrimaryCharacter); } } updatePlayerLife(); interact(); killEntity(); updatePlayerLife(); lifeAndMaskPosition(); updatePlayerPortrait(); updateBackgroundParalax(); } killPlayers(); }
void fireMapTrigger(char *name) { int i; char message[MAX_MESSAGE_LENGTH]; if (strlen(name) == 0) { return; } for (i=0;i<MAX_TRIGGERS;i++) { if (trigger[i].inUse == TRUE && strcmpignorecase(trigger[i].triggerName, name) == 0) { trigger[i].count++; if (trigger[i].targetType == UPDATE_OBJECTIVE) { snprintf(message, MAX_MESSAGE_LENGTH, "%s (%d / %d)", _(trigger[i].targetName), trigger[i].count, trigger[i].total); freeMessageQueue(); setInfoBoxMessage(60, 255, 255, 255, message); } if (trigger[i].count == trigger[i].total) { switch (trigger[i].targetType) { case UPDATE_OBJECTIVE: updateObjective(trigger[i].targetName); break; case ACTIVATE_ENTITY: activateEntitiesWithRequiredName(trigger[i].targetName, TRUE); break; case DEACTIVATE_ENTITY: activateEntitiesWithRequiredName(trigger[i].targetName, FALSE); break; case RUN_SCRIPT: runScript(trigger[i].targetName); break; case KILL_ENTITY: killEntity(trigger[i].targetName); break; case REMOVE_INVENTORY_ITEM: removeInventoryItemByObjectiveName(trigger[i].targetName); break; default: break; } trigger[i].inUse = FALSE; } } } }
static int luaKillEntity(lua_State *L){ pent e = lua_touserdata(L, 1); killEntity(e); lua_pushvalue(L, 1); return 1; }