-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzombieFront.js
47 lines (43 loc) · 2.05 KB
/
zombieFront.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
// Así es como accederiamos a nuestro contrato:
var abi = /* abi generado por el compilador */
var ZombieFactoryContract = web3.eth.contract(abi)
var contractAddress = /* nuestra dirección del contrato en Ethereum después de implementarlo */
var ZombieFactory = ZombieFactoryContract.at(contractAddress)
// `ZombieFactory` ha accedido a las funciones y eventos públicos de nuestro contrato
// algunos eventos están escuchando para recoger el valor del texto:
$("#ourButton").click(function(e) {
var name = $("#nameInput").val()
// Llama a la función `createRandomZombie` de nuestro contrato:
ZombieFactory.createRandomZombie(name)
})
// Escucha al evento de `NewZombie`, y actualiza la interfaz
var event = ZombieFactory.NewZombie(function(error, result) {
if (error) return
generateZombie(result.zombieId, result.name, result.dna)
})
// Recogemos el adn del zombi y actualizamos nuestra imagen
function generateZombie(id, name, dna) {
let dnaStr = String(dna)
// rellenamos el ADN con ceros si es menor de 16 caracteres
while (dnaStr.length < 16)
dnaStr = "0" + dnaStr
let zombieDetails = {
// los primeros 2 dígitos hacen la cabeza. Tenemos 7 posibles cabezas, entonces hacemos % 7
// para obtener un número entre 0 - 6, después le sumamos 1 para hacerlo entre 1 - 7. Tenemos 7
// imagenes llamadas desde "head1.png" hasta "head7.png" que cargamos en base a
// este número:
headChoice: dnaStr.substring(0, 2) % 7 + 1,
// Los siguientes 2 dígitos se refieren a los ojos, 11 variaciones:
eyeChoice: dnaStr.substring(2, 4) % 11 + 1,
// 6 variaciones de camisetas:
shirtChoice: dnaStr.substring(4, 6) % 6 + 1,
// los últimos 6 digitos controlas el color. Actualiza el filtro CSS: hue-rotate
// que tiene 360 grados:
skinColorChoice: parseInt(dnaStr.substring(6, 8) / 100 * 360),
eyeColorChoice: parseInt(dnaStr.substring(8, 10) / 100 * 360),
clothesColorChoice: parseInt(dnaStr.substring(10, 12) / 100 * 360),
zombieName: name,
zombieDescription: "A Level 1 CryptoZombie",
}
return zombieDetails
}