//public VirtualGoodData VirtualGood { get; set; }

    public static MissionMetadata ParseFromDictionary(System.Collections.Generic.Dictionary <string, object> missionMetadataDict)
    {
        MissionMetadata missionMetadata = new MissionMetadata();

        if (missionMetadataDict.ContainsKey("name"))
        {
            missionMetadata.Name = Convert.ToString(missionMetadataDict["name"]);
        }
        if (missionMetadataDict.ContainsKey("virtualGood"))
        {
            /*
             * VirtualGoodData virtualGood = new VirtualGoodData();
             * System.Collections.Generic.Dictionary<string,object> virtualGoodDict = missionMetadataDict["virtualGood"] as System.Collections.Generic.Dictionary<string,object>;
             * if( virtualGoodDict.ContainsKey( "iconUrl" ) ) {
             *      virtualGood.IconUrl = Convert.ToString( virtualGoodDict["iconUrl"]);
             * }
             * if( virtualGoodDict.ContainsKey( "description" ) ) {
             *      virtualGood.Description = Convert.ToString( virtualGoodDict["description"] );
             * }
             * if( virtualGoodDict.ContainsKey( "id" ) ) {
             *      virtualGood.Id = Convert.ToString( virtualGoodDict["id"] );
             * }
             * if( virtualGoodDict.ContainsKey( "goodId" ) ) {
             *      virtualGood.GoodId = Convert.ToString( virtualGoodDict["goodId"] );
             * }
             * virtualGood.Init();
             * missionMetadata.VirtualGood = virtualGood;
             */
        }
        if (missionMetadataDict.ContainsKey("gamedata"))
        {
            missionMetadata.GameData = Convert.ToString(missionMetadataDict["gamedata"]);
        }
        return(missionMetadata);
    }
 //public VirtualGoodData VirtualGood { get; set; }
 public static MissionMetadata ParseFromDictionary( System.Collections.Generic.Dictionary<string,object> missionMetadataDict )
 {
     MissionMetadata missionMetadata = new MissionMetadata();
     if( missionMetadataDict.ContainsKey( "name" ) ) {
         missionMetadata.Name = Convert.ToString( missionMetadataDict["name"] );
     }
     if( missionMetadataDict.ContainsKey( "virtualGood" ) ) {
         /*
         VirtualGoodData virtualGood = new VirtualGoodData();
         System.Collections.Generic.Dictionary<string,object> virtualGoodDict = missionMetadataDict["virtualGood"] as System.Collections.Generic.Dictionary<string,object>;
         if( virtualGoodDict.ContainsKey( "iconUrl" ) ) {
             virtualGood.IconUrl = Convert.ToString( virtualGoodDict["iconUrl"]);
         }
         if( virtualGoodDict.ContainsKey( "description" ) ) {
             virtualGood.Description = Convert.ToString( virtualGoodDict["description"] );
         }
         if( virtualGoodDict.ContainsKey( "id" ) ) {
             virtualGood.Id = Convert.ToString( virtualGoodDict["id"] );
         }
         if( virtualGoodDict.ContainsKey( "goodId" ) ) {
             virtualGood.GoodId = Convert.ToString( virtualGoodDict["goodId"] );
         }
         virtualGood.Init();
         missionMetadata.VirtualGood = virtualGood;
         */
     }
     if( missionMetadataDict.ContainsKey( "gamedata" ) ) {
         missionMetadata.GameData = Convert.ToString( missionMetadataDict["gamedata"] );
     }
     return missionMetadata;
 }
    public override void Create(System.Collections.Generic.Dictionary <string, object> dataDict)
    {
        Debug.Log("IgniteMission:Create");

        base.Create(dataDict);

        if (dataDict.ContainsKey("metadata"))
        {
            System.Collections.Generic.Dictionary <string, object> missionMetadataDict = dataDict["metadata"] as System.Collections.Generic.Dictionary <string, object>;
            this.Metadata = MissionMetadata.ParseFromDictionary(missionMetadataDict);
        }
        if (dataDict.ContainsKey("rules"))
        {
            this.Rules = new System.Collections.Generic.Dictionary <string, MissionRuleData>();
            System.Collections.Generic.List <object> rulesList = dataDict["rules"] as System.Collections.Generic.List <object>;
            foreach (object rule in rulesList)
            {
                System.Collections.Generic.Dictionary <string, object> ruleDict = rule as System.Collections.Generic.Dictionary <string, object>;
                MissionRuleData ruleData = MissionRuleData.ParseFromDictionary(ruleDict);
                this.Rules.Add(ruleData.Id, ruleData);
            }
        }
    }