contract DungeonCoreAlpha is Destructible, DungeonTraining {

    /**
     * Initialize the DungeonCore(Alpha) contract with all the required contract addresses.
     */
    function DungeonCoreAlpha(
        address _dungeonTokenAddress,
        address _heroTokenAddress,
        address _challengeScienceAddress,
        address _trainingScienceAddress
    ) public payable {
        dungeonTokenContract = DungeonToken(_dungeonTokenAddress);
        heroTokenContract = HeroToken(_heroTokenAddress);
        challengeScienceContract = ChallengeScienceInterface(_challengeScienceAddress);
        trainingScienceContract = TrainingScienceInterface(_trainingScienceAddress);
    }

    /**
     * @dev The external function to get all the relevant information about a specific dungeon by its ID.
     * @param _id The ID of the dungeon.
     */
    function getDungeonDetails(uint _id) external view returns (uint creationTime, uint status, uint difficulty, uint floorNumber, uint floorCreationTime, uint rewards, uint seedGenes, uint floorGenes) {
        require(_id < dungeonTokenContract.totalSupply());

        (creationTime, status, difficulty, floorNumber, floorCreationTime, rewards, seedGenes, floorGenes) = dungeonTokenContract.dungeons(_id);
    }

    /**
     * @dev The external function to get all the relevant information about a specific hero by its ID.
     * @param _id The ID of the hero.
     */
    function getHeroDetails(uint _id) external view returns (uint creationTime, uint genes) {
        require(_id < heroTokenContract.totalSupply());

        (creationTime, genes) = heroTokenContract.heroes(_id);
    }

}
/**
 * @title DungeonCoreAlpha
 * @dev Base contract for Ether Dungeon. Holds all common structs, events and base variables.
 *  When Beta launches, DungeonCoreBeta contract will be deployed and DungeonCoreAlpha will be destroyed.
 *  Since all dungeons and heroes are stored as tokens in external contracts, they remains immutable.
 */
function getHeroDetails(uint _id) external view returns (uint creationTime, uint genes) {
        require(_id < heroTokenContract.totalSupply());

        (creationTime, genes) = heroTokenContract.heroes(_id);
    }
/**
 * @dev The external function to get all the relevant information about a specific hero by its ID.
 * @param _id The ID of the hero.
 */