public function create($params) { $userId = self::getUserIdByToken($params['token']); $x = $params['x']; $y = $params['y']; if (!$userId) { return Utils::formatErrorMessage(ERROR_BAD_TOKEN, "Bad token"); } if (!self::isValidLanternPosition($x, $y)) { return Utils::formatErrorMessage(ERROR_BAD_LANTERN_POSITION, "Bad lantern position"); } $sql = "SELECT id FROM lantern_users WHERE x = '" . $x . "' AND y ='" . $y . "' AND user_id ='" . $userId . "'"; $result = $GLOBALS['app']['db']->fetchAll($sql); if ($result) { return Utils::formatErrorMessage(ERROR_LANTERN_ALREADY_EXISTS, "The lantern you try to create already exists"); } $settings = file_get_contents(__DIR__ . "./../../../assets/json/buildingsSettings.json", FILE_USE_INCLUDE_PATH); $settings = json_decode($settings, true); $lanternsSettings = $settings['lanterns']; $resourceId = ResourcesController::getResourceIdByName($params['hard'] === 'true' ? 'spice' : $lanternsSettings['resource_price']); $count = $params['hard'] === 'true' ? $lanternsSettings['hard_price'] : $lanternsSettings['price']; $number = count(self::getLanterns($userId)); $count *= 1 + $number; if (!ResourcesController::spendResource($resourceId, $count, $userId)) { return Utils::formatErrorMessage(ERROR_NO_MONEY, "Pas assez de resources pour cette item"); } $date = date("Y-m-d H:i:s"); $request = $GLOBALS['app']['db']->prepare('INSERT INTO lantern_users VALUES (NULL, ?, ?, ?, ?, ?)'); $request->execute(array($userId, $date, $date, $x, $y)); return ResourcesController::getResource($userId); }
public static function buyBuilding($buildingName, $userId) { $buildingSettings = file_get_contents(__DIR__ . "./../../../assets/json/buildingsSettings.json", FILE_USE_INCLUDE_PATH); $buildingSettings = json_decode($buildingSettings, true); if ($buildingSettings[$buildingName] == null) { echo 'DEBUG : Le nom du building nest pas present dans buildingsSettings.json'; } $building; if (array_key_exists("1", $buildingSettings[$buildingName])) { $building = $buildingSettings[$buildingName]["1"]; } else { $building = $buildingSettings[$buildingName]; } $resourceId = ResourcesController::getResourceIdByName($building['resource_price']); return ResourcesController::spendResource($resourceId, $building['price'], $userId); }
public function paradeUpdate($params) { $userId = self::getUserIdByToken(addslashes($params['token'])); if (!$userId) { return Utils::formatErrorMessage(ERROR_BAD_TOKEN, "Bad token"); } $params['hardPurchase'] = $params['hardPurchase'] == 'true'; $paradeSettings = file_get_contents(__DIR__ . "./../../../assets/json/paradeSettings.json", FILE_USE_INCLUDE_PATH); $paradeSettings = json_decode($paradeSettings, true); $lanterns = LanternsController::getLanterns($userId); $maxBonus = $paradeSettings['generatedBonusCountPerLanterns'] * count($lanterns); if ($params['bonusHarvested'] > $maxBonus) { return Utils::formatErrorMessage(ERROR_BONUS_SENT_TOO_BIG, "Bonus sent is too big"); } $offeringResourceId = ResourcesController::getResourceIdByName("offering"); if (!$params['hardPurchase']) { $sql = "SELECT last_parade_at FROM users WHERE id = '" . $userId . "'"; $result = $GLOBALS['app']['db']->fetchAll($sql); $lastParadeAt = new DateTime($result[0]['last_parade_at']); $now = new DateTime(); // Verification de si la parade n'a pas eu lieu aujourd'hui if ($lastParadeAt->format('d') != $now->format('d') || $now->getTimestamp() - $lastParadeAt->getTimestamp() >= 86400) { $sql = "UPDATE users\n\t\t\t\t\t\tSET last_parade_at = NOW()\n\t\t\t\t\t\tWHERE id = '" . $userId . "'"; $result = $GLOBALS['app']['db']->exec($sql); $goldGained = $this->convertBonusToGold($params['bonusHarvested'], $paradeSettings, $userId); ResourcesController::addResource($offeringResourceId, $goldGained, $userId); } else { return Utils::formatErrorMessage(ERROR_PARADE_ALREADY_LAUNCH, "Parade already launched today"); } } else { $resourceId = ResourcesController::getResourceIdByName("spice"); if (ResourcesController::spendResource($resourceId, $paradeSettings['paradeHardPrice'], $userId)) { $goldGained = $this->convertBonusToGold($params['bonusHarvested'], $paradeSettings, $userId); ResourcesController::addResource($offeringResourceId, $goldGained, $userId); } else { return Utils::formatErrorMessage(ERROR_NO_MONEY, "Not enought spice"); } } return ResourcesController::getResource($userId); }