Exemple #1
0
require_once __DIR__ . '/../app/controllers/UsersController.class.php';
require_once __DIR__ . '/../app/models/UserModel.class.php';
require_once __DIR__ . '/../Utils.class.php';
require_once __DIR__ . '/../app/models/ResourceModel.class.php';
require_once __DIR__ . '/../app/controllers/ResourcesController.class.php';
require_once __DIR__ . '/../app/models/BuildingModel.class.php';
require_once __DIR__ . '/../app/controllers/BuildingsController.class.php';
require_once __DIR__ . '/../app/models/LanternModel.class.php';
require_once __DIR__ . '/../app/controllers/LanternsController.class.php';
require_once __DIR__ . '/../app/models/GiftModel.class.php';
require_once __DIR__ . '/../app/controllers/GiftsController.class.php';
$basePath = '/v1';
$UsersController = new UsersController();
$ResourcesController = new ResourcesController();
$BuildingsController = new BuildingsController();
$LanternsController = new LanternsController();
$GiftsController = new GiftsController();
$UserModel = new UserModel();
$ResourceModel = new ResourceModel();
$BuildingModel = new BuildingModel();
$LanternModel = new LanternModel();
$GiftModel = new GiftModel();
/*
 * Main path
 */
$app->get('/', function (Request $request) use($app, $UsersController) {
    return $app->redirect('doc/index.html');
});
/*
 * Users
 */
 public static function isValidPosition($x, $y, $userId)
 {
     $buildingsSettings = BuildingsController::getSettings();
     //pour le debug
     $sql = "SELECT id\n\t\t\t\tFROM building_users\n\t\t\t\tWHERE user_id = " . $userId . "\n\t\t\t\t\tAND x = " . $x . "\n\t\t\t\t\tAND y = " . $y;
     $result = $GLOBALS['app']['db']->fetchAll($sql);
     if (count($result) != 0) {
         return false;
     }
     $lanterns = LanternsController::getLanterns($userId);
     foreach ($lanterns as $lantern) {
         if (sqrt(pow($lantern[x] - $x, 2) + pow($lantern[y] - $y, 2)) < $buildingsSettings["lanterns"]["action_radius"]) {
             return true;
         }
     }
     return false;
 }
 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);
 }