Пример #1
0
void cRAI::EnemyEnterLOS(int enemy)
{
	if( RAIDEBUGGING ) *l<<"\nEnemyEnterLOS("<<enemy<<")";
	if( cb->GetUnitHealth(enemy) <= 0 ) // ! Work Around:  Spring-Version(v0.72b1-0.76b1)
	{
		DebugEnemyEnterLOSError++;
		*l<<"\nWARNING: EnemyEnterLOS("<<enemy<<"): enemy is either dead or not in LOS";
		return;
	}
	DebugEnemyEnterLOS++;
	if( Enemies.find(enemy) == Enemies.end() )
		Enemies.insert(iePair(enemy,EnemyInfo()));
	EnemyInfo *E = &Enemies.find(enemy)->second;
	E->inLOS=true;
	E->ud=cb->GetUnitDef(enemy);
	E->udr=&UDH->UDR.find(E->ud->id)->second;
	if( E->ud->speed == 0 )
	{
		E->position = cb->GetUnitPos(enemy);
		E->posLocked = true;
	}
	else if( E->posLocked )
	{	// just in case the id is being reused
		E->posLocked = false;
	}

	UM->EnemyEnterLOS(enemy,E);
	B->BP->EResourceEnterLOS(enemy,E);
	if( RAIDEBUGGING ) *l<<"#";
}
Пример #2
0
Enemy::Enemy(EnemyInfo::EnemyData::enemy_type type, EnemyInfo::EnemyData::enemy_rank rank) : Entity() {
	this->type = EntityData::entity_type::ENEMY;
	direction = Entity::Direction::LEFT;

	movementCounter = 0;
	movementBoundaries = b2Vec2(0, 100);

	cEnemyInfo = EnemyInfo(100, 20, 6.0f, type, rank);
}
Пример #3
0
void cRAI::EnemyEnterRadar(int enemy)
{
	if( RAIDEBUGGING ) *l<<"\nEnemyEnterRadar("<<enemy<<")";
	if( cb->GetUnitPos(enemy).x <= 0 && cb->GetUnitPos(enemy).y <= 0 && cb->GetUnitPos(enemy).z <= 0 ) // ! Work Around:  Spring-Version(v0.72b1-0.76b1)
	{
		DebugEnemyEnterRadarError++;
		*l<<"\nWARNING: EnemyEnterRadar("<<enemy<<"): enemy position is invalid";
		return;
	}
	DebugEnemyEnterRadar++;
	if( Enemies.find(enemy) == Enemies.end() )
		Enemies.insert(iePair(enemy,EnemyInfo()));
	EnemyInfo *E = &Enemies.find(enemy)->second;
	E->inRadar=true;
	UM->EnemyEnterRadar(enemy,E);
	if( RAIDEBUGGING ) *l<<"#";
}
Пример #4
0
void EnemyInfoController::pushEnemyData(CCDictionary* dict)
{
    string uuid = dict->valueForKey("uuid")->getCString();
    EnemyInfo info = EnemyInfo(dict);
    if (info.allianceId == GlobalData::shared()->playerInfo.allianceInfo.uid) {
            if (info.defType== Trebuchet) {
                return;
            }
       
    }
    bool _tmpB = true;
    std::vector<EnemyInfo>::iterator it = m_enemyInfos.begin();
    for (int i=0; i<m_enemyInfos.size(); i++) {
        if (m_enemyInfos[i].uuid == info.uuid)
        {
            if (dict->objectForKey("et")) {
                m_enemyInfos[i].stampTime = dict->valueForKey("et")->doubleValue()/1000;
                m_enemyInfos[i].arrivalTime = m_enemyInfos[i].stampTime;
                if (m_enemyInfos[i].arrivalTime>0) {
                    m_enemyInfos[i].arrivalTime = GlobalData::shared()->changeTime(m_enemyInfos[i].arrivalTime);
                }
            }else {
                m_enemyInfos.erase(it);
                m_enemyInfos.push_back(info);
            }
            
//            m_enemyInfos[i].stampTime = info.stampTime;
//            m_enemyInfos[i].arrivalTime = info.arrivalTime;
            _tmpB = false;
            break;
        }
        it++;
    }
    if (_tmpB && info.name!="") {
        m_enemyInfos.push_back(info);
    }
    CCSafeNotificationCenter::sharedNotificationCenter()->postNotification(ENEMY_INFO_LIST_CHANGE);
}
Пример #5
0
void EnemyInfoController::initEnemyData(CCDictionary* dict)
{
    auto arr = dynamic_cast<CCArray*>(dict->objectForKey("enemy"));
    if(arr==NULL) {
        return;
    }
    CCDictionary* item = NULL;
    m_enemyInfos.clear();
    for (int i=0; i<arr->count(); i++) {
        item = _dict(arr->objectAtIndex(i));
        EnemyInfo info = EnemyInfo(item);
        m_enemyInfos.push_back(info);
    }
    m_ignorInfos.clear();
    std::string ignoreStr = GlobalData::shared()->playerInfo.uid + "WTIgnoreList";
    std::string ignoreList = CCUserDefault::sharedUserDefault()->getStringForKey(ignoreStr.c_str(), "");
    vector<std::string> vector1;
    CCCommonUtils::splitString(ignoreList, "|", vector1);
    int num = vector1.size();
    for (int i = 0; i < num; i++) {
        for (int j = 0; j < m_enemyInfos.size(); j++) {
            if (m_enemyInfos[j].uuid == vector1[i]) {
                m_ignorInfos.push_back(m_enemyInfos[j]);
                break;
            }
        }
    }
    ignoreList = "";
    for (int i = 0; i<m_ignorInfos.size(); i++) {
        ignoreList.append(m_ignorInfos[i].uuid);
        if (i != m_ignorInfos.size() - 1) {
            ignoreList.append("|");
        }
    }
    m_ignorInfos.clear();
    CCUserDefault::sharedUserDefault()->setStringForKey(ignoreStr.c_str(), ignoreList.c_str());
    CCUserDefault::sharedUserDefault()->flush();
}