本文整理汇总了C++中CUnitTypeData::IsFactory方法的典型用法代码示例。如果您正苦于以下问题:C++ CUnitTypeData::IsFactory方法的具体用法?C++ CUnitTypeData::IsFactory怎么用?C++ CUnitTypeData::IsFactory使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CUnitTypeData
的用法示例。
在下文中一共展示了CUnitTypeData::IsFactory方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetFACTORY
string CUBuild::GetFACTORY(){
NLOG("CUBuild::GetFACTORY");
const vector<CommandDescription>* di = G->cb->GetUnitCommands(uid);
if(di == 0) return string("");
list<string> possibles;
float best_score = 0;
string best = "";
for(vector<CommandDescription>::const_iterator is = di->begin(); is != di->end();++is){
if(is->id<0){
CUnitTypeData* p = G->UnitDefLoader->GetUnitTypeDataByName(is->name);
if(p->IsFactory()){
if(!G->Pl->feasable(p,utd)) continue;
if(p->IsUWStructure()!=(water||G->info->spacemod)) continue;
float temp = G->efficiency->GetEfficiency(p->GetName());
temp /= (p->GetUnitDef()->energyCost+(p->GetUnitDef()->metalCost*45));
int r = G->mrand()%max(int(temp/4),1)+1;
temp += (float)abs(r);
if(temp > best_score){
best_score = temp;
best = p->GetName();
}
}
}
}
return best;
}
示例2: LoadTaskList
bool CConfigTaskManager::LoadTaskList(){
NLOG("CConfigTaskManager::LoadTaskList");
CUnit* u = G->unit_array[unit];
CUnitTypeData* utd = u->GetUnitDataType();
vector<string> vl;
string sl;
if(G->Cached->cheating){
sl= G->Get_mod_tdf()->SGetValueMSG(string("TASKLISTS\\CHEAT\\")+utd->GetName());
}else{
sl = G->Get_mod_tdf()->SGetValueMSG(string("TASKLISTS\\NORMAL\\")+utd->GetName());
}
tolowercase(sl);
trim(sl);
string us = utd->GetName();
if(sl != string("")){
CTokenizer<CIsComma>::Tokenize(vl, sl, CIsComma());
if(vl.empty() == false){
int randnum = G->mrand()%vl.size();
us = vl.at(min(randnum,max(int(vl.size()-1),1)));
}
}
string s = G->Get_mod_tdf()->SGetValueMSG(string("TASKLISTS\\LISTS\\")+us);
if(s.empty()){
G->L.print(" error loading tasklist for unit :: \"" + us + "\" :: buffer empty, most likely because of an empty list");
nolist=true;
return false;
}
tolowercase(s);
trim(s);
vector<string> v;
CTokenizer<CIsComma>::Tokenize(v, s, CIsComma());
if(v.empty() == false){
G->L.print("loading contents of tasklist :: " + us + " :: filling tasklist with #" + to_string(v.size()) + " items");
bool polate=false;
bool polation = G->info->rule_extreme_interpolate;
btype bt = G->Manufacturer->GetTaskType(G->Get_mod_tdf()->SGetValueDef("b_na","AI\\interpolate_tag"));
if(utd->IsFactory()){
polation = false;
}
if(bt == B_NA){
polation = false;
}
// TASKS LOADING
for(std::vector<string>::iterator vi = v.begin(); vi != v.end(); ++vi){
if(polation){
if(polate){
boost::shared_ptr<IModule> t(new CKeywordConstructionTask(G,u->GetID(),bt));
tasks.push_back(t);
}
polate = !polate;
}
std::string q = *vi;
trim(q);
tolowercase(q);
CUnitTypeData* b = G->UnitDefLoader->GetUnitTypeDataByName(q);
if(b != 0){
boost::shared_ptr<IModule> t(new CUnitConstructionTask(G,u->GetID(),utd,b));
tasks.push_back(t);
}else if(q == string("")){
continue;
}else if(q == string("b_na")){
continue;
} else if(q == string("no_rule_interpolation")){
polation=false;
} else if(q == string("rule_interpolate")){
polation=true;
}else if(q == string("base_pos")){
G->Map->base_positions.push_back(G->GetUnitPos(u->GetID()));
} else if(q == string("gaia")){
G->info->gaia = true;
} else if(q == string("not_gaia")){
G->info->gaia = false;
} else if(q == string("switch_gaia")){
G->info->gaia = !G->info->gaia;
} else if(q == string("b_factory")){
boost::shared_ptr<IModule> t(new CKeywordConstructionTask(G,u->GetID(),B_FACTORY));
tasks.push_back(t);
} else if(q == string("b_power")){
boost::shared_ptr<IModule> t(new CKeywordConstructionTask(G,u->GetID(),B_POWER));
tasks.push_back(t);
} else if(q == string("b_defence")){
boost::shared_ptr<IModule> t(new CKeywordConstructionTask(G,u->GetID(),B_DEFENCE));
tasks.push_back(t);
//.........这里部分代码省略.........