K_Area.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344
  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. $s = "
  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 = '$type' DESC;
  57. ";
  58. $q = $db->query($s);
  59. $r = $q->fetchArray(SQLITE3_ASSOC);
  60. if ($r){
  61. $this->name = HTML::e($r["name"]);
  62. }
  63. elseif($this->id > 1000){
  64. $this->type = AREA_TYPE_ID::CAIROS_DUNGEON;
  65. $this->name = "Hall of Heroes";
  66. }
  67. }
  68. /**
  69. * Gets the path to the area image. The image must be in the
  70. * img/area/ directory, and its name must be the area type id,
  71. * padded with '0' to 9 digites, and the extension must be '.png'.
  72. *
  73. * @param string $stage Stage number, for a better image in Cairos.
  74. * @return string Image URL, or a fixed unknown image.
  75. */
  76. public function get_image($stage = null){
  77. if ($this->id > 10000){
  78. // Hall of Heroes
  79. return APPLICATION::img("AREA", "HOH");
  80. }
  81. elseif (
  82. $this->type == AREA_TYPE_ID::SCENARIO ||
  83. $this->type == AREA_TYPE_ID::ARENA ||
  84. $this->type == AREA_TYPE_ID::GUILD_WAR ||
  85. $this->type == AREA_TYPE_ID::GUILD_SIEGE ||
  86. $this->type == AREA_TYPE_ID::WORLD_BOSS ||
  87. $this->type == AREA_TYPE_ID::DIMENSIONAL_RIFT
  88. ){
  89. return APPLICATION::img("AREA", $this->id);
  90. }
  91. elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){
  92. // Special case
  93. return APPLICATION::img("AREA", "TRIAL_OF_ASCENSION");
  94. }
  95. elseif ($this->type == AREA_TYPE_ID::CAIROS_DUNGEON && APPLICATION::valid_id("DUNGEON_ID", $this->id)){
  96. switch ($this->id){
  97. case DUNGEON_ID::GIANTS_KEEP:
  98. return APPLICATION::img("UNIT", 60201);
  99. break;
  100. case DUNGEON_ID::DRAGONS_LAIR:
  101. return APPLICATION::img("UNIT", 60302);
  102. break;
  103. case DUNGEON_ID::NECROPOLIS:
  104. return APPLICATION::img("UNIT", 62105);
  105. break;
  106. case DUNGEON_ID::STEEL_FORTRESS:
  107. return APPLICATION::img("UNIT", 62105); // TODO: Correct image.
  108. break;
  109. case DUNGEON_ID::PUNISHERS_CRYPT:
  110. return APPLICATION::img("UNIT", 62105); // TODO: Correct image.
  111. break;
  112. case DUNGEON_ID::HALL_OF_WATER:
  113. return APPLICATION::img("UNIT", 60101);
  114. break;
  115. case DUNGEON_ID::HALL_OF_FIRE:
  116. return APPLICATION::img("UNIT", 60102);
  117. break;
  118. case DUNGEON_ID::HALL_OF_WIND:
  119. return APPLICATION::img("UNIT", 60103);
  120. break;
  121. case DUNGEON_ID::HALL_OF_LIGHT:
  122. return APPLICATION::img("UNIT", 60104);
  123. break;
  124. case DUNGEON_ID::HALL_OF_DARK:
  125. return APPLICATION::img("UNIT", 60105);
  126. break;
  127. case DUNGEON_ID::HALL_OF_MAGIC:
  128. return APPLICATION::img("UNIT", 62004);
  129. break;
  130. default:
  131. return APPLICATION::img("AREA", $this->id);
  132. }
  133. }
  134. elseif ($this->type == AREA_TYPE_ID::RIFT_DUNGEON && APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $this->id)){
  135. switch ($this->id){
  136. case ELEMENTAL_RIFT_DUNGEON_ID::ICE_BEAST:
  137. return APPLICATION::img("UNIT", 43001);
  138. break;
  139. case ELEMENTAL_RIFT_DUNGEON_ID::FIRE_BEAST:
  140. return APPLICATION::img("UNIT", 43002);
  141. break;
  142. case ELEMENTAL_RIFT_DUNGEON_ID::WIND_BEAST:
  143. return APPLICATION::img("UNIT", 43003);
  144. break;
  145. case ELEMENTAL_RIFT_DUNGEON_ID::LIGHT_BEAST:
  146. return APPLICATION::img("UNIT", 43004);
  147. break;
  148. case ELEMENTAL_RIFT_DUNGEON_ID::DARK_BEAST:
  149. return APPLICATION::img("UNIT", 43005);
  150. break;
  151. default:
  152. return APPLICATION::img("AREA", $this->id);
  153. break;
  154. }
  155. }
  156. elseif ($this->type == AREA_TYPE_ID::RIFT_RAID){
  157. return APPLICATION::img("UNIT", 44007);
  158. }
  159. elseif ($this->type == AREA_TYPE_ID::DIMENSIONAL_HOLE){
  160. switch ($this->id){
  161. case DUNGEON_ID::FOREST_OF_ROARING_BEASTS:
  162. return APPLICATION::img("UNIT", 47002);
  163. break;
  164. case DUNGEON_ID::SANCTUARY_OF_DREAMING_FAIRIES:
  165. return APPLICATION::img("UNIT", 47001);
  166. break;
  167. case DUNGEON_ID::CLIFF_OF_TOUGH_BEASTS_MEN:
  168. return APPLICATION::img("UNIT", 47002);
  169. break;
  170. case DUNGEON_ID::KARZHAN_REMAINS_WARBEAR:
  171. switch ($stage){
  172. case 1:
  173. return APPLICATION::img("UNIT", 10734);
  174. break;
  175. case 2:
  176. return APPLICATION::img("UNIT", 10733);
  177. break;
  178. case 3:
  179. return APPLICATION::img("UNIT", 10731);
  180. break;
  181. case 4:
  182. return APPLICATION::img("UNIT", 10735);
  183. break;
  184. case 5:
  185. return APPLICATION::img("UNIT", 10732);
  186. break;
  187. default:
  188. return APPLICATION::img("AREA", $this->id);
  189. break;
  190. }
  191. break;
  192. case DUNGEON_ID::KARZHAN_REMAINS_INUGAMI:
  193. switch ($stage){
  194. case 1:
  195. return APPLICATION::img("UNIT", 11031);
  196. break;
  197. case 2:
  198. return APPLICATION::img("UNIT", 11033);
  199. break;
  200. case 3:
  201. return APPLICATION::img("UNIT", 11032);
  202. break;
  203. case 4:
  204. return APPLICATION::img("UNIT", 11034);
  205. break;
  206. case 5:
  207. return APPLICATION::img("UNIT", 11035);
  208. break;
  209. default:
  210. return APPLICATION::img("AREA", $this->id);
  211. break;
  212. }
  213. break;
  214. case DUNGEON_ID::ELLUNIA_REMAINS_FAIRY:
  215. switch ($stage){
  216. case 1:
  217. return APPLICATION::img("UNIT", 10132);
  218. break;
  219. case 2:
  220. return APPLICATION::img("UNIT", 10134);
  221. break;
  222. case 3:
  223. return APPLICATION::img("UNIT", 10131);
  224. break;
  225. case 4:
  226. return APPLICATION::img("UNIT", 10133);
  227. break;
  228. case 5:
  229. return APPLICATION::img("UNIT", 10134);
  230. break;
  231. default:
  232. return APPLICATION::img("AREA", $this->id);
  233. break;
  234. }
  235. break;
  236. case DUNGEON_ID::ELLUNIA_REMAINS_PIXIE:
  237. switch ($stage){
  238. case 1:
  239. return APPLICATION::img("UNIT", 10334);
  240. break;
  241. case 2:
  242. return APPLICATION::img("UNIT", 10332);
  243. break;
  244. case 3:
  245. return APPLICATION::img("UNIT", 10335);
  246. break;
  247. case 4:
  248. return APPLICATION::img("UNIT", 10333);
  249. break;
  250. case 5:
  251. return APPLICATION::img("UNIT", 10331);
  252. break;
  253. default:
  254. return APPLICATION::img("AREA", $this->id);
  255. break;
  256. }
  257. break;
  258. case DUNGEON_ID::LUMEL_REMAINS_WEREWOLF:
  259. switch ($stage){
  260. case 1:
  261. return APPLICATION::img("UNIT", 14035);
  262. break;
  263. case 2:
  264. return APPLICATION::img("UNIT", 14033);
  265. break;
  266. case 3:
  267. return APPLICATION::img("UNIT", 14031);
  268. break;
  269. case 4:
  270. return APPLICATION::img("UNIT", 14034);
  271. break;
  272. case 5:
  273. return APPLICATION::img("UNIT", 14032);
  274. break;
  275. default:
  276. return APPLICATION::img("AREA", $this->id);
  277. break;
  278. }
  279. break;
  280. case DUNGEON_ID::LUMEL_REMAINS_MARTIAL_CAT:
  281. switch ($stage){
  282. case 1:
  283. return APPLICATION::img("UNIT", 15032);
  284. break;
  285. case 2:
  286. return APPLICATION::img("UNIT", 15034);
  287. break;
  288. case 3:
  289. return APPLICATION::img("UNIT", 15031);
  290. break;
  291. case 4:
  292. return APPLICATION::img("UNIT", 15035);
  293. break;
  294. case 5:
  295. return APPLICATION::img("UNIT", 15033);
  296. break;
  297. default:
  298. return APPLICATION::img("AREA", $this->id);
  299. break;
  300. }
  301. break;
  302. default:
  303. return APPLICATION::img("AREA", $this->id);
  304. break;
  305. }
  306. }
  307. elseif ($this->type == AREA_TYPE_ID::TARTARUS_LABYRINTH){
  308. switch ($stage){
  309. case LABYRINTH_STAGES_ID::TARTARUS:
  310. return APPLICATION::img("UNIT", 46001);
  311. break;
  312. case LABYRINTH_STAGES_ID::LEOS:
  313. return APPLICATION::img("UNIT", 46101);
  314. break;
  315. case LABYRINTH_STAGES_ID::KOTTOS:
  316. return APPLICATION::img("UNIT", 46102);
  317. break;
  318. case LABYRINTH_STAGES_ID::AQUILES:
  319. return APPLICATION::img("UNIT", 46103);
  320. break;
  321. default:
  322. return APPLICATION::img("AREA", $this->id);
  323. }
  324. }
  325. elseif ($this->type == AREA_TYPE_ID::TRIAL_OF_ASCENSION){
  326. return APPLICATION::img("AREA", "TRIAL_OF_ASCENSION");
  327. }
  328. else{
  329. return APPLICATION::img("AREA", $this->id);
  330. }
  331. }
  332. }
  333. ?>