예제 #1
0
 /**
  * (non-PHPdoc)
  * @see app/code/Bengine/EventHandler/Handler/Bengine_Game_EventHandler_Handler_Abstract#_execute($event, $data)
  */
 protected function _execute(Bengine_Game_Model_Event $event, array $data)
 {
     Hook::event("EhAllianceAttack", array($event, &$data, $this));
     $assault = new Bengine_Game_Assault($event->getDestination(), $event->getDestinationUserId(), $event);
     $assault->addParticipant(Bengine_Game_Assault_Participant::ATTACKER_MODE, $event->getUserid(), $event->getPlanetid(), $event->getTime(), $data);
     // Load allied fleets
     $allies = Application::getCollection("game/event")->addParentIdFilter($event->getEventid());
     foreach ($allies as $ally) {
         $assault->addParticipant(Bengine_Game_Assault_Participant::ATTACKER_MODE, $ally->getUserid(), $ally->getPlanetid(), $event->getTime(), $ally->getData());
     }
     $assault->startAssault($event->getGalaxy2(), $event->getSystem2(), $event->getPosition2())->finish();
     Core::getQuery()->delete("formation_invitation", "eventid = ?", null, null, array($event->getEventid()));
     Core::getQuery()->delete("attack_formation", "eventid = ?", null, null, array($event->getEventid()));
     return $this;
 }
예제 #2
0
 /**
  * Parses an event.
  *
  * @param Bengine_Game_Model_Event $f
  *
  * @return array	Parsed event data
  */
 protected function parseEvent(Bengine_Game_Model_Event $f)
 {
     if ($f->getCode() == "game/alliedFleet" && $f->getUserid() != Core::getUser()->get("userid")) {
         return false;
         // Hide foreign formations
     }
     $event = array();
     $event["time_r"] = $f->getTimeLeft();
     $event["time"] = $f->getFormattedTimeLeft();
     $event["eventid"] = $f->getEventid();
     $event["time_finished"] = Date::timeToString(1, $f->getTime());
     $event["raw_coordinates"] = $f->getDestinationCoords(false);
     Core::getLanguage()->assign("rockets", $f->getData("rockets", 0));
     Core::getLanguage()->assign("planet", !$f->getData("oldmode") || $f->getData("oldmode") != 9 ? $f->getPlanetname() : Core::getLanguage()->getItem("DEBRIS"));
     // TODO: Old mode should be translated to code
     Core::getLanguage()->assign("coords", $f->getPlanetCoords());
     Core::getLanguage()->assign("target", $f->getCode() != "game/recycling" ? $f->getDestinationPlanetname() : Core::getLanguage()->getItem("DEBRIS"));
     Core::getLanguage()->assign("targetcoords", $f->getDestinationCoords());
     Core::getLanguage()->assign("metal", fNumber($f->getData("metal", 0)));
     Core::getLanguage()->assign("silicon", fNumber($f->getData("silicon", 0)));
     Core::getLanguage()->assign("hydrogen", fNumber($f->getData("hydrogen", 0)));
     Core::getLanguage()->assign("username", $f->getUsername());
     Core::getLanguage()->assign("message", Link::get("game/" . SID . "/MSG/Write/" . rawurlencode($f->getUsername()), Image::getImage("pm.gif", Core::getLanguage()->getItem("WRITE_MESSAGE"))));
     Core::getLanguage()->assign("mission", $f->getCode() == "game/return" ? $f->getOrgModeName() : $f->getModeName());
     Core::getLanguage()->assign("fleet", $f->getFleetString());
     $event["class"] = $f->getCssClass();
     if ($f->getCode() == "game/allianceAttack") {
         if ($f->getUserid() == Core::getUser()->get("userid")) {
             $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN");
         } else {
             $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OTHER");
         }
         $allyFleets = Game::getEH()->getFormationFleets($f->getEventid());
         foreach ($allyFleets as $af) {
             $coords = $af->getPlanetCoords();
             $msg = Core::getLanguage()->getItem("FLEET_MESSAGE_FORMATION");
             $msg = sprintf($msg, $af->getUsername(), $af->getPlanetname(), $coords, $af->getFleetString());
             $event["message"] .= $msg;
         }
     } else {
         if ($f->getCode() == "game/alliedFleet") {
             $mainFleet = Game::getModel("game/event")->load($f->getParentId());
             if ($mainFleet->getUsierid() == Core::getUser()->get("userid")) {
                 return false;
             }
             $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN");
             $allyFleets = Game::getEH()->getFormationFleets($mainFleet->getEventid());
             $allyFleets->add($mainFleet);
             foreach ($allyFleets as $af) {
                 if ($af->getUserid() == Core::getUser()->get("userid")) {
                     continue;
                 }
                 $coords = $af->getPlanetCoords();
                 $msg = Core::getLanguage()->getItem("FLEET_MESSAGE_FORMATION");
                 $msg = sprintf($msg, $af->getUsername(), $af->getPlanetname(), $coords, $af->getFleetString());
                 $event["message"] .= $msg;
             }
         } else {
             if ($f->getCode() == "game/holding" && $f->getUserid() == Core::getUser()->get("userid")) {
                 $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_HOLDING_1");
             } else {
                 if ($f->getCode() == "game/holding") {
                     $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_HOLDING_2");
                 } else {
                     if ($f->getCode() == "game/return" && $f->getUserid() == Core::getUser()->get("userid")) {
                         $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_RETURN");
                     } else {
                         if ($f->getUserid() == Core::getUser()->get("userid") && $f->getCode() == "game/missileAttack") {
                             $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_ROCKET_ATTACK");
                         } else {
                             if ($f->getCode() == "game/missileAttack") {
                                 $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_ROCKET_ATTACK_FOREIGN");
                             } else {
                                 if ($f->getUserid() == Core::getUser()->get("userid")) {
                                     $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OWN");
                                 } else {
                                     $event["message"] = Core::getLanguage()->getItem("FLEET_MESSAGE_OTHER");
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }
     return $event;
 }