* @license https://www.gnu.org/licenses/gpl-3.0.en.html GNU General Public License V3 * @package SWDB */ require_once(PATH::PAGE . "Page.php"); require_once(PATH::ENTITY . "Monster.php"); /** * Monster details page model. * * @category Page */ class Monster_Page extends Page{ /** * @var Monster[] Selected unit array. * * [0]: Unawakened monster (null if default purple). * [1]: Awakened monster (null if silver). * [2]: Second awakened monster (null if unavailaable). */ private $monster = []; /** * @var int[] IDs to other units of the family * @todo Implement. */ private $family = []; /** * @var bool Indicates a silver monster. */ private $silver = false; /** * @var bool Indicates a default purple (always awaken) monster. */ private $purple = false; /** * @var bool Indicates a monstes that can second awaken. */ private $red = false; /** * Constructor. * * Retrieves the data and initializes the variables. * * @param int $id Monster id. Can be any of the awakening stages */ public function __construct($id){ $this->view = PATH::VIEW . "monster.php"; $title = ""; $monster = new Monster($id); if (! $monster->can_awaken()){ // Silver star monster. $this->silver = true; $this->monster[0] = $monster; $this->monster[1] = null; $this->monster[2] = null; $title = $this->monster[0]->element_name . " " . $this->monster[0]->name; } elseif ($monster->can_awaken() && $monster->get_awakens_to() == null && $monster->get_awakens_from() == null){ // Default purple (Rainbowmon or King Angelmon) $this->purple = true; $this->monster[0] = null; $this->monster[1] = $monster; $this->monster[2] = null; $title = $this->monster[1]->name; } elseif ($monster->can_awaken() && $monster->get_awakens_to() == null && $monster->get_awakens_from() != null){ // Normal monster, already awakened, no 2a. $this->monster[0] = new Monster($monster->get_awakens_from()); $this->monster[1] = $monster; $this->monster[2] = null; $title = $this->monster[1]->get_name() . " - " .$this->monster[0]->get_element_name() . " " . $this->monster[0]->get_name(); $monster = $this->monster[0]; } elseif ($monster->can_awaken() && $monster->get_awakens_to() != null && $monster->get_awakens_from() == null){ // Normal monster, not awakened, may have 2a. $this->monster[0] = $monster; $this->monster[1] = new Monster($this->monster[0]->get_awakens_to()); if ($this->monster[1]->get_awakens_to() == null){ $this->monster[2] = null; } else{ $this->red = true; $this->monster[2] = new Monster($this->monster[1]->get_awakens_to()); } $title = $this->monster[1]->get_name() . " - " .$this->monster[0]->get_element_name() . " " . $this->monster[0]->get_name(); } $this->title = $title ." - SWDB"; $this->description = $title . " info - SWDB"; $this->canonical = URL::BASE . "monster_info/" . $id; } /** * Retrieves the monster line to show. * * Index [0]: Unawakened monster (null if default purple). * Index [1]: Awakened monster (null if silver). * Index [2]: Second awakened monster (null if unavailaable). * * @return Monster[] */ public function get_monsters(){ return $this->monster; } /** * Retrieves the monster family. * * @return multitype:number */ public function get_family(){ return $this->family; } /** * Checks if the monster is default silver (non awakeable). * * @return bool True for silver monsters, false otherwise. */ public function is_silver(){ return $this->silver; } /** * Checks if the monster is default purple (always awaken). * * @return bool True for purple monsters, false otherwise. */ public function is_purple(){ return $this->purple; } /** * Checks if the monster can second awaken. * * @return bool True for monsters that can 2A, false otherwise. */ public function can_2a(){ return $this->red; } } ?>