SolidityLabs/zombie-project/zombiehelper.sol

48 lines
1.2 KiB
Solidity
Raw Permalink Normal View History

2022-08-05 06:57:30 -03:00
pragma solidity ^0.4.19;
import "./zombiefeeding.sol";
contract ZombieHelper is ZombieFeeding {
2022-08-05 13:26:12 -03:00
uint levelUpFee = 0.001 ether;
2022-08-05 06:57:30 -03:00
modifier aboveLevel(uint _level, uint _zombieId) {
require(zombies[_zombieId].level >= _level);
_;
}
2022-08-05 13:38:31 -03:00
function withdraw() external onlyOwner {
owner.transfer(this.balance);
}
function setLevelUpFee(uint _fee) external onlyOwner {
levelUpFee = _fee;
}
2022-08-05 16:06:58 -03:00
function levelUp(uint _zombieId) external payable {
require(msg.value == levelUpFee);
zombies[_zombieId].level++;
}
2022-08-05 16:58:11 -03:00
function changeName(uint _zombieId, string _newName) external aboveLevel(2, _zombieId) onlyOwnerOf(_zombieId) {
2022-08-05 07:12:16 -03:00
zombies[_zombieId].name = _newName;
}
2022-08-05 16:58:11 -03:00
function changeDna(uint _zombieId, uint _newDna) external aboveLevel(20, _zombieId) onlyOwnerOf(_zombieId) {
2022-08-05 07:12:16 -03:00
zombies[_zombieId].dna = _newDna;
}
2022-08-05 12:01:08 -03:00
function getZombiesByOwner(address _owner) external view returns(uint[]) {
uint[] memory result = new uint[](ownerZombieCount[_owner]);
2022-08-05 12:32:50 -03:00
uint counter = 0;
2022-08-05 13:26:12 -03:00
for (uint i = 0; i < zombies.length; i++) {
2022-08-05 12:32:50 -03:00
if (zombieToOwner[i] == _owner) {
result[counter] = i;
counter++;
}
}
2022-08-05 12:01:08 -03:00
return result;
}
2022-08-05 11:21:49 -03:00
2022-08-05 06:57:30 -03:00
}