void InformationManager::onUnitDestroy( BWAPI::Unit* unit )
{
    // Sanity check
    if ( unit == NULL )
    {
        return;
    }

    onUnitEvade( unit );
    m_savedData[unit].m_exists = false;
    if ( BWAPI::Broodwar->self()->isEnemy( unit->getPlayer() ) )
    {
        // If this is an enemy unit we may need to remove a base location
        if ( unit->getType().isResourceDepot() )
        {
            BWTA::BaseLocation* b = BWTA::getNearestBaseLocation( unit->getTilePosition() );
            if ( m_enemyBaseCenters[b] == unit )
            {
                m_enemyBases.erase( b );
                m_enemyBaseCenters.erase( b );
            }
        }
    }
}
Exemple #2
0
void EventDispatcher::dispatchEvent(BWAPI::Event* e)
{
    switch(e->type)
	{
	case BWAPI::EventType::MatchStart:
		onMatchStart();
		break;
	case BWAPI::EventType::MatchEnd:
		onMatchEnd(e->isWinner);
		break;
    case BWAPI::EventType::MatchFrame:
        onMatchFrame();
        break;
    case BWAPI::EventType::MenuFrame:
        onMenuFrame();
        break;
    case BWAPI::EventType::SendText:
		onSendText(e->text);
        break;
    case BWAPI::EventType::ReceiveText:
		onReceiveText(e->player, e->text);
        break;
    case BWAPI::EventType::PlayerLeft:
        onPlayerLeft(e->player);
        break;
    case BWAPI::EventType::NukeDetect:
		onNukeDetect(e->position);
        break;
    case BWAPI::EventType::UnitDiscover:
        onUnitDiscover(e->unit);
        break;
    case BWAPI::EventType::UnitEvade:
        onUnitEvade(e->unit);
        break;
    case BWAPI::EventType::UnitShow:
        onUnitShow(e->unit);
        break;
    case BWAPI::EventType::UnitHide:
        onUnitHide(e->unit);
        break;
    case BWAPI::EventType::UnitCreate:
        onUnitCreate(e->unit);
        break;
    case BWAPI::EventType::UnitDestroy:
        onUnitDestroy(e->unit);
        break;
    case BWAPI::EventType::UnitMorph:
        onUnitMorph(e->unit);
        break;
    case BWAPI::EventType::UnitRenegade:
        onUnitRenegade(e->unit);
        break;
    case BWAPI::EventType::SaveGame:
        onSaveGame(e->text);
        break;
    case BWAPI::EventType::None:
        break;
    default:
        printf("error: Unknown event");
        break;
	}
}