K_Area.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  1. <?php
  2. /**
  3. * Area type entity file.
  4. *
  5. * Creates the entity and makes it available.
  6. *
  7. * @category Entity
  8. */
  9. /**
  10. * Require dependent entities if not present.
  11. */
  12. require_once(PATH::ENTITY . "Entity.php");
  13. /**
  14. * An area.
  15. *
  16. * Represents an object from the table 'k_area'.
  17. *
  18. * @category Entity
  19. */
  20. class K_Area extends Entity{
  21. /**
  22. * @var int Area identifier (it may not be unique!).
  23. */
  24. public $id;
  25. /**
  26. * @var int Area type.
  27. */
  28. public $type;
  29. /**
  30. * @var string Area name.
  31. */
  32. public $name;
  33. /**
  34. * Constructor.
  35. *
  36. * Searches the database and retrieves the information about the
  37. * run, populating it and it's items.
  38. *
  39. * @param int $id Area identifier.
  40. * @param int $type Area type (required).
  41. * @global resource Database connection.
  42. */
  43. public function __construct($id, $type){
  44. global $db;
  45. $this->id = $id;
  46. $this->type = $type;
  47. $statement = $db->prepare("
  48. SELECT
  49. id,
  50. type,
  51. name
  52. FROM k_area
  53. WHERE
  54. id = :id AND
  55. type = :type
  56. ORDER BY type DESC;
  57. ");
  58. $statement->bindValue(':id', $id, SQLITE3_INTEGER);
  59. $statement->bindValue(':type', $type, SQLITE3_INTEGER);
  60. $r = $statement->execute()->fetchArray(SQLITE3_ASSOC);
  61. if ($r){
  62. $this->name = HTML::e($r["name"]);
  63. }
  64. elseif($this->id > 1000){
  65. $this->type = AREA_TYPE_ID::CAIROS_DUNGEON;
  66. $this->name = "Hall of Heroes";
  67. }
  68. else{
  69. $statement = $db->prepare("
  70. SELECT name
  71. FROM k_area_type
  72. WHERE id = :type;
  73. ");
  74. $statement->bindValue(':type', $type, SQLITE3_INTEGER);
  75. if ($r){
  76. $this->name = HTML::e($r["name"]);
  77. }
  78. }
  79. }
  80. /**
  81. * Gets the path to the area image. The image must be in the
  82. * img/area/ directory, and its name must be the area type id,
  83. * padded with '0' to 9 digites, and the extension must be '.png'.
  84. *
  85. * @param string $stage Stage number, for a better image in Cairos.
  86. * @return string Image URL, or a fixed unknown image.
  87. */
  88. public function get_image($stage = null){
  89. if ($this->id > 10000){
  90. // Hall of Heroes
  91. return APPLICATION::img("AREA", "HOH");
  92. }
  93. elseif ($this->type == AREA_TYPE_ID::RIFT_RAID){
  94. return APPLICATION::img("UNIT", 44007);
  95. }
  96. elseif ($this->type == AREA_TYPE_ID::ARENA){
  97. return APPLICATION::img("AREA", "ARENA");
  98. }
  99. elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT){
  100. return APPLICATION::img("CURRENCY", "darkportalenergy");
  101. }
  102. elseif (
  103. $this->type == AREA_TYPE_ID::SCENARIO ||
  104. $this->type == AREA_TYPE_ID::GUILD_WAR ||
  105. $this->type == AREA_TYPE_ID::GUILD_SIEGE ||
  106. $this->type == AREA_TYPE_ID::WORLD_BOSS ||
  107. $this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT
  108. ){
  109. return APPLICATION::img("AREA", $this->id);
  110. }
  111. elseif ($this->type == AREA_TYPE_ID::CAIROS_DUNGEON && APPLICATION::valid_id("DUNGEON_ID", $this->id)){
  112. switch ($this->id){
  113. case DUNGEON_ID::GIANTS_KEEP:
  114. return APPLICATION::img("UNIT", 60201);
  115. break;
  116. case DUNGEON_ID::DRAGONS_LAIR:
  117. return APPLICATION::img("UNIT", 60302);
  118. break;
  119. case DUNGEON_ID::NECROPOLIS:
  120. return APPLICATION::img("UNIT", 62105);
  121. break;
  122. case DUNGEON_ID::STEEL_FORTRESS:
  123. return APPLICATION::img("UNIT", 62403);
  124. break;
  125. case DUNGEON_ID::PUNISHERS_CRYPT:
  126. return APPLICATION::img("UNIT", 62403);
  127. break;
  128. case DUNGEON_ID::HALL_OF_WATER:
  129. return APPLICATION::img("UNIT", 60101);
  130. break;
  131. case DUNGEON_ID::HALL_OF_FIRE:
  132. return APPLICATION::img("UNIT", 60102);
  133. break;
  134. case DUNGEON_ID::HALL_OF_WIND:
  135. return APPLICATION::img("UNIT", 60103);
  136. break;
  137. case DUNGEON_ID::HALL_OF_LIGHT:
  138. return APPLICATION::img("UNIT", 60104);
  139. break;
  140. case DUNGEON_ID::HALL_OF_DARK:
  141. return APPLICATION::img("UNIT", 60105);
  142. break;
  143. case DUNGEON_ID::HALL_OF_MAGIC:
  144. return APPLICATION::img("UNIT", 62004);
  145. break;
  146. default:
  147. return APPLICATION::img("AREA", $this->id);
  148. }
  149. }
  150. elseif ($this->type == AREA_TYPE_ID::RIFT_DUNGEON && APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $this->id)){
  151. switch ($this->id){
  152. case ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST:
  153. return APPLICATION::img("UNIT", 43001);
  154. break;
  155. case ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST:
  156. return APPLICATION::img("UNIT", 43002);
  157. break;
  158. case ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST:
  159. return APPLICATION::img("UNIT", 43003);
  160. break;
  161. case ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST:
  162. return APPLICATION::img("UNIT", 43004);
  163. break;
  164. case ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST:
  165. return APPLICATION::img("UNIT", 43005);
  166. break;
  167. default:
  168. return APPLICATION::img("AREA", $this->id);
  169. break;
  170. }
  171. }
  172. elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_HOLE){
  173. switch ($this->id){
  174. case DUNGEON_ID::FOREST_OF_ROARING_BEASTS:
  175. return APPLICATION::img("UNIT", 47002);
  176. break;
  177. case DUNGEON_ID::SANCTUARY_OF_DREAMING_FAIRIES:
  178. return APPLICATION::img("UNIT", 47001);
  179. break;
  180. case DUNGEON_ID::CLIFF_OF_TOUGH_BEASTS_MEN:
  181. return APPLICATION::img("UNIT", 47002);
  182. break;
  183. case DUNGEON_ID::KARZHAN_REMAINS_WARBEAR:
  184. switch ($stage){
  185. case 1:
  186. return APPLICATION::img("UNIT", 10734);
  187. break;
  188. case 2:
  189. return APPLICATION::img("UNIT", 10733);
  190. break;
  191. case 3:
  192. return APPLICATION::img("UNIT", 10731);
  193. break;
  194. case 4:
  195. return APPLICATION::img("UNIT", 10735);
  196. break;
  197. case 5:
  198. return APPLICATION::img("UNIT", 10732);
  199. break;
  200. default:
  201. return APPLICATION::img("AREA", $this->id);
  202. break;
  203. }
  204. break;
  205. case DUNGEON_ID::KARZHAN_REMAINS_INUGAMI:
  206. switch ($stage){
  207. case 1:
  208. return APPLICATION::img("UNIT", 11031);
  209. break;
  210. case 2:
  211. return APPLICATION::img("UNIT", 11033);
  212. break;
  213. case 3:
  214. return APPLICATION::img("UNIT", 11032);
  215. break;
  216. case 4:
  217. return APPLICATION::img("UNIT", 11034);
  218. break;
  219. case 5:
  220. return APPLICATION::img("UNIT", 11035);
  221. break;
  222. default:
  223. return APPLICATION::img("AREA", $this->id);
  224. break;
  225. }
  226. break;
  227. case DUNGEON_ID::ELLUNIA_REMAINS_FAIRY:
  228. switch ($stage){
  229. case 1:
  230. return APPLICATION::img("UNIT", 10132);
  231. break;
  232. case 2:
  233. return APPLICATION::img("UNIT", 10134);
  234. break;
  235. case 3:
  236. return APPLICATION::img("UNIT", 10131);
  237. break;
  238. case 4:
  239. return APPLICATION::img("UNIT", 10133);
  240. break;
  241. case 5:
  242. return APPLICATION::img("UNIT", 10134);
  243. break;
  244. default:
  245. return APPLICATION::img("AREA", $this->id);
  246. break;
  247. }
  248. break;
  249. case DUNGEON_ID::ELLUNIA_REMAINS_PIXIE:
  250. switch ($stage){
  251. case 1:
  252. return APPLICATION::img("UNIT", 10334);
  253. break;
  254. case 2:
  255. return APPLICATION::img("UNIT", 10332);
  256. break;
  257. case 3:
  258. return APPLICATION::img("UNIT", 10335);
  259. break;
  260. case 4:
  261. return APPLICATION::img("UNIT", 10333);
  262. break;
  263. case 5:
  264. return APPLICATION::img("UNIT", 10331);
  265. break;
  266. default:
  267. return APPLICATION::img("AREA", $this->id);
  268. break;
  269. }
  270. break;
  271. case DUNGEON_ID::LUMEL_REMAINS_WEREWOLF:
  272. switch ($stage){
  273. case 1:
  274. return APPLICATION::img("UNIT", 14035);
  275. break;
  276. case 2:
  277. return APPLICATION::img("UNIT", 14033);
  278. break;
  279. case 3:
  280. return APPLICATION::img("UNIT", 14031);
  281. break;
  282. case 4:
  283. return APPLICATION::img("UNIT", 14034);
  284. break;
  285. case 5:
  286. return APPLICATION::img("UNIT", 14032);
  287. break;
  288. default:
  289. return APPLICATION::img("AREA", $this->id);
  290. break;
  291. }
  292. break;
  293. case DUNGEON_ID::LUMEL_REMAINS_MARTIAL_CAT:
  294. switch ($stage){
  295. case 1:
  296. return APPLICATION::img("UNIT", 15032);
  297. break;
  298. case 2:
  299. return APPLICATION::img("UNIT", 15034);
  300. break;
  301. case 3:
  302. return APPLICATION::img("UNIT", 15031);
  303. break;
  304. case 4:
  305. return APPLICATION::img("UNIT", 15035);
  306. break;
  307. case 5:
  308. return APPLICATION::img("UNIT", 15033);
  309. break;
  310. default:
  311. return APPLICATION::img("AREA", $this->id);
  312. break;
  313. }
  314. break;
  315. default:
  316. return APPLICATION::img("AREA", $this->id);
  317. break;
  318. }
  319. }
  320. elseif ($this->type == AREA_TYPE_ID::TARTARUS_LABYRINTH){
  321. switch ($stage){
  322. case LABYRINTH_STAGES_ID::TARTARUS:
  323. return APPLICATION::img("UNIT", 46001);
  324. break;
  325. case LABYRINTH_STAGES_ID::LEOS:
  326. return APPLICATION::img("UNIT", 46101);
  327. break;
  328. case LABYRINTH_STAGES_ID::KOTTOS:
  329. return APPLICATION::img("UNIT", 46102);
  330. break;
  331. case LABYRINTH_STAGES_ID::AQUILES:
  332. return APPLICATION::img("UNIT", 46103);
  333. break;
  334. default:
  335. return APPLICATION::img("AREA", $this->id);
  336. }
  337. }
  338. elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){
  339. return APPLICATION::img("AREA", "TRIAL_OF_ASCENSION");
  340. }
  341. else{
  342. return APPLICATION::img("AREA", $this->id);
  343. }
  344. }
  345. }
  346. ?>