void SelectionWidget::ShowScriptList() { if (curSelect) return; curSelect = new ListSelectWnd("Select script"); curSelect->Selected.connect(boost::bind(&SelectionWidget::SelectScript, this, _1)); curSelect->WantClose.connect(boost::bind(&SelectionWidget::CleanWindow, this)); CAIScriptHandler::ScriptList scriptList = CAIScriptHandler::Instance().GetScriptList(); for (CAIScriptHandler::ScriptList::iterator it = scriptList.begin(); it != scriptList.end(); ++it) { curSelect->list->AddItem(*it, ""); } curSelect->list->SetCurrentItem(userScript); }
void SelectionWidget::UpdateAvailableScripts() { //FIXME: lua ai's should be handled in AIScriptHandler.cpp, too respecting the selected game and map // maybe also merge it with StartScriptGen.cpp availableScripts.clear(); // load selected archives to get lua ais AddArchive(userMod); AddArchive(userMap); std::vector< std::vector<InfoItem> > luaAIInfos = luaAIImplHandler.LoadInfos(); for(int i=0; i<luaAIInfos.size(); i++) { for (int j=0; j<luaAIInfos[i].size(); j++) { if (luaAIInfos[i][j].key==SKIRMISH_AI_PROPERTY_SHORT_NAME) availableScripts.push_back(info_getValueAsString(&luaAIInfos[i][j])); } } // close archives RemoveArchive(userMap); RemoveArchive(userMod); // add sandbox script to list availableScripts.push_back(SandboxAI); // add native ai's to the list, too (but second, lua ai's are prefered) CAIScriptHandler::ScriptList scriptList = CAIScriptHandler::Instance().GetScriptList(); for (CAIScriptHandler::ScriptList::iterator it = scriptList.begin(); it != scriptList.end(); ++it) { availableScripts.push_back(*it); } for (std::string &scriptName: availableScripts) { if (scriptName == userScript) { return; } } SelectScript(SelectionWidget::NoScriptSelect); }