void CLiteObjectMgr::AddObject(GameBaseLite *pObject) { if (!pObject) { ASSERT(!"NULL lite object insertion encountered"); return; } // Add it to the name map if (FindObjectByName(pObject->GetName()) != 0) { Warn("Duplicate lite object name %s encountered", pObject->GetName()); if (IsObjectInList(m_aActiveObjects, pObject) || IsObjectInList(m_aInactiveObjects, pObject)) { ASSERT(!"Double-insertion encountered in lite object mgr"); return; } } m_aNameMap[pObject->GetName()] = pObject; // Add it to the proper list if (pObject->IsActive()) AddActiveObject(pObject); else AddInactiveObject(pObject); // Queue up an initial update m_aInitialUpdateObjects.push_back(pObject); // Your serialization IDs are dirty SetDirty(eDirty_SerializeIDs); }
void cMouseCursor :: Copy( cSprite *nCopyObject, double x, double y ) { cSprite *new_Sprite = Copy_Object( nCopyObject, x, y ); if( !new_Sprite ) { printf( "MouseCursor CopyObject invald source Object\n" ); return; } if( new_Sprite->array == ARRAY_MASSIVE ) { AddMassiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_PASSIVE ) { AddPassiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_ACTIVE ) { AddActiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_ENEMY ) { AddEnemyObject( new_Sprite ); } else { printf( "MouseCursor CopyObject unknown Array : %d\n", new_Sprite->array ); delete new_Sprite; new_Sprite = NULL; } }
void CLiteObjectMgr::ActivateObject(GameBaseLite *pObject) { // Make sure we're going about this the right way if (!pObject->IsActive()) { pObject->Activate(); return; } // Remove them from the inactive list if (!RemoveObjectFromList(m_aInactiveObjects, pObject)) { ASSERT(IsObjectInList(m_aActiveObjects, pObject)); return; } --m_nNumInactiveObjects; // Put it in the active list AddActiveObject(pObject); SetDirty(); }
void cMouseCursor :: Leveleditor_Update( void ) { if( !Leveleditor_CollsionCheck( posx, posy ) ) { string type; type.reserve( 60 ); if( iCollisionType == 1 ) // Massive { if( !MousePressed_left || !MouseObject ) { MouseObject = MassiveObjects[iCollisionNumber]; } if( MouseObject->halfmassive ) { type = "Halfmassive"; } else { type = "Massive"; } } else if( iCollisionType == 2 ) // Active { if( !MousePressed_left || !MouseObject ) { MouseObject = ActiveObjects[iCollisionNumber]; } if( MouseObject->type == TYPE_ENEMYSTOPPER ) { type = "Enemystopper"; } else if( MouseObject->type == TYPE_GOLDPIECE ) { type = "Goldpiece"; } else if( MouseObject->type == TYPE_MOON ) { type = "Moon (3-UP)"; } else if( MouseObject->type == TYPE_CLOUD ) { type = "Moving Cloud"; } else if( MouseObject->type == TYPE_HALFMASSIVE ) { if( !MouseObject->climbable ) { type = "Halfmassive"; } else { type = "Climbable"; } } else if( MouseObject->type == TYPE_GOLDBOX ) { type = "Gold box"; } else if( MouseObject->type == TYPE_BONUSBOX_MUSHROOM_FIRE ) { type = "Bonus box Mushroom - Fire"; } else if( MouseObject->type == TYPE_BONUSBOX_LIVE ) { type = "Bonus box Level-UP"; } else if( MouseObject->type == TYPE_SPINBOX ) { type = "Spin box"; } else if( MouseObject->type == TYPE_LEVELEXIT ) { cLevelExit *active = (cLevelExit*)MouseObject; if( active->levelchange == LVLCHANGE_WARP ) { type = "Levelexit (Warp)"; } else { type = "Levelexit (Beam)"; } } else { type = "Active"; } } else if( iCollisionType == 3 ) // Enemy { if( !MousePressed_left || !MouseObject ) { MouseObject = EnemyObjects[iCollisionNumber]; } if( MouseObject->type == TYPE_TURTLE ) { type = "Red Rurtle"; } else if( MouseObject->type == TYPE_GOOMBA ) { cGoomba *enemy = (cGoomba*)MouseObject; if( enemy->color == 1 ) // Red { type = "Blue Goomba"; } else { type = "Brown Goomba"; } } else if( MouseObject->type == TYPE_JPIRANHA ) { type = "Jumping Piranha"; } else if( MouseObject->type == TYPE_BANZAI_BILL ) { type = "Banzai Bill"; } else if( MouseObject->type == TYPE_REX ) { type = "Rex"; } else { type = "Enemy"; } } else if( iCollisionType == 4 ) // Player { if( !MousePressed_left || !MouseObject ) { MouseObject = (cSprite*)pPlayer; } type = "Maryo"; } else if( iCollisionType == 5 ) // Passive { if( !MousePressed_left || !MouseObject ) { MouseObject = PassiveObjects[iCollisionNumber]; } type = "Passive"; } else if( iCollisionType == 6 ) // Leveleditor Item Object { Menu_Item_Object *item = pLeveleditor->Get_Item_Object( iCollisionNumber + 1 ); if( item && !MousePressed_left ) { type = item->name; } else { type = ""; } if( !MouseObject ) { if( MousePressed_left ) { cSprite *new_Sprite = Copy_Object( item->Sprite_type, posx, posy ); if( !new_Sprite ) { printf( "Sprite copying Error\n" ); return; } if( new_Sprite->array == ARRAY_MASSIVE ) { AddMassiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_PASSIVE ) { AddPassiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_ACTIVE ) { AddActiveObject( new_Sprite ); } else if( new_Sprite->array == ARRAY_ENEMY ) { AddEnemyObject( new_Sprite ); } new_Sprite->posx = posx; new_Sprite->posy = posy; mouse_H = new_Sprite->rect.h/2; mouse_W = new_Sprite->rect.w/2; MouseObject = new_Sprite; } } else if( !MousePressed_left ) { MouseObject = NULL; } } else if( iCollisionType == 7 ) // Leveleditor Main Menu Object { Menu_Main_Object *item = pLeveleditor->Get_Main_Object( iCollisionNumber + 1 ); if( item && !MousePressed_left ) { type = item->name; } else { type = ""; } if( !MouseObject ) { if( MousePressed_left ) { if( item->Item_Menu_Id != MENU_FUNCTION ) { pLeveleditor->Load_Item_Menu( item->Item_Menu_Id ); pLeveleditor->Set_Main_Active( iCollisionNumber ); } else { item->pfunction(); MousePressed_left = 0; } } } else { MouseObject = NULL; } } else if( iCollisionType == 8 ) // Leveleditor Item Object Scroller { type = "Object Scroller"; if( !MouseObject && MousePressed_left ) { if( col_dir == DIR_LEFT ) { pLeveleditor->Item_scroller_left->active = 1; } else if( col_dir == DIR_RIGHT ) { pLeveleditor->Item_scroller_right->active = 1; } } else if( !MousePressed_left ) { MouseObject = NULL; } } else if( iCollisionType == 10 ) // A Dialog Box { if( iCollisionNumber >= 0 && ( pDialogManager->Get_Size() >= (unsigned int)iCollisionNumber ) ) { type = pDialogManager->Objects[iCollisionNumber]->identifier; if( MousePressed_left ) { pDialogManager->Objects[iCollisionNumber]->Get_Focus(); MousePressed_left = 0; } } } if( iCollisionType > 0 && iCollisionType < 6 && MouseObject ) { if( !MousePressed_left ) { if( iCollisionType == 4 || iCollisionType == 3 ) // If Player or Enemy ! { mouse_W = (int)( posx - MouseObject->startposx ); mouse_H = (int)( posy - MouseObject->startposy ); } else { mouse_W = (int)( posx - MouseObject->posx ); mouse_H = (int)( posy - MouseObject->posy ); } } SDL_Rect rect_pos; SDL_Surface *Position_info = NULL; char info[50]; rect_pos.x = mouseX + 20; rect_pos.y = mouseY + 35; sprintf( info ,"X : %d Y : %d", (int)MouseObject->posx, (int)MouseObject->posy ); Position_info = TTF_RenderText_Blended( font_16, info, colorBlack ); SDL_BlitSurface( Position_info, NULL, screen, &rect_pos ); SDL_FreeSurface( Position_info ); Position_info = TTF_RenderText_Blended( font_16, info, colorWhite ); rect_pos.x -= 2; rect_pos.y -= 2; SDL_BlitSurface( Position_info, NULL, screen, &rect_pos ); SDL_FreeSurface( Position_info ); } if( debugdisplay->counter <= 0 ) { sprintf( debugdisplay->text, "%s", type.c_str() ); debugdisplay->counter = 1; } } else { if( !MousePressed_left ) { MouseObject = NULL; if( !iCollisionType ) { mouse_W = 0; mouse_H = 0; } } } }