| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 |
- <?php
- /**
- * Area entity file.
- *
- * Creates the entity and makes it available.
- *
- * @author Iñigo Valentin <i@inigovalentin.com>
- * @license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License V3
- * @package SWDB
- */
- require_once(PATH::ENTITY . "Entity.php");
- /**
- * An area.
- *
- * Represents a playable area of the game.
- *
- * @category Entity
- */
- class Area extends Entity{
- /**
- * @var int Area identifier (it may not be unique!).
- */
- private $id;
- /**
- * @var int Area type ID ({@see AREA_TYPE_ID}).
- */
- private $type;
- /**
- * @var string Area name.
- */
- private $name;
- /**
- * Constructor.
- *
- * Retrieves the area information from the database.
- *
- * @param int $id Area identifier.
- * @param int $type Area type.
- */
- public function __construct($id, $type){
- $this->id = $id;
- $this->type = $type;
- $statement = get_context()->get_db()->prepare("
- SELECT
- id,
- type,
- name
- FROM area
- WHERE
- id = :id AND
- type = :type
- ORDER BY type DESC;
- ");
- $statement->bindValue(':id', $id, SQLITE3_TEXT);
- $statement->bindValue(':type', $type, SQLITE3_TEXT);
- $r = $statement->execute()->fetchArray(SQLITE3_ASSOC);
- if ($r){
- $this->name = HTML::e($r["name"]);
- }
- elseif($this->id > 1000){
- $this->type = AREA_TYPE_ID::CAIROS_DUNGEON;
- $this->name = "Hall of Heroes";
- }
- else{
- $statement = get_context()->get_db()->prepare("
- SELECT name
- FROM area_type
- WHERE id = :type;
- ");
- $statement->bindValue(':type', $type, SQLITE3_TEXT);
- if ($r){
- $this->name = HTML::e($r["name"]);
- }
- }
- }
- /**
- * Retrieves the area identifier.
- *
- * @return int Area ID.
- */
- public function get_id(){
- return $this->id;
- }
- /**
- * Retrieves the area type identifier.
- *
- * @see AREA_TYPE_ID.
- * @return int Area type ID
- */
- public function get_type(){
- return $this->type;
- }
- /**
- * Retrieves the area name.
- *
- * @return string The area name.
- */
- public function get_name(){
- return $this->name;
- }
- /**
- * Gets the URL to the area image.
- *
- * @param string $stage Stage number, for a more accurate image in Dimension Hole.
- * @return string Image URL, or a fixed unknown image.
- */
- public function get_image($stage = null){
- if ($this->id > 10000){
- // Hall of Heroes
- return APPLICATION::img("AREA", "HOH");
- }
- elseif ($this->type == AREA_TYPE_ID::RIFT_RAID){
- return APPLICATION::img("UNIT", 44007);
- }
- elseif ($this->type == AREA_TYPE_ID::ARENA){
- return APPLICATION::img("AREA", "ARENA");
- }
- elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT){
- return APPLICATION::img("CURRENCY", "darkportalenergy");
- }
- elseif (
- $this->type == AREA_TYPE_ID::SCENARIO ||
- $this->type == AREA_TYPE_ID::GUILD_WAR ||
- $this->type == AREA_TYPE_ID::GUILD_SIEGE ||
- $this->type == AREA_TYPE_ID::WORLD_BOSS ||
- $this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT
- ){
- return APPLICATION::img("AREA", $this->id);
- }
- elseif ($this->type == AREA_TYPE_ID::CAIROS_DUNGEON && APPLICATION::valid_id("DUNGEON_ID", $this->id)){
- switch ($this->id){
- case DUNGEON_ID::GIANTS_KEEP:
- return APPLICATION::img("UNIT", 60201);
- break;
- case DUNGEON_ID::DRAGONS_LAIR:
- return APPLICATION::img("UNIT", 60302);
- break;
- case DUNGEON_ID::NECROPOLIS:
- return APPLICATION::img("UNIT", 62105);
- break;
- case DUNGEON_ID::STEEL_FORTRESS:
- return APPLICATION::img("UNIT", 62403);
- break;
- case DUNGEON_ID::PUNISHERS_CRYPT:
- return APPLICATION::img("UNIT", 62604);
- break;
- case DUNGEON_ID::HALL_OF_WATER:
- return APPLICATION::img("UNIT", 60101);
- break;
- case DUNGEON_ID::HALL_OF_FIRE:
- return APPLICATION::img("UNIT", 60102);
- break;
- case DUNGEON_ID::HALL_OF_WIND:
- return APPLICATION::img("UNIT", 60103);
- break;
- case DUNGEON_ID::HALL_OF_LIGHT:
- return APPLICATION::img("UNIT", 60104);
- break;
- case DUNGEON_ID::HALL_OF_DARK:
- return APPLICATION::img("UNIT", 60105);
- break;
- case DUNGEON_ID::HALL_OF_MAGIC:
- return APPLICATION::img("UNIT", 62004);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- }
- }
- elseif ($this->type == AREA_TYPE_ID::RIFT_DUNGEON && APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $this->id)){
- switch ($this->id){
- case ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST:
- return APPLICATION::img("UNIT", 43001);
- break;
- case ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST:
- return APPLICATION::img("UNIT", 43002);
- break;
- case ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST:
- return APPLICATION::img("UNIT", 43003);
- break;
- case ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST:
- return APPLICATION::img("UNIT", 43004);
- break;
- case ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST:
- return APPLICATION::img("UNIT", 43005);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- }
- elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_HOLE){
- switch ($this->id){
- case DUNGEON_ID::KARZHAN_PREDATOR:
- case DUNGEON_ID::ELLUNIA_PREDATOR:
- case DUNGEON_ID::LUMEL_PREDATOR:
- case DUNGEON_ID::KHALDERUN_PREDATOR:
- // Element is not consistent, using light icon.
- return APPLICATION::img("UNIT", 70004);
- break;
- case DUNGEON_ID::FOREST_OF_ROARING_BEASTS:
- return APPLICATION::img("UNIT", 47002);
- break;
- case DUNGEON_ID::SANCTUARY_OF_DREAMING_FAIRIES:
- return APPLICATION::img("UNIT", 47001);
- break;
- case DUNGEON_ID::CLIFF_OF_TOUGH_BEASTS_MEN:
- return APPLICATION::img("UNIT", 47003);
- break;
- case DUNGEON_ID::RUIN_OF_SILENT_DEAD:
- return APPLICATION::img("UNIT", 47004);
- break;
- case DUNGEON_ID::KARZHAN_REMAINS_WARBEAR:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 10734);
- break;
- case 2:
- return APPLICATION::img("UNIT", 10733);
- break;
- case 3:
- return APPLICATION::img("UNIT", 10731);
- break;
- case 4:
- return APPLICATION::img("UNIT", 10735);
- break;
- case 5:
- return APPLICATION::img("UNIT", 10732);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::KARZHAN_REMAINS_INUGAMI:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 11031);
- break;
- case 2:
- return APPLICATION::img("UNIT", 11033);
- break;
- case 3:
- return APPLICATION::img("UNIT", 11032);
- break;
- case 4:
- return APPLICATION::img("UNIT", 11034);
- break;
- case 5:
- return APPLICATION::img("UNIT", 11035);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::ELLUNIA_REMAINS_FAIRY:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 10132);
- break;
- case 2:
- return APPLICATION::img("UNIT", 10134);
- break;
- case 3:
- return APPLICATION::img("UNIT", 10131);
- break;
- case 4:
- return APPLICATION::img("UNIT", 10133);
- break;
- case 5:
- return APPLICATION::img("UNIT", 10134);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::ELLUNIA_REMAINS_PIXIE:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 10334);
- break;
- case 2:
- return APPLICATION::img("UNIT", 10332);
- break;
- case 3:
- return APPLICATION::img("UNIT", 10335);
- break;
- case 4:
- return APPLICATION::img("UNIT", 10333);
- break;
- case 5:
- return APPLICATION::img("UNIT", 10331);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::ELLUNIA_REMAINS_HIGH_ELEMENTAL:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 10332);
- break;
- case 2:
- return APPLICATION::img("UNIT", 10331);
- break;
- case 3:
- return APPLICATION::img("UNIT", 10334);
- break;
- case 4:
- return APPLICATION::img("UNIT", 12033);
- break;
- case 5:
- return APPLICATION::img("UNIT", 10335);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::LUMEL_REMAINS_WEREWOLF:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 14035);
- break;
- case 2:
- return APPLICATION::img("UNIT", 14033);
- break;
- case 3:
- return APPLICATION::img("UNIT", 14031);
- break;
- case 4:
- return APPLICATION::img("UNIT", 14034);
- break;
- case 5:
- return APPLICATION::img("UNIT", 14032);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::LUMEL_REMAINS_MARTIAL_CAT:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 15032);
- break;
- case 2:
- return APPLICATION::img("UNIT", 15034);
- break;
- case 3:
- return APPLICATION::img("UNIT", 15031);
- break;
- case 4:
- return APPLICATION::img("UNIT", 15035);
- break;
- case 5:
- return APPLICATION::img("UNIT", 15033);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::KHALDERUN_REMAINS_HOWL:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 13235);
- break;
- case 2:
- return APPLICATION::img("UNIT", 13234);
- break;
- case 3:
- return APPLICATION::img("UNIT", 13233);
- break;
- case 4:
- return APPLICATION::img("UNIT", 13232);
- break;
- case 5:
- return APPLICATION::img("UNIT", 13231);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- case DUNGEON_ID::KHALDERUN_REMAINS_GRIM_REAPER:
- switch ($stage){
- case 1:
- return APPLICATION::img("UNIT", 16033);
- break;
- case 2:
- return APPLICATION::img("UNIT", 16031);
- break;
- case 3:
- return APPLICATION::img("UNIT", 16034);
- break;
- case 4:
- return APPLICATION::img("UNIT", 16032);
- break;
- case 5:
- return APPLICATION::img("UNIT", 16035);
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- break;
- default:
- return APPLICATION::img("AREA", $this->id);
- break;
- }
- }
- elseif ($this->type == AREA_TYPE_ID::TARTARUS_LABYRINTH){
- switch ($stage){
- case LABYRINTH_STAGES_ID::TARTARUS:
- return APPLICATION::img("UNIT", 46001);
- break;
- case LABYRINTH_STAGES_ID::LEOS:
- return APPLICATION::img("UNIT", 46101);
- break;
- case LABYRINTH_STAGES_ID::KOTTOS:
- return APPLICATION::img("UNIT", 46102);
- break;
- case LABYRINTH_STAGES_ID::AQUILES:
- return APPLICATION::img("UNIT", 46103);
- break;
- default:
- return APPLICATION::img("AREA", "TARTARUS_LABYRINTH");
- }
- }
- elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){
- return APPLICATION::img("AREA", "TRIAL_OF_ASCENSION");
- }
- else{
- return APPLICATION::img("AREA", $this->id);
- }
- }
- }
|