Ejemplo n.º 1
0
 public void SetCar(Address ownerAddress, string tokenID, CarData data, CarMutableData mutableData)
 {
     OwnerAddress = ownerAddress;
     TokenID      = tokenID;
     Data         = data;
     MutableData  = mutableData;
     Image        = PhantasmaDemo.Instance.carImages[data.imageID];
 }
Ejemplo n.º 2
0
    /// <summary>
    /// Check if the auction purchase was successful
    /// </summary>
    private IEnumerator CheckTokenMint(CarData carData, CarMutableData carMutableData, string result)
    {
        CanvasManager.Instance.ShowOperationPopup("Checking token mint...", true);

        yield return(CheckOperation(EBLOCKCHAIN_OPERATION.MINT_TOKEN, result,
                                    (tx) =>
        {
            foreach (var evt in tx.events)
            {
                EventKind eKind;
                if (Enum.TryParse(evt.kind, out eKind))
                {
                    if (eKind == EventKind.TokenMint)
                    {
                        var bytes = Base16.Decode(evt.data);
                        var tokenData = Serialization.Unserialize <TokenEventData>(bytes);

                        var tokenID = tokenData.value;

                        var newCar = new Car();
                        newCar.SetCar(Key.Address, tokenID.ToString(), carData, carMutableData);

                        // Add new car to admin assets
                        MyCars.Add(tokenID.ToString(), newCar);

                        CheckTokens(() => { CanvasManager.Instance.adminMenu.SetContent(); });

                        CanvasManager.Instance.ShowResultPopup(EOPERATION_RESULT.SUCCESS, "Token mint with success.");

                        return;
                    }
                }
            }

            CanvasManager.Instance.HideOperationPopup();
            CanvasManager.Instance.ShowResultPopup(EOPERATION_RESULT.FAIL, "Something failed while executing a new token mint. Please try again.");
        },
                                    ((errorType, errorMessage) =>
        {
            CanvasManager.Instance.HideOperationPopup();
            CanvasManager.Instance.ShowResultPopup(EOPERATION_RESULT.FAIL, errorType + " - " + errorMessage);
        })));
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Mint a new token and increase the supply of the created token
    /// </summary>
    public void MintToken(string tokenName)
    {
        var carData = new CarData
        {
            rarity  = CarRarity.Common,
            imageID = Random.Range(0, carImages.Count)
        };

        var carMutableData = new CarMutableData
        {
            name     = tokenName,
            power    = (byte)Random.Range(1, 10),
            speed    = (byte)Random.Range(1, 10),
            location = CarLocation.None,
        };

        var txData        = Serialization.Serialize(carData);
        var txMutableData = Serialization.Serialize(carMutableData);

        var script = ScriptUtils.BeginScript()
                     .AllowGas(Key.Address, Address.Null, 1, 9999)
                     .CallContract("token", "MintToken", Key.Address, TOKEN_SYMBOL, txData, txMutableData, 0)
                     .SpendGas(Key.Address)
                     .EndScript();

        CanvasManager.Instance.ShowOperationPopup("Minting a new token...", false);

        StartCoroutine(PhantasmaApi.SignAndSendTransaction(Key, script, "main",
                                                           (result) =>
        {
            StartCoroutine(CheckTokenMint(carData, carMutableData, result));
        },
                                                           (errorType, errorMessage) =>
        {
            CanvasManager.Instance.ShowResultPopup(EOPERATION_RESULT.FAIL, errorType + " - " + errorMessage);
        }
                                                           ));
    }