const char* EChannel::FindEntityName(ECPlayer* pl) { static Entity_ID num; assert(sizeof num == 3); num[0] = 'A'; num[1] = 'A'; num[2] = '\0'; bool unchecked = false; BEntityVector ev = pl ? pl->Entities()->List() : Map()->Neutres()->List(); do { BEntityVector::iterator it; for(it = ev.begin(); it != ev.end() && strcmp((*it)->ID(), num); it++); if(it == ev.end()) unchecked = true; else { ev.erase(it); if(num[1] < 'Z') num[1]++; else if(num[1] < 'a') num[1] = 'a'; else if(num[1] < 'z') num[1]++; else if(num[0] >= 'z') break; else { if(num[0] < 'Z') num[0]++; else if(num[0] < 'a') num[0] = 'a'; else num[0]++; num[1] = 'A'; } } } while(!unchecked); if(!unchecked) throw ECExcept(VBName(unchecked), "Il y a trop d'unités !!"); return num; }