void Player::Setup() { #if DESKTOP FileSystem* fs = GetFileSystem(); engineParameters_[EP_RESOURCE_PREFIX_PATHS] = fs->GetProgramDir() + ";" + fs->GetCurrentDir(); #endif engineParameters_[EP_RESOURCE_PATHS] = "Cache;Resources"; JSONFile file(context_); if (!file.LoadFile(ToString("%s%s", APK, "Settings.json"))) return; for (auto& pair : file.GetRoot().GetObject()) engineParameters_[pair.first] = pair.second.GetVariant(); }
FileSelector::FileSelector(Context* context) : Object(context), directoryMode_(false), ignoreEvents_(false) { window_ = new Window(context_); window_->SetLayout(LM_VERTICAL); titleLayout = new UIElement(context_); titleLayout->SetLayout(LM_HORIZONTAL); window_->AddChild(titleLayout); titleText_ = new Text(context_); titleLayout->AddChild(titleText_); closeButton_ = new Button(context_); titleLayout->AddChild(closeButton_); pathEdit_ = new LineEdit(context_); window_->AddChild(pathEdit_); fileList_ = new ListView(context_); window_->AddChild(fileList_); fileNameLayout_ = new UIElement(context_); fileNameLayout_->SetLayout(LM_HORIZONTAL); fileNameEdit_ = new LineEdit(context_); fileNameLayout_->AddChild(fileNameEdit_); filterList_ = new DropDownList(context_); fileNameLayout_->AddChild(filterList_); window_->AddChild(fileNameLayout_); buttonLayout_ = new UIElement(context_); buttonLayout_->SetLayout(LM_HORIZONTAL); buttonLayout_->AddChild(new UIElement(context_)); // Add spacer okButton_ = new Button(context_); okButtonText_ = new Text(context_); okButtonText_->SetAlignment(HA_CENTER, VA_CENTER); okButton_->AddChild(okButtonText_); buttonLayout_->AddChild(okButton_); buttonLayout_->AddChild(new UIElement(context_)); // Add spacer cancelButton_ = new Button(context_); cancelButtonText_ = new Text(context_); cancelButtonText_->SetAlignment(HA_CENTER, VA_CENTER); cancelButton_->AddChild(cancelButtonText_); buttonLayout_->AddChild(cancelButton_); buttonLayout_->AddChild(new UIElement(context_)); // Add spacer window_->AddChild(buttonLayout_); Vector<String> defaultFilters; defaultFilters.Push("*.*"); SetFilters(defaultFilters, 0); FileSystem* fileSystem = GetSubsystem<FileSystem>(); if (fileSystem) SetPath(fileSystem->GetCurrentDir()); // Focus the fileselector's filelist initially when created, and bring to front UI* ui = GetSubsystem<UI>(); if (ui) { ui->GetRoot()->AddChild(window_); ui->SetFocusElement(fileList_); window_->BringToFront(); } SubscribeToEvent(filterList_, E_ITEMSELECTED, HANDLER(FileSelector, HandleFilterChanged)); SubscribeToEvent(pathEdit_, E_TEXTFINISHED, HANDLER(FileSelector, HandlePathChanged)); SubscribeToEvent(fileNameEdit_, E_TEXTFINISHED, HANDLER(FileSelector, HandleOKPressed)); SubscribeToEvent(fileList_, E_ITEMSELECTED, HANDLER(FileSelector, HandleFileSelected)); SubscribeToEvent(fileList_, E_ITEMDOUBLECLICKED, HANDLER(FileSelector, HandleFileDoubleClicked)); SubscribeToEvent(fileList_, E_UNHANDLEDKEY, HANDLER(FileSelector, HandleFileListKey)); SubscribeToEvent(okButton_, E_RELEASED, HANDLER(FileSelector, HandleOKPressed)); SubscribeToEvent(cancelButton_, E_RELEASED, HANDLER(FileSelector, HandleCancelPressed)); SubscribeToEvent(closeButton_, E_RELEASED, HANDLER(FileSelector, HandleCancelPressed)); }
void AtomicTool::Start() { // Subscribe to events SubscribeToEvent(E_COMMANDERROR, HANDLER(AtomicTool, HandleCommandError)); SubscribeToEvent(E_COMMANDFINISHED, HANDLER(AtomicTool, HandleCommandFinished)); SubscribeToEvent(E_LICENSE_EULAREQUIRED, HANDLER(AtomicTool, HandleLicenseEulaRequired)); SubscribeToEvent(E_LICENSE_ACTIVATIONREQUIRED, HANDLER(AtomicTool, HandleLicenseActivationRequired)); SubscribeToEvent(E_LICENSE_ERROR, HANDLER(AtomicTool, HandleLicenseError)); SubscribeToEvent(E_LICENSE_SUCCESS, HANDLER(AtomicTool, HandleLicenseSuccess)); const Vector<String>& arguments = GetArguments(); ToolSystem* tsystem = new ToolSystem(context_); context_->RegisterSubsystem(tsystem); ToolEnvironment* env = new ToolEnvironment(context_); context_->RegisterSubsystem(env); //#ifdef ATOMIC_DEV_BUILD if (!env->InitFromJSON()) { ErrorExit(ToString("Unable to initialize tool environment from %s", env->GetDevConfigFilename().CString())); return; } if (!cliDataPath_.Length()) { cliDataPath_ = env->GetRootSourceDir() + "/Resources/"; } //#endif tsystem->SetCLI(); tsystem->SetDataPath(cliDataPath_); if (activationKey_.Length()) { DoActivation(); return; } else if (deactivate_) { DoDeactivation(); return; } BuildSystem* buildSystem = GetSubsystem<BuildSystem>(); SharedPtr<CommandParser> parser(new CommandParser(context_)); SharedPtr<Command> cmd(parser->Parse(arguments)); if (!cmd) { String error = "No command found"; if (parser->GetErrorMessage().Length()) error = parser->GetErrorMessage(); ErrorExit(error); return; } if (cmd->RequiresProjectLoad()) { FileSystem* fileSystem = GetSubsystem<FileSystem>(); String projectDirectory = fileSystem->GetCurrentDir(); Vector<String> projectFiles; fileSystem->ScanDir(projectFiles, projectDirectory, "*.atomic", SCAN_FILES, false); if (!projectFiles.Size()) { ErrorExit(ToString("No .atomic project file in %s", projectDirectory.CString())); return; } else if (projectFiles.Size() > 1) { ErrorExit(ToString("Multiple .atomic project files found in %s", projectDirectory.CString())); return; } String projectFile = projectDirectory + "/" + projectFiles[0]; if (!tsystem->LoadProject(projectFile)) { //ErrorExit(ToString("Failed to load project: %s", projectFile.CString())); //return; } // Set the build path String buildFolder = projectDirectory + "/" + "Build"; buildSystem->SetBuildPath(buildFolder); if (!fileSystem->DirExists(buildFolder)) { fileSystem->CreateDir(buildFolder); if (!fileSystem->DirExists(buildFolder)) { ErrorExit(ToString("Failed to create build folder: %s", buildFolder.CString())); return; } } } command_ = cmd; // BEGIN LICENSE MANAGEMENT if (cmd->RequiresLicenseValidation()) { GetSubsystem<LicenseSystem>()->Initialize(); } else { if (command_.Null()) { GetSubsystem<Engine>()->Exit(); return; } command_->Run(); } // END LICENSE MANAGEMENT }