Tengo este código. Mi pregunta se refiere a las variables de estructura weapons
, armour
, &stats
enum Armour {Chest, Helm, Boots, Leggings, Gloves, Shield}
enum Weapon {Sword, Axe, Wand, Gun, Hammer, Fist}
struct Statistics { uint16 testing; }
struct Character {string name;
uint dna;
mapping (uint => Statistics) stats;
mapping (uint => Weapon[10]) weapons;
Armour[10] armour;
}
Character[] public characters;
Armour[10] armourTest;
Weapon[10] weaponsTest;
No veo mucho http://solidity.readthedocs.io/en/v0.4.21/types.html#enums
sobre matrices de enumeración y asignaciones de enumeraciones como valores de matriz.
¿Cómo puedo usar variables de estructura weapons
, armour
y stats
después de haber insertado un carácter en la variable pública characters
?
Este es un fragmento muy abreviado para darle algunas ideas. Es posible que esté buscando un modelo relacional con más características completas como el que se describe aquí: https://medium.com/@robhitchens/enforcing-referential-integrity-in-ethereum-smart-contracts-a9ab1427ff42
pragma solidity ^0.4.19;
contract RPG {
enum Armor {Chest, Helm, Boots, Leggings, Gloves, Shield}
enum Weapon {Sword, Axe, Wand, Gun, Hammer, Fist}
struct CharacterStruct {string name;
bool isCharacter;
uint dna;
Armor[] armors;
Weapon[] weapons;
}
mapping(address => CharacterStruct) public characterStructs;
address[] public characters;
modifier onlyIfRegistered() {
require(characterStructs[msg.sender].isCharacter);
_;
}
function register() public returns(bool success) {
require(!characterStructs[msg.sender].isCharacter);
characters.push(msg.sender);
characterStructs[msg.sender].isCharacter = true;
return true;
}
function addArmor(Armor a) public onlyIfRegistered returns(bool success) {
characterStructs[msg.sender].armors.push(a);
return true;
}
function getArmor(address player, uint row) public view returns(Armor armor) {
return characterStructs[player].armors[row];
}
}
Espero eso ayude.
alper
addArmor()
la función? Me gusta:addArmor('Chest')
oaddArmor(0)
@Rob Hitchens - B9labRob Hitchens
enum
for,Armor
por lo que la entrada seríauint8
(0 para 'Cofre', 1 para Helm, 2 para Botas, etc. La sintaxis depende de su interfaz. En JS con Truffle, myRPGInstance.addArmor(0)};`alper
addArmor(<uint8>)
será la forma correcta de llamarlo.