public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->dialogs = Manager::readConfig($config, self::CFG_ERROR_DIALOGS); $this->loading = Manager::readConfig($config, self::CFG_LOADING_ICON); $this->interval = intval(Manager::readConfig($config, self::CFG_CHECK_INTERVAL, self::DEFAULT_INTERVAL)); $this->timeout = intval(Manager::readConfig($config, self::CFG_TIMEOUT, self::DEFAULT_TIMEOUT)); if (!is_array($this->dialogs)) { throw new \InvalidArgumentException('Dialogs is not an array'); } array_walk($this->dialogs, [__CLASS__, 'assertDialogRule']); Screen::assertRules($this->loading); if ($this->interval <= 0) { $this->interval = self::DEFAULT_INTERVAL; $this->logger->warning('%s: Interval is not positive integer, use default value %u.', [__CLASS__, self::DEFAULT_INTERVAL]); } $this->delayOffset = intval($this->delay * 0.15); if ($this->timeout < $this->interval * 3) { $this->timeout = $this->interval * 3; $this->logger->warning('%s: Timeout is not science, use minimum value %u.', [__CLASS__, $this->timeout]); } $this->screen = Screen::instance($manager, $this->app); $this->delay = Delay::instance($manager, $this->app); $this->input = Input::instance($manager, $this->app); }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->adb = ADB::instance($manager, $config[Manager::RES_CONFIG_APP]); $this->savePath = Manager::readConfig($config, self::CFG_SCREEN_SHOT_PATH, $manager->path . DIRECTORY_SEPARATOR . 'screenshot' . DIRECTORY_SEPARATOR); $this->defaultDistance = Manager::readConfig($config, self::CFG_DEFAULT_DISTANCE, 8); }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->setDelayProvider(Manager::readConfig($config, self::CFG_DELAY_PROVIDER, 'usleep')); $this->setRandomProvider(Manager::readConfig($config, self::CFG_RANDOM_PROVIDER, 'mt_rand')); $this->delayUnit = Manager::readConfig($config, self::CFG_DELAY_UNIT, 1000); }
public function __construct(Manager $manager, array $config) { $this->manager = $manager; $this->logger = $manager->logger; $this->app = $config[Manager::RES_CONFIG_APP]; $this->errorReturnCode = Manager::readConfig($config, self::CFG_ERROR_CONTROL, static::RET_ERROR); }
public function run(array $context = []) { if ($this->adb->keyInput(Manager::readConfig($context, self::CFG_EVENT_CODE, $this->eventCode))) { return Manager::RET_LOOP; } return $this->errorReturnCode; }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->rules = Manager::readConfig($config, self::CFG_RULES); $this->button = Manager::readConfig($config, self::CFG_BUTTON); Screen::assertRules($this->rules); Position::assertRect($this->button); }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->test = Manager::readConfig($config, self::CFG_TEST_KEY, self::DEFAULT_TEST_VALUE); $this->testRequired = Manager::readConfig($config, self::CFG_TEST_REQUIRED_KEY); $this->provider = $manager->readCallback(Manager::readConfig($config, self::CFG_TEST_PROVIDER, function () { return self::STUB_METHOD_CLOSURE; })); }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->leftCount = Manager::readConfig($config, self::CFG_COUNT, 1); if (!is_int($this->leftCount) || $this->leftCount < 1) { $this->leftCount = 1; $this->logger->warn("%s: A non-negative integer as tick count is required, assume 1.", [__CLASS__]); } }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $config = $config + $manager->getBaseComponentConfig($this->app); $this->package = Manager::readConfig($config, self::CFG_PACKAGE_NAME); $this->adb = ADB::instance($manager, $this->app); $this->detector = LoadingDetection::instance($manager, $this->app); $this->screen = Screen::instance($manager, $this->app); $this->input = Input::instance($manager, $this->app); }
public function run(array $context = []) { $symbol = Manager::readConfig($context, self::CFG_SYMBOL, $this->defaultSymbol); try { $this->screen->capture($symbol, Manager::readConfig($context, self::CFG_ORIENTATION, $this->defaultOrientation)); $this->logger->info('Screen info: %uX%u mode %s, rotate fix is %s.', [$this->screen->width, $this->screen->height, $this->screen->orientation, $this->screen->rotateFix ? 'On' : 'Off']); return Manager::RET_LOOP; } catch (\RuntimeException $e) { return $this->errorReturnCode; } }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->setRetryLimit(Manager::readConfig($config, Manager::RES_CONFIG_RETRY, self::DEFAULT_RETRY_LIMIT)); $this->setRetryDelay(Manager::readConfig($config, Manager::RES_CONFIG_RETRY, self::DEFAULT_RETRY_DELAY)); $this->retryOffset = intval($this->retryDelay / 10); $this->position = Position::instance($manager, $this->app); $this->delay = Delay::instance($manager, $this->app); $this->adb = ADB::instance($manager, $this->app); $this->scr = Screen::instance($manager, $this->app); }
public function run(array $context = []) { $ocr = Number::instance($this->manager, $this->app); $align = Manager::readConfig($context, 'align', 'L'); $mode = Manager::readConfig($context, 'scan', Number::SCAN_FIXED); $rule = Manager::readConfig($context, 'rule', 'Test'); $color = Manager::readConfig($context, 'color', '000000'); $rect = $align == 'L' ? Position::makeRectangle(0, 0, 1.0, 1.0) : Position::makeRectangle(1.0, 1.0, 0, 0); $result = $ocr->ocr($rule, $rect, [Number::CFG_COLOR => $color, Number::CFG_SCAN_MODE => $mode, Number::CFG_WIDTH => 0.25, Number::CFG_MARGIN => 0]); $this->logger->info('OCR Result %s', [$result]); return Manager::RET_LOOP; }
public function run(array $context = []) { $ocr = Number::instance($this->manager, $this->app); $point = Manager::readConfig($context, 'point'); Position::assertPoint($point); $this->logger->info('Test for X=%.4f, Y=%.4f', $point[Position::X], $point[Position::Y]); $ocr->setRules(['Test' => ['J' => [$point], 'T' => 1, 'F' => 0]]); $rect = Position::makeRectangle(0, 0, 1, 1); for ($i = 0; $i <= 9; $i++) { $this->screen->load(sprintf('tests/digits/%u.png', $i), Screen::PORTRAIT); $this->logger->info('OCR Result for digit %u is %s', [$i, $ocr->ocr('Test', $rect, [Number::CFG_COLOR => '000000', Number::CFG_WIDTH => 1, Number::CFG_MARGIN => 0])]); } return Manager::RET_LOOP; }
public function run(array $context = []) { $filename = Manager::readConfig($context, self::CFG_FILENAME); $orientation = Manager::readConfig($context, self::CFG_ORIENTATION, Screen::AUTO); if (!is_readable($filename)) { throw new \RuntimeException("Image '{$filename}' is unable to read."); } try { $this->screen->load($filename, $orientation); $this->logger->info('Screen info: %uX%u mode %s, rotate fix is %s.', [$this->screen->width, $this->screen->height, $this->screen->orientation, $this->screen->rotateFix ? 'On' : 'Off']); return Manager::RET_LOOP; } catch (\Exception $e) { $this->logger->error("Image '{$filename}' is corrupt or not a PNG file."); return $this->errorReturnCode; } }
public function run(array $context = []) { $rectangles = Manager::readConfig($context, self::CFG_RECTANGLES); if (!is_array($rectangles) || ($count = count($rectangles)) === 0) { return Manager::RET_LOOP; } $delay = (int) Manager::readConfig($context, self::CFG_DELAY, self::DEFAULT_DELAY); if ($delay <= 0) { $delay = self::DEFAULT_DELAY; $this->logger->warning('%s: delay milliseconds should be positive integer. Use default value %u.', [__CLASS__, $delay]); } $delayOffset = intval($delay / 10); $this->logger->info('Tap screen for %u point(s) with delay %u-%u ms.', [$count, $delay, $delayOffset]); foreach ($rectangles as $rectangle) { $this->input->tapInRect($rectangle); $this->delay->delayOffset($delay, $delayOffset); } return Manager::RET_LOOP; }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->setRandomProvider(Manager::readConfig($config, self::CFG_RANDOM_PROVIDER, 'mt_rand')); $this->maxSlope = Manager::readConfig($config, self::CFG_MAX_SLOPE, mt_getrandmax()); }
public function run(array $context = []) { $this->test = Manager::readConfig($context, self::CFG_TEST, $this->test); return Manager::RET_LOOP; }
public function __construct(Manager $manager, array $config) { parent::__construct($manager, $config); $this->message = Manager::readConfig($config, self::CFG_MESSAGE, static::DEFAULT_MESSAGE); }
public function setDefaultConfig(&$config) { $this->defaultMode = self::checkMode(Manager::readConfig($config, self::CFG_SCAN_MODE)); $this->defaultColor = $this->screen->parseColor(Manager::readConfig($config, self::CFG_COLOR, 'FFFFFF:4')); $this->defaultWidth = self::checkDistance(Manager::readConfig($config, self::CFG_WIDTH, 0.001)); $this->defaultMargin = self::checkDistance(Manager::readConfig($config, self::CFG_MARGIN, 0), true); return $this; }