Ejemplo n.º 1
0
 /**
  * déduit le temps écoulé des éléments en construction
  * @param $time_diff int
  */
 public function update_queue($time_diff)
 {
     $item = $this->get_first_item_from_queue();
     if (!empty($item)) {
         $time_left = $item['time_left'] - $time_diff;
         if ($time_left > 0) {
             $sql = "UPDATE queue SET time_left = time_left - :time_diff WHERE id = {$item['id']}";
             $req = Db::prepare($sql);
             $req->bindParam(':time_diff', $time_diff, PDO::PARAM_INT);
             $req->execute();
         } else {
             // ajout de la flotte au stock et mise à jour du score
             $fleet = new Army($this->user_id);
             $fleet->add_troop($item['unit_id'], $item['quantity'], -1, true);
             // effacement de l'élement de la file d'attente
             $this->remove_item_from_queue($item['id']);
             // on met à jour l'élément suivant de la file d'attente
             $this->update_queue(abs($time_left));
         }
     }
 }
Ejemplo n.º 2
0
 /** Cette fonction transfert les unités en attaque au stock et efface le combat
  * elle retourne la nouvelle armée pour l'affichage en ajax
  * @return array new updated Army_owned list
  */
 public function reset_army()
 {
     $army_mobile = new Army($this->attacker_id, $this->id);
     $army_owned = new Army($this->attacker_id);
     if (count($army_mobile->troops) > 0 && $army_mobile->total_units > 0) {
         foreach ($army_mobile->troops as $unit_id => $troop) {
             if ($troop->quantity > 0) {
                 $army_owned->add_troop($unit_id, $troop->quantity);
             }
             $troop = new Troop($troop->id);
             $troop->delete();
         }
     }
     $this->delete();
     return $army_owned->get_troops();
 }
Ejemplo n.º 3
0
     /* TODO : décommenter pour interdire l'attaque sur soi
            if ($user->id == $defender->id) {
                $errors[] = "C'est une mutinerie ? Non sérieusement vous ne pouvez pas vous attaquer.";
                return;
            }
        */
     $target = new User($_POST['target_id']);
     $combat = new Combat();
     $combat->hydrate(['attacker_id' => $user->id, 'target_id' => $target->id, 'arrival_time' => date("Y-m-d H:i:s", time('now') + abs($user->score - $target->score))]);
     $combat_id = intval($combat->add());
     $army_moving = new Army($user->id, $combat_id);
     $army_owned = new Army($user->id);
     foreach ($_POST as $post_key => $quantity) {
         $post_arr = explode('_', $post_key);
         if ($post_arr[0] == 'unitID' && $quantity > 0) {
             $army_moving->add_troop(intval($post_arr[1]), intval($quantity), $combat_id);
             $army_owned->add_troop(intval($post_arr[1]), intval(-$quantity));
         }
     }
     // redirection pour éviter le renvoi d'une nouvelle flotte en actualisant la page
     /* TODO décommenter en prod
        $url = 'Location:' . _ROOT_ . 'war';
        header("$url");
        */
     // fleet selection
 } elseif (isset($_GET['action']) && $_GET['action'] == 'attack' && isset($_GET['param'])) {
     $army_owned = new Army($user->id);
     $target = new User(intval($_GET['param']));
     if (!Combat::is_available_target($user->score, $target->score)) {
         $errors[] = clean_html($target->pseudo) . " n'est pas a votre portée";
     }