/// <summary>
    /// Customs the event call.
    /// </summary>
    /// <param name='type'>
    /// Type.
    /// </param>
    /// <param name='param'>
    /// Parameter.
    /// </param>
    public void CustomEventCall(CustomEventType type, params object[] param)
    {
        return;

        try{
            Globals.Instance.MConnectManager.PutFlurryEvent(type.ToString(), param);

            ProcessTalkingDataPurchaseEvent(type, param);
        }catch {};
    }
    /// <summary>
    /// Processes the talking data purchase event.
    /// </summary>
    /// <param name='type'>
    /// Type.
    /// </param>
    /// <param name='param'>
    /// Parameter.
    /// </param>
    private void ProcessTalkingDataPurchaseEvent(CustomEventType type, params object[] param)
    {
        switch (type)
        {
        case CustomEventType.BlueprintCompose:
            if ((bool)param[1])
            {
                UploadTalkingDataPurchaseEvent(type.ToString(), 100);
            }
            break;

        case CustomEventType.TechSpeedUp:
            if ((int)param[3] == 2)
            {
                UploadTalkingDataPurchaseEvent(type.ToString(), (int)param[5]);
            }
            break;

        case CustomEventType.IngotExchange:
            UploadTalkingDataPurchaseEvent(type.ToString(), (int)param[1]);
            break;

        case CustomEventType.AddShipBlood:
            UploadMoneyConsumeEvent(type.ToString(), (int)param[1]);
            break;

        case CustomEventType.BuyTreasureMap:
            UploadMoneyConsumeEvent(type.ToString(), (int)param[1]);
            break;

        default:
            // upload the purchase talkingdata event
            //
            for (int idx = 0; idx < param.Length; idx++)
            {
                object p = param[idx];

                // has
                if (p is string && p.ToString() == "price" && idx < param.Length - 1)
                {
                    bool tUploadIngot = true;

                    for (int i = 0; i < param.Length; i++)
                    {
                        if (param[i] is string && param[i].ToString() == "useIngot")
                        {
                            if (!(bool)(param[i + 1]))
                            {
                                tUploadIngot = false;
                            }
                        }
                    }

                    int priceOrMoney = int.Parse(param[idx + 1].ToString());

                    if (tUploadIngot)
                    {
                        UploadTalkingDataPurchaseEvent(type.ToString(), priceOrMoney);
                    }
                    else
                    {
                        UploadMoneyConsumeEvent(type.ToString(), priceOrMoney);
                    }

                    break;
                }
            }

            break;
        }
    }