mapping(uint256 => uint256) characters; mapping(uint256 => uint256) dnaRecords;function setCharacter(uint256 _id, address owner, uint256 creationTime, uint256 strength, uint256 race, uint256 class, uint256 dna) external { uint256 character = uint256(owner); character |= creationTime<<160; character |= strength<<208; character |= race<<224; character |= class<<240; characters[_id] = character; dnaRecords[_id] = dna; } function getCharacter(uint256 _id) external view returns(address owner, uint256 creationTime, uint256 strength, uint256 race, uint256 class, uint256 dna) { uint256 character = characters[_id]; dna = dnaRecords[_id]; owner = address(character); creationTime = uint256(uint40(character>>160)); strength = uint256(uint16(character>>208)); race = uint256(uint16(character>>224)); class = uint256(uint16(character>>240)); } struct GameCharacter { address owner; uint256 creationTime; uint256 strength; uint256 race; uint256 class; uint256 dna; } function getCharacterStruct(uint256 _id) external view returns(GameCharacter memory _character) { uint256 character = characters[_id]; _character.dna = dnaRecords[_id]; _character.owner = address(character); _character.creationTime = uint256(uint40(character>>160)); _character.strength = uint256(uint16(character>>208)); _character.race = uint256(uint16(character>>224)); _character.class = uint256(uint16(character>>240)); }
0.4.18