public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            SkinnedMeshRenderer ic = component as SkinnedMeshRenderer;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了

            //材质
            MyJson.JsonNode_Array mats = new MyJson.JsonNode_Array();

            json["mats"] = mats;

            foreach (var m in ic.sharedMaterials)
            {
                string hash = resmgr.SaveMat(m);
                mats.Add(new MyJson.JsonNode_ValueString(hash));
            }

            //bounds
            json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.center));
            json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localBounds.size));

            //mesh
            json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh));

            json["rootboneobj"] = new MyJson.JsonNode_ValueNumber(ic.rootBone.gameObject.GetInstanceID());
            MyJson.JsonNode_Array bones = new MyJson.JsonNode_Array();
            foreach (var b in ic.bones)
            {
                bones.Add(new MyJson.JsonNode_ValueNumber(b.gameObject.GetInstanceID()));
            }
            json["boneobjs"] = bones;
            ic.rootBone.GetInstanceID();
        }
Example #2
0
 public void Fill(Component com, MyJson.IJsonNode json)
 {
     MeshRenderer t = com as MeshRenderer;
     t.castShadows = json.GetDictItem("castShadows").AsBool();
     t.receiveShadows = json.GetDictItem("receiveShadows").AsBool();
     t.useLightProbes = json.GetDictItem("useLightProbes").AsBool();
     List<Material> mats = new List<Material>();
     foreach (var item in json.GetDictItem("materials").AsList())
     {
         Material mat = new Material(Shader.Find(item.GetDictItem("shader").AsString()));
         mat.name = item.GetDictItem("name").AsString();
         List<string> keywords = new List<string>();
         foreach (var key in item.GetDictItem("shaderkeyword").AsList())
         {
             keywords.Add(key.AsString());
         }
         mat.shaderKeywords = keywords.ToArray();
         if (item.HaveDictItem("maintex"))
         {
             mat.mainTexture = AssetMgr.Instance.GetTexture(item.GetDictItem("maintex").AsString());
         }
         mats.Add(mat);
     }
     t.sharedMaterials = mats.ToArray();
 }
Example #3
0
 public void Fill(Component com, MyJson.IJsonNode json)
 {
     Transform t = com as Transform;
     var jsono = json as MyJson.JsonNode_Object;
     t.localPosition = ComponentTypeConvert.StringToVector3(jsono["P"] as MyJson.JsonNode_ValueString);
     t.localEulerAngles = ComponentTypeConvert.StringToVector3(jsono["R"] as MyJson.JsonNode_ValueString);
     t.localScale = ComponentTypeConvert.StringToVector3(jsono["S"] as MyJson.JsonNode_ValueString);
 }
Example #4
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        LGButton btn = com as LGButton;
        var jsono = json as MyJson.JsonNode_Object;

        btn.Tag = jsono["Tag"] as MyJson.JsonNode_ValueString;
        btn.Team = jsono["Team"] as MyJson.JsonNode_ValueString;
    }
Example #5
0
 public static void ParserWidget(MyJson.JsonNode_Object json, UIWidget widget)
 {
     json["w_color"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.ColorToString(widget.color));
     json["w_pivot"] = new MyJson.JsonNode_ValueString(widget.pivot.ToString());
     json["w_depth"] = new MyJson.JsonNode_ValueNumber(widget.depth);
     json["w_dimensions"] = new MyJson.JsonNode_ValueString(ComponentTypeConvert.Vector2ToString(new Vector2(widget.width, widget.height)));
     json["w_keepasp"] = new MyJson.JsonNode_ValueString(widget.keepAspectRatio.ToString());
     //json["w_asp"] = new MyJson.JsonNode_ValueNumber(widget.aspectRatio);
 }
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        BoxCollider2D t = com as BoxCollider2D;
        var jsono = json as MyJson.JsonNode_Object;

        t.isTrigger = jsono["isTrigger"] as MyJson.JsonNode_ValueNumber;
        t.center = ComponentTypeConvert.StringToVector3(jsono["center"] as MyJson.JsonNode_ValueString);
        t.size = ComponentTypeConvert.StringToVector3(jsono["size"] as MyJson.JsonNode_ValueString);
    }
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        MeshCollider t = com as MeshCollider;
        var jsono = json as MyJson.JsonNode_Object;

        t.isTrigger = jsono["isTrigger"] as MyJson.JsonNode_ValueNumber;
        t.sharedMesh = AssetMgr.Instance.GetMesh(jsono["mesh"].ToString());
        t.convex = json.GetDictItem("convex").AsBool();
        t.smoothSphereCollisions = json.GetDictItem("smoothSphereCollisions").AsBool();
    }
Example #8
0
 /// <summary>
 /// 从json写入二进制流
 /// </summary>
 /// <param name="stream">二进制流</param>
 /// <param name="node">json</param>
 /// <param name="pubdict">一个字符串字典(可选)如果字典里有的字符串,保存只记录一个索引,但是需要字典才能读出来</param>
 /// <param name="riseDictByKey">是否把key添加到字典中(默认为false)</param>
 /// <param name="riseDictByString">是否把String值添加到字典中(默认为false)</param>
 public static void Write(System.IO.Stream stream, MyJson.IJsonNode node, IList<string> pubdict = null, bool riseDictByKey = false, bool riseDictByString = false)
 {
     List<string> localdict = new List<string>();
     System.IO.MemoryStream ms = new System.IO.MemoryStream();
     PackJson(ms, node, pubdict, localdict, riseDictByKey, riseDictByString);
     byte[] data = ms.ToArray();
     ms.Close();
     WriteStrDict(stream, localdict);
     stream.Write(data, 0, data.Length);
 }
        public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp)
        {
            MeshFilter c = node.GetComponent(comptype) as MeshFilter;
            if (c == null)//这就可能了
                c = node.AddComponent<MeshFilter>();

          
            var mesh = resmgr.GetMesh(json["mesh"].AsString());
            c.mesh = mesh;
            return c;
        }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            BoxCollider ic = component as BoxCollider;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了


            json["center"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.center));
            json["size"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.size));

        }
Example #11
0
        public static void FillWidget(UIWidget widget, MyJson.JsonNode_Object json)
        {
            widget.color = ComponentTypeConvert.StringToColor(json["w_color"] as MyJson.JsonNode_ValueString);
            widget.pivot = (UIWidget.Pivot)Enum.Parse(typeof(UIWidget.Pivot), json["w_pivot"] as MyJson.JsonNode_ValueString);
            widget.depth = json["w_depth"] as MyJson.JsonNode_ValueNumber;

            widget.keepAspectRatio = (UIWidget.AspectRatioSource)Enum.Parse(typeof(UIWidget.AspectRatioSource), json["w_keepasp"] as MyJson.JsonNode_ValueString);

            Vector2 demensions = ComponentTypeConvert.StringToVector2(json["w_dimensions"] as MyJson.JsonNode_ValueString);
            widget.SetDimensions((int)demensions.x, (int)demensions.y);

        }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            Transform ic = component as Transform;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了


            json["transmove"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localPosition));
            json["transquat"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localRotation));
            json["transscale"] = new MyJson.JsonNode_ValueString(StringHelper.ToString(ic.localScale));

        }
    public void Fill(Component com, MyJson.IJsonNode json)
    {

        UIDragScrollView t = com as UIDragScrollView;
        var jsono = json as MyJson.JsonNode_Object;

        if (jsono.ContainsKey("scrollView"))
        {
            t.scrollView = (GameObjParser.IDToObj(jsono["scrollView"] as MyJson.JsonNode_ValueNumber)).GetComponent<UIScrollView>();
        }

    }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            MeshFilter ic = component as MeshFilter;
            //json["type"] = new MyJson.JsonNode_ValueString(this.comptype.Name.ToLower());//必须的一行
            //放到外面去了
#if UNITY_EDITOR
            json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.sharedMesh));
#else
            json["mesh"] = new MyJson.JsonNode_ValueString(resmgr.SaveMesh(ic.mesh));
#endif

        }
Example #15
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        Light t = com as Light;
        t.type = (LightType)json.GetDictItem("type").AsInt();
        if (t.type == LightType.Spot)
        {
            t.range = (float)json.GetDictItem("range").AsDouble();
            t.spotAngle = (float)json.GetDictItem("spotangle").AsDouble();




        }
        if (t.type == LightType.Point)
        {
            t.range = (float)json.GetDictItem("range").AsDouble();

        }

        if (t.type != LightType.Area)
        {
            t.color = ComponentTypeConvert.StringToColor(json.GetDictItem("color").AsString());
            t.intensity = (float)json.GetDictItem("intensity").AsDouble();

            //t.cookie
            //t.cookiesize
            t.shadows = (LightShadows)json.GetDictItem("shadowtype").AsInt();

            if (t.shadows != LightShadows.None)
            {
                t.shadowStrength = (float)json.GetDictItem("shadowStrength").AsDouble();
                t.shadowBias = (float)json.GetDictItem("shadowBias").AsDouble();
                //shadow质量找不到怎么操作
            }

            if (t.shadows == LightShadows.Soft)
            {
                t.shadowSoftness = (float)json.GetDictItem("shadowSoftness").AsDouble();
                t.shadowSoftnessFade = (float)json.GetDictItem("shadowSoftnessFade").AsDouble();

            }
            //Drawhalo not found
            //flare
            t.renderMode = (LightRenderMode)json.GetDictItem("renderMode").AsInt();

            json.SetDictValue("renderMode", (int)t.renderMode);
            t.cullingMask = json.GetDictItem("cullingMask").AsInt();

            //lightmapping not found


        }
    }
    public void Fill(Component com, MyJson.IJsonNode json)
    {

        UIDragDropContainer t = com as UIDragDropContainer;
        var jsono = json as MyJson.JsonNode_Object;

        if (jsono.ContainsKey("reparentTarget"))
        {
            t.reparentTarget = (GameObjParser.IDToObj(jsono["reparentTarget"] as MyJson.JsonNode_ValueNumber)).transform;
        }

    }
Example #17
0
	public void Fill(Component com, MyJson.IJsonNode json)
	{
		UIToggle t = com as UIToggle;
		var jsono = json as MyJson.JsonNode_Object;
		//t.group = jsono["group"] as MyJson.JsonNode_ValueNumber;
		//t.value = jsono["value"] as MyJson.JsonNode_ValueNumber;
	//	t.activeSprite = jsono["sprite"] as MyJson.JsonNode_ValueString;
	//	t.onChange = jsono["onChange"] as MyJson.JsonNode_ValueString;
	//	
		if (jsono.ContainsKey("activeSprite")) {
			t.activeSprite = (GameObjParser.IDToObj(jsono["activeSprite"] as MyJson.JsonNode_ValueNumber)).GetComponent<UISprite>();
		}
	}
        public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json,DelayProcess dp)
        {
            BoxCollider c = node.GetComponent(comptype) as BoxCollider;
            if (c == null)
                c = node.AddComponent<BoxCollider>();
            Debug.Log(c);
            Debug.Log("tag=" + json);
            var center = StringHelper.ToVector3(json["center"].AsString());
            var size = StringHelper.ToVector3(json["size"].AsString());

            c.center = center;
            c.size = size;
            return c;
        }
Example #19
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        UIAnchor t = com as UIAnchor;
        var jsono = json as MyJson.JsonNode_Object;

        t.uiCamera = GameObjParser.IDToComponent<Camera>(jsono["uiCamera"] as MyJson.JsonNode_ValueNumber);
        t.container = GameObjParser.IDToObj(jsono["container"] as MyJson.JsonNode_ValueNumber);
        t.side = (UIAnchor.Side)Enum.Parse(typeof(UIAnchor.Side), jsono["side"] as MyJson.JsonNode_ValueString);
        t.runOnlyOnce = jsono["runOnlyOnce"] as MyJson.JsonNode_ValueNumber;
        t.relativeOffset = ComponentTypeConvert.StringToVector2(jsono["relativeOffset"] as MyJson.JsonNode_ValueString);
        t.pixelOffset = ComponentTypeConvert.StringToVector2(jsono["pixelOffset"] as MyJson.JsonNode_ValueString);

       
    }
Example #20
0
        public void WriteToJson(IResMgr resmgr, Material mat, MyJson.JsonNode_Object json)
        {
            json["shaderName"] = new MyJson.JsonNode_ValueString(this.shaderName);
            if (jsonConfig.ContainsKey("params"))
            {
                foreach (var item in jsonConfig["params"].asDict())
                {
                    //Debug.Log(item.Value);
                    string type = item.Value.asDict()["type"].AsString();
                    string flag = item.Value.asDict()["flags"].AsString();
                    string name = item.Value.asDict()["name"].AsString();
                    if (type == "Float" || type == "Range")
                    {
                        json[name] = new MyJson.JsonNode_ValueNumber(mat.GetFloat(name));
                    }
                    else if (type == "Vector")
                    {
                        json[name] = new MyJson.JsonNode_ValueString(StringHelper.ToString(mat.GetVector(name)));
                    }
                    else if (type == "Color")
                    {
                        json[name] = new MyJson.JsonNode_ValueString(StringHelper.ToString((Color32)mat.GetColor(name)));
                    }
                    else if (type == "Texture")
                    {
                        string texdim = item.Value.asDict()["texdim"].AsString();
                        var tex = mat.GetTexture(name);
                        if (tex != null)
                        {
                            if (texdim == "Tex2D")
                            {
                                string texname = resmgr.SaveTexture(tex as Texture2D);
                                json[name] = new MyJson.JsonNode_ValueString(texname);
                            }
                            else
                            {
                                throw new Exception("not support texdim:" + texdim);
                            }
                        }
                    }
                    else
                    {
                        throw new Exception("not support type:" + type);
                    }

                }
            }

        }
 public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp)
 {
     MeshRenderer c = node.GetComponent(comptype) as MeshRenderer;
     if (c == null)//这就可能了
         c = node.AddComponent<MeshRenderer>();
     var mats = json["mats"].AsList();
     Material[] rmats = new Material[mats.Count];
     for (int i = 0; i < mats.Count; i++)
     {
         string hashname = mats[i].AsString();
         rmats[i] = resmgr.GetMat(hashname);
     }
     c.materials = rmats;
     return c;
 }
Example #22
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        UIScrollView sv = com as UIScrollView;
        var jsono = json as MyJson.JsonNode_Object;

        sv.movement = (UIScrollView.Movement)Enum.Parse(typeof(UIScrollView.Movement), jsono["movement"] as MyJson.JsonNode_ValueString);
        sv.dragEffect = (UIScrollView.DragEffect)Enum.Parse(typeof(UIScrollView.DragEffect), jsono["dragEffect"] as MyJson.JsonNode_ValueString);
        sv.scrollWheelFactor = jsono["scrollWheelFactor"] as MyJson.JsonNode_ValueNumber;
        sv.momentumAmount = jsono["momentumAmount"] as MyJson.JsonNode_ValueNumber;
        sv.restrictWithinPanel = jsono["restrictWithinPanel"] as MyJson.JsonNode_ValueNumber;
        sv.disableDragIfFits = jsono["disableDragIfFits"] as MyJson.JsonNode_ValueNumber;
        sv.smoothDragStart = jsono["smoothDragStart"] as MyJson.JsonNode_ValueNumber;
        sv.iOSDragEmulation = jsono["iOSDragEmulation"] as MyJson.JsonNode_ValueNumber;

    }
        public void WriteToJson(IResMgr resmgr, GameObject node, Component component, MyJson.JsonNode_Object json)
        {
            FB.PosePlus.AniPlayer ic = component as FB.PosePlus.AniPlayer;

            MyJson.JsonNode_Array anis = new MyJson.JsonNode_Array();

            json["clips"] = anis;
            foreach (var m in ic.clips)
            {
                string hash = resmgr.SaveAniClip(m);
                anis.Add(new MyJson.JsonNode_ValueString(hash));
            }


        }
 public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp)
 {
     Transform c = node.GetComponent(comptype) as Transform;
     if (c == null)//这并不可能,只是例子
         c = node.AddComponent<Transform>();
     //Debug.Log(c);
     //Debug.Log("tag=" + json);
     var move = StringHelper.ToVector3(json["transmove"].AsString());
     var euler = StringHelper.ToQuaternion(json["transquat"].AsString());
     var scale = StringHelper.ToVector3(json["transscale"].AsString());
     c.localPosition = move;
     c.localScale = scale;
     c.localRotation = euler;
     return c;
 }
        public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp)
        {
            SkinnedMeshRenderer c = node.GetComponent(comptype) as SkinnedMeshRenderer;
            if (c == null)//这就可能了
                c = node.AddComponent<SkinnedMeshRenderer>();

            //mats
            var mats = json["mats"].AsList();
            Material[] rmats = new Material[mats.Count];
            for (int i = 0; i < mats.Count; i++)
            {
                string hashname = mats[i].AsString();
                rmats[i] = resmgr.GetMat(hashname);
            }
            c.materials = rmats;
            //bound
            var center = StringHelper.ToVector3(json["center"].AsString());
            var size = StringHelper.ToVector3(json["size"].AsString());

            c.localBounds = new Bounds(center, size);

            //mesh
            var mesh = resmgr.GetMesh(json["mesh"].AsString());
            c.sharedMesh = mesh;

            //延迟恢复
            if (json.ContainsKey("rootboneobj"))
            {
                dp.delayCall += () =>
                {
                    c.rootBone = dp.mapObjs[json["rootboneobj"].AsInt()].transform;
                };
            }
            if (json.ContainsKey("boneobjs"))
            {
                dp.delayCall += () =>
                  {
                      var array = json["boneobjs"] as MyJson.JsonNode_Array;
                      List<Transform> bones = new List<Transform>();
                      foreach (var b in array)
                      {
                          bones.Add(dp.mapObjs[b.AsInt()].transform);
                      }
                      c.bones = bones.ToArray();
                  };
            }
            return c;
        }
        public Component ReadFromJson(IResMgr resmgr, GameObject node, MyJson.JsonNode_Object json, DelayProcess dp)
        {
            FB.PosePlus.AniPlayer c = node.GetComponent(comptype) as FB.PosePlus.AniPlayer;
            if (c == null)//这就可能了
                c = node.AddComponent<FB.PosePlus.AniPlayer>();

            var clips = json["clips"].AsList();
            c.clips = new List<FB.PosePlus.AniClip>();
            for (int i = 0; i < clips.Count; i++)
            {
                string hashname = clips[i].AsString();
                c.clips.Add(resmgr.GetAniClip(hashname));
            }
            
            return c;
        }
Example #27
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {

        UIGrid t = com as UIGrid;
        var jsono = json as MyJson.JsonNode_Object;

        t.arrangement = (UIGrid.Arrangement)Enum.Parse(typeof(UIGrid.Arrangement), jsono["arrangement"] as MyJson.JsonNode_ValueString);
        t.sorting = (UIGrid.Sorting)Enum.Parse(typeof(UIGrid.Sorting), jsono["sorting"] as MyJson.JsonNode_ValueString);
        t.pivot = (UIWidget.Pivot)Enum.Parse(typeof(UIWidget.Pivot), jsono["pivot"] as MyJson.JsonNode_ValueString);
        t.maxPerLine = jsono["maxPerLine"] as MyJson.JsonNode_ValueNumber;
        t.cellWidth = jsono["cellWidth"] as MyJson.JsonNode_ValueNumber;
        t.cellHeight = jsono["cellHeight"] as MyJson.JsonNode_ValueNumber;
        t.animateSmoothly = jsono["animateSmoothly"] as MyJson.JsonNode_ValueNumber;
        t.hideInactive = jsono["hideInactive"] as MyJson.JsonNode_ValueNumber;
        t.keepWithinPanel = jsono["keepWithinPanel"] as MyJson.JsonNode_ValueNumber;

    }
Example #28
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        UILabel t = com as UILabel;
        var jsono = json as MyJson.JsonNode_Object;

        //font 有特殊的打包逻辑
        if(jsono.ContainsKey("bfont"))
        {
            string bfontname = jsono["bfont"] as MyJson.JsonNode_ValueString;
            t.bitmapFont = FontMgr.Instance.GetUIFont(bfontname);
        }
        else if(jsono.ContainsKey("tfont"))
        {
            string tfontname = jsono["tfont"] as MyJson.JsonNode_ValueString;
            t.trueTypeFont= FontMgr.Instance.GetUnityFont(tfontname);
        }
        else
        {
            Debug.LogWarning("UILabel" + com.name + " 未指定Font");
        }
        t.fontSize = (jsono["fontsize"] as MyJson.JsonNode_ValueNumber);
      

        //材质有特殊的打包逻辑
        //json["mate"] = t.material;

       
        t.text = jsono["text"] as MyJson.JsonNode_ValueString;
        t.overflowMethod = (UILabel.Overflow)Enum.Parse(typeof(UILabel.Overflow), jsono["overflowMethod"] as MyJson.JsonNode_ValueString);
        t.alignment = (NGUIText.Alignment)Enum.Parse(typeof(NGUIText.Alignment), jsono["alignment"] as MyJson.JsonNode_ValueString);
        t.keepCrispWhenShrunk = (UILabel.Crispness)Enum.Parse(typeof(UILabel.Crispness), jsono["keepCrispWhenShrunk"] as MyJson.JsonNode_ValueString);
        t.applyGradient = (jsono["applyGradient"] as MyJson.JsonNode_ValueNumber);
        t.gradientTop = ComponentTypeConvert.StringToColor(jsono["gradientTop"] as MyJson.JsonNode_ValueString);
        t.gradientBottom = ComponentTypeConvert.StringToColor(jsono["gradientBottom"] as MyJson.JsonNode_ValueString);
        t.effectStyle = (UILabel.Effect)Enum.Parse(typeof(UILabel.Effect), jsono["effectStyle"] as MyJson.JsonNode_ValueString);
        t.effectColor = ComponentTypeConvert.StringToColor(jsono["effectColor"] as MyJson.JsonNode_ValueString);
        t.effectDistance = ComponentTypeConvert.StringToVector2(jsono["effectDistance"] as MyJson.JsonNode_ValueString);
        var spacing = ComponentTypeConvert.StringToVector2(jsono["spacing"] as MyJson.JsonNode_ValueString);
        t.spacingX = (int)spacing.x;
        t.spacingY = (int)spacing.y;
        t.maxLineCount = (jsono["maxLineCount"] as MyJson.JsonNode_ValueNumber);
     
        ComponentParser.FillWidget(t, jsono);
    }
Example #29
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        UISprite t = com as UISprite;
        var jsono = json as MyJson.JsonNode_Object;

        //t.atlas atlas 有特殊的打包逻辑
        string atlas = jsono["atlas"] as MyJson.JsonNode_ValueString;
        t.atlas = AtlasMgr.Instance.GetAtlas(atlas);
        //Debug.Log("atals:" + atlas + "," + t.atlas);
        t.spriteName = jsono["spriteName"] as MyJson.JsonNode_ValueString;
        t.type = (UISprite.Type)Enum.Parse(typeof(UISprite.Type),jsono["spriteType"] as MyJson.JsonNode_ValueString);
        if (t.type == UISprite.Type.Simple)
        {
            t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString);

        }
        else if (t.type == UISprite.Type.Sliced)
        {
            t.centerType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["centerType"] as MyJson.JsonNode_ValueString);
            t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString);
        }
        else if (t.type == UISprite.Type.Tiled)
        {

        }
        else if (t.type == UISprite.Type.Filled)
        {
            t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString);
            t.fillDirection = (UISprite.FillDirection)Enum.Parse(typeof(UISprite.FillDirection), jsono["fillDirection"] as MyJson.JsonNode_ValueString);
            t.fillAmount = jsono["fillAmount"] as MyJson.JsonNode_ValueNumber;
            t.invert = jsono["invert"] as MyJson.JsonNode_ValueNumber;
        }
        else if (t.type == UISprite.Type.Advanced)
        {
            t.leftType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["leftType"] as MyJson.JsonNode_ValueString);
            t.rightType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["rightType"] as MyJson.JsonNode_ValueString);
            t.topType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["topType"] as MyJson.JsonNode_ValueString);
            t.bottomType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["bottomType"] as MyJson.JsonNode_ValueString);
            t.centerType = (UISprite.AdvancedType)Enum.Parse(typeof(UISprite.AdvancedType), jsono["centerType"] as MyJson.JsonNode_ValueString);
            t.flip = (UISprite.Flip)Enum.Parse(typeof(UISprite.Flip), jsono["flip"] as MyJson.JsonNode_ValueString);
        }
        ComponentParser.FillWidget(t,jsono);
    }
Example #30
0
    public void Fill(Component com, MyJson.IJsonNode json)
    {
        UIButton t = com as UIButton;
        var jsono = json as MyJson.JsonNode_Object;

        t.tweenTarget = GameObjParser.IDToObj(jsono["tweenTarget"] as MyJson.JsonNode_ValueNumber);
        t.dragHighlight = jsono["dragHighlight"] as MyJson.JsonNode_ValueNumber;
        t.duration = jsono["duration"] as MyJson.JsonNode_ValueNumber;

        t.defaultColor = ComponentTypeConvert.StringToColor(jsono["colorN"] as MyJson.JsonNode_ValueString);
        t.hover = ComponentTypeConvert.StringToColor(jsono["colorH"] as MyJson.JsonNode_ValueString);
        t.pressed = ComponentTypeConvert.StringToColor(jsono["colorP"] as MyJson.JsonNode_ValueString);
        t.disabledColor = ComponentTypeConvert.StringToColor(jsono["colorD"] as MyJson.JsonNode_ValueString);

        t.normalSprite = jsono["spriteN"] as MyJson.JsonNode_ValueString;
        t.hoverSprite = jsono["springH"] as MyJson.JsonNode_ValueString;
        t.pressedSprite = jsono["springP"] as MyJson.JsonNode_ValueString;
        t.disabledSprite = jsono["springD"] as MyJson.JsonNode_ValueString;
        t.pixelSnap = jsono["pixelSnap"] as MyJson.JsonNode_ValueNumber;
    }
Example #31
0
 static public Arg loadJson(string fileName)
 {
     return(new Arg(MyJson.deserializeFile(fileName)));
 }
Example #32
0
        //退款操作
        async Task test_refund()
        {
            Console.WriteLine("Input refund tokens:");
            string refund = Console.ReadLine();

            string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(wneo_common.sc_wneo);

            Console.WriteLine("nep55_address=" + nep55_address);

            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, nep55_address);

            if (dir.ContainsKey(Config.id_NEO) == false)
            {
                Console.WriteLine("no neo");
                return;
            }
            List <Utxo> newlist = new List <Utxo>(dir[Config.id_NEO]);

            for (var i = newlist.Count - 1; i >= 0; i--)
            {
                var ret = await wneo_common.api_InvokeScript(wneo_common.sc_wneo, "getRefundTarget", "(hex256)" + newlist[i].txid.ToString());

                wneo_common.ResultItem item = ret.value;

                if (newlist[i].n > 0)
                {
                    continue;
                }

                var value = item.subItem[0].AsString();
                if (value.Length > 0)//已经标记的UTXO,不能使用
                {
                    newlist.RemoveAt(i);
                }
            }


            ThinNeo.Transaction tran = null;
            {
                byte[] script = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    var array = new MyJson.JsonNode_Array();
                    array.AddArrayValue("(bytes)" + ThinNeo.Helper.Bytes2HexString(scripthash));
                    sb.EmitParamJson(array);                                          //参数倒序入
                    sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)refund")); //参数倒序入
                    sb.EmitAppCall(wneo_common.sc_wneo);                              //nep5脚本
                    script = sb.ToArray();
                }
                Console.WriteLine("contract address=" + nep55_address);//往合约地址转账

                //生成交易
                tran      = Helper.makeTran(newlist, nep55_address, new ThinNeo.Hash256(Config.id_NEO), Decimal.Parse(refund));
                tran.type = ThinNeo.TransactionType.InvocationTransaction;
                var idata = new ThinNeo.InvokeTransData();
                tran.extdata = idata;
                idata.script = script;

                //附加鉴证
                tran.attributes          = new ThinNeo.Attribute[1];
                tran.attributes[0]       = new ThinNeo.Attribute();
                tran.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script;
                tran.attributes[0].data  = scripthash;
            }

            //sign and broadcast
            {//做智能合约的签名
                byte[] iscript = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    sb.EmitPushString("whatever");
                    sb.EmitPushNumber(250);
                    iscript = sb.ToArray();
                }
                tran.AddWitnessScript(n55contract, iscript);
            }
            {//做提款人的签名
                var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), prikey);
                tran.AddWitness(signdata, pubkey, address);
            }
            var trandata    = tran.GetRawData();
            var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

            ThinNeo.Transaction testde = new ThinNeo.Transaction();
            testde.Deserialize(new System.IO.MemoryStream(trandata));

            byte[] postdata;
            var    url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));

            string poststr = System.Text.Encoding.UTF8.GetString(postdata);

            Console.WriteLine("-----post info begin----");
            Console.WriteLine(poststr);
            Console.WriteLine("-----post info end----");
            var result = await Helper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result);
            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                bool bSucc = false;
                if (json["result"].type == MyJson.jsontype.Value_Number)
                {
                    bSucc = json["result"].AsBool();
                    Console.WriteLine("cli=" + json["result"].ToString());
                }
                else
                {
                    var resultv = json["result"].AsList()[0].AsDict();
                    var txid    = resultv["txid"].AsString();
                    bSucc = txid.Length > 0;
                    Console.WriteLine("txid=" + txid);
                }
                if (bSucc)
                {
                    lasttxid             = tran.GetHash();
                    Nep55_1.lastNep5Tran = tran.GetHash();
                    Console.WriteLine("你可以从这个UTXO拿走NEO了 txid=" + lasttxid.ToString() + "[0]");
                }
                else
                {
                    lasttxid = null;
                }
            }
        }
Example #33
0
    public void on_getWalletFile(bool timeout, WWW www)
    {
        roleInfo.getInstance().wallet_json = MyJson.Parse(www.text).AsDict()["data"].AsString();

        check_logined();
    }
Example #34
0
        void InitializeAccount()
        {
            try
            {
                String   URL = Config.ROOT_URL + "account_getlist";
                PostData nvc = new PostData();
                Func.putPassWord(nvc);
                nvc.Add("order", "logintime");
                nvc.Add("desc", "DESC");
                nvc.Add("start", "0");
                nvc.Add("count", "100");
                nvc.Add("tag", "loginip");
                string ip = Tools.GetIP();
                nvc.Add("tagval", ip);

                Debug.LogLine("本机IP:" + ip);
                if (nvc != null)
                {
                    string sttuas = Func.HttpPostData(URL, 10000, nvc);
                    Debug.Log(sttuas);
                    if (sttuas.Length > 10)
                    {
                        MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array;
                        for (int i = 0; i < jsons.GetListCount(); i++)
                        {
                            MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object;
                            int canuse = json["canuse"].AsInt();
                            if (canuse == 1)
                            {
                                QQInfo info = new QQInfo();
                                info.qq       = json["qq"].AsString();
                                info.pws      = Func.MyUrlDeCode(json["password"].AsString());
                                info.nickname = Func.MyUrlDeCode(json["nickname"].AsString());

                                if (!qqInfo.ContainsKey(info.qq))
                                {
                                    qqinfo.Enqueue(info.qq);
                                    qqInfo.Add(info.qq, info);
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Debug.OnException(e);
            }


            try
            {
                String   URL = Config.ROOT_URL + "accountex_getlist";
                PostData nvc = new PostData();
                Func.putPassWord(nvc);
                nvc.Add("start", "0");
                nvc.Add("count", "0");
                //nvc.Add("tag", "qq");
                //nvc.Add("tagval", "251197161");
                if (nvc != null)
                {
                    string sttuas = Func.HttpPostData(URL, 10000, nvc);
                    if (sttuas.Length > 10)
                    {
                        MyJson.JsonNode_Array jsons = MyJson.Parse(sttuas) as MyJson.JsonNode_Array;
                        for (int i = 0; i < jsons.GetListCount(); i++)
                        {
                            MyJson.JsonNode_Object json = jsons.GetArrayItem(i) as MyJson.JsonNode_Object;
                            string qq = json["qq"].AsString();

                            QQInfo info;
                            if (qqInfo.TryGetValue(qq, out info))
                            {
                                info.state = Func.MyUrlDeCode(json["state"].AsString());
                                try
                                {
                                    info.locktime = DateTime.Now;
                                    info.locktime = DateTime.Parse(Func.MyUrlDeCode(json["locktime"].AsString()));
                                }
                                catch (Exception) { }
                            }
                        }
                    }
                }
            }
            catch (Exception)
            {
            }
        }
Example #35
0
        async Task test_claimStep3()
        {
            byte[] postdata;

            var url    = Helper.MakeRpcUrlPost(Config.api, "getclaimgas", out postdata, new MyJson.JsonNode_ValueString(this.address));
            var result = await Helper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result);

            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                //gas总量
                var gas = json["result"].AsList()[0].AsDict()["gas"].AsString();
                Console.WriteLine("gas:" + gas);

                var claims = json["result"].AsList()[0].AsDict()["claims"].AsList();
                Console.WriteLine("claims:" + claims);

                //var assetIDStr = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; //选择GAS支付合约调用费用
                var assetID = HexString2Bytes(Config.id_GAS.Replace("0x", "")).Reverse().ToArray();

                //构建交易体
                ThinNeo.Transaction claimTran = new ThinNeo.Transaction
                {
                    type       = ThinNeo.TransactionType.ClaimTransaction,//领取Gas合约
                    attributes = new ThinNeo.Attribute[0],
                    inputs     = new ThinNeo.TransactionInput[0],
                    outputs    = new ThinNeo.TransactionOutput[1],
                    extdata    = new ThinNeo.ClaimTransData()
                };

                claimTran.outputs[0] = new ThinNeo.TransactionOutput
                {
                    assetId   = assetID,
                    toAddress = ThinNeo.Helper.GetPublicKeyHashFromAddress(this.address),
                    value     = Decimal.Parse(gas)
                };

                List <ThinNeo.TransactionInput> claimVins = new List <ThinNeo.TransactionInput>();
                foreach (MyJson.IJsonNode j in (MyJson.JsonNode_Array)claims)
                {
                    claimVins.Add(new ThinNeo.TransactionInput
                    {
                        hash  = ThinNeo.Debug.DebugTool.HexString2Bytes((j.AsDict()["txid"].ToString()).Replace("0x", "")).Reverse().ToArray(),
                        index = ushort.Parse(j.AsDict()["n"].ToString())
                    });
                }

                (claimTran.extdata as ThinNeo.ClaimTransData).claims = claimVins.ToArray();


                byte[] msg      = claimTran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, this.prikey);

                claimTran.AddWitness(signdata, pubkey, this.address);

                var trandata    = claimTran.GetRawData();
                var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

                byte[] postdata2;
                url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata2, new MyJson.JsonNode_ValueString(strtrandata));

                var result2 = await Helper.HttpPost(url, postdata2);

                Console.WriteLine("得到的结果是:" + result2);
            }
        }
Example #36
0
 private void HandleMyJson(MyJson myjson)
 {
     MyPlayer.otherPlayerManager.HandleMsg(myjson);
 }
Example #37
0
 static void Main(string[] args)
 {
     MyJson myJson = new MyJson();
     var    foo    = myJson.ToJson();
 }
Example #38
0
        private void Send(byte[] priKey, string assetid, string sendAssetid, string addr, decimal balance, decimal send, decimal totalSend, decimal sendAssetDecimals, UInt32 height, string snapshotColl)
        {
            try
            {
                decimal decimals = decimal.Parse(sendAssetDecimals.ToString());

                byte[] data = null;

                byte[] pubKey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey);
                string address = ThinNeo.Helper.GetAddressFromPublicKey(pubKey);

                if (addr == address)
                {
                    return;
                }
                //MakeTran
                ThinNeo.Transaction tran = new Transaction();
                {
                    var _send = send * decimal.Parse(Math.Pow(10, (double)decimals).ToString());
                    using (ScriptBuilder sb = new ScriptBuilder())
                    {
                        MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();

                        byte[] randombytes = new byte[32];
                        using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
                        {
                            rng.GetBytes(randombytes);
                        }
                        BigInteger randomNum = new BigInteger(randombytes);
                        sb.EmitPushNumber(randomNum);
                        sb.Emit(ThinNeo.VM.OpCode.DROP);
                        array.AddArrayValue("(addr)" + address);
                        array.AddArrayValue("(addr)" + addr);
                        array.AddArrayValue("(int)" + (BigInteger)_send);
                        sb.EmitParamJson(array);
                        sb.EmitPushString("transfer");
                        sb.EmitAppCall(new Hash160(sendAssetid));
                        data = sb.ToArray();
                    }

                    tran.type = ThinNeo.TransactionType.InvocationTransaction;
                    var idata = new ThinNeo.InvokeTransData();
                    tran.extdata             = idata;
                    idata.script             = data;
                    idata.gas                = 0;
                    tran.inputs              = new ThinNeo.TransactionInput[0];
                    tran.outputs             = new ThinNeo.TransactionOutput[0];
                    tran.attributes          = new ThinNeo.Attribute[1];
                    tran.attributes[0]       = new ThinNeo.Attribute();
                    tran.attributes[0].usage = TransactionAttributeUsage.Script;
                    tran.attributes[0].data  = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);

                    //sign and broadcast
                    var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), priKey);
                    tran.AddWitness(signdata, pubKey, address);
                    var    trandata    = tran.GetRawData();
                    var    strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);
                    byte[] postdata;
                    var    url      = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));
                    var    result   = HttpHelper.HttpPost(url, postdata);
                    var    j_result = MyJson.Parse(result).AsDict()["result"].AsList()[0].AsDict();
                    if (j_result["sendrawtransactionresult"].AsBool())
                    {
                        Snapshot snapshot = new Snapshot();
                        snapshot.addr        = addr;
                        snapshot.balance     = BsonDecimal128.Create(balance);
                        snapshot.send        = BsonDecimal128.Create(send);
                        snapshot.txid        = j_result["txid"].AsString();
                        snapshot.sendAssetid = sendAssetid;
                        snapshot.applied     = true;
                        snapshot.assetid     = assetid;
                        snapshot.height      = height;
                        snapshot.totalSend   = BsonDecimal128.Create(totalSend);

                        mongoHelper.ReplaceData(Config.Ins.Snapshot_Conn, Config.Ins.Snapshot_DB, snapshotColl, ToolHelper.RemoveUndefinedParams(JsonConvert.SerializeObject(new Snapshot()
                        {
                            addr = addr, applied = true
                        })), snapshot);

                        mongoHelper.InsetOne(Config.Ins.Snapshot_Conn, Config.Ins.Snapshot_DB, Config.Ins.Snapshot_Current_Coll, snapshot);
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return;
            }
        }
Example #39
0
 //譜面データ書き込み
 static public void writeScoreData(Arg aData, string aFileName)
 {
     MyJson.serializeToFile(aData.dictionary, DataFolder.path + "/score/" + aFileName + ".json", true);
 }
Example #40
0
    public void LoadLayout(string respath, string layoutname, Action <IProxy <GameObject> > finish)
    {
        Action Finish = () =>
        {
            ResmgrNative.Instance.LoadStringFromCache(respath + "/layout/" + layoutname + ".layout.txt",
                                                      "",
                                                      (code, tag) =>
            {
                var json = MyJson.Parse(code);
                var obj  = GameObjParser.FromJson(json);
                finish(new ProxyLayout(obj, layoutname));
            }
                                                      );
        };
        Action <MyJson.IJsonNode> dependLoaded = (json) =>
        {
            if (json.HaveDictItem("mesh"))
            {
                var list = json.GetDictItem("mesh").AsList();
                foreach (var l in list)
                {
                    ResmgrNative.Instance.LoadBytesFromCache(respath + "/mesh/" + l.AsString() + ".mesh.bytes",
                                                             l.AsString(),
                                                             (bytes, tagName) =>
                    {
                        Mesh mesh = AssetMgr.ReadMesh(bytes, tagName);
                        assetMgrIO.AddMesh(tagName, mesh);
                        assetMgrIO.MeshAddRef(tagName);
                    });
                    Debug.Log("dependmesh:" + l.AsString());
                }
            }
            if (json.HaveDictItem("tex"))
            {
                var list = json.GetDictItem("tex").AsList();
                foreach (var l in list)
                {
                    ResmgrNative.Instance.LoadTexture2DFromCache(respath + "/texture/" + l.AsString(),
                                                                 l.AsString(),
                                                                 (tex, tagName) =>
                    {
                        assetMgrIO.AddTexture2D(tagName, tex);
                        assetMgrIO.TextureAddRef(tagName);
                    });
                }
            }
            ResmgrNative.Instance.WaitForTaskFinish(Finish);
        };

        if (layoutDepends.ContainsKey(layoutname))
        {
            dependLoaded(layoutDepends[layoutname]);
        }
        else
        {
            ResmgrNative.Instance.LoadStringFromCache(respath + "/layout/" + layoutname + ".depend.txt", "", (code, tag) =>
            {
                layoutDepends[layoutname] = MyJson.Parse(code) as MyJson.JsonNode_Object;
                dependLoaded(layoutDepends[layoutname]);
            });
        }
    }
Example #41
0
    IEnumerator HTTP_nel_post_sgas_gas2(MyJson.IJsonNode json_complete)
    {
        string txid = json_complete.AsDict()["txid"].ToString();

        var    nep55_shash   = new ThinNeo.Hash160(global.id_sgas);
        string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash);

        WWWForm www_getuxo_form_2 = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(nep55_address));
        WWW     www_utxo_2        = new WWW(global.api, www_getuxo_form_2);

        yield return(www_utxo_2);

        Dictionary <string, List <Utxo> > _dir_2 = get_utxo(www_utxo_2.text);

        if (_dir_2.ContainsKey(global.id_GAS) == false)
        {
            Debug.Log("no gas");
        }

        List <Utxo> newlist_2 = new List <Utxo>();

        foreach (var utxo in _dir_2[global.id_GAS])
        {
            if (utxo.n == 0 && utxo.txid.ToString().Equals(txid))
            {
                newlist_2.Add(utxo);
            }
        }
        if (newlist_2.Count == 0)
        {
            Debug.Log("找不到要使用的UTXO");
            yield return(null);
        }

        {//检查utxo
            byte[] script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(hex256)" + newlist_2[0].txid.ToString());
                sb.EmitParamJson(array);                                                   //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入
                var shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                                     //nep5脚本
                script = sb.ToArray();
            }

            WWWForm www_getTarget_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script)));
            WWW     www_form           = new WWW(global.api, www_getTarget_form);
            yield return(www_form);

            var jsonCU = MyJson.Parse(www_form.text);
            var stack  = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict();
            var value  = stack["value"].AsString();
            if (value.Length == 0)//未标记的UTXO,不能使用
            {
                Debug.Log("这个utxo没有标记");
                yield return(null);
            }

            var hash = new ThinNeo.Hash160(ThinNeo.Helper.HexString2Bytes(value));
            if (hash.ToString() != ThinNeo.Helper.GetPublicKeyHashFromAddress(roleInfo.getInstance().address).ToString())
            {
                Debug.Log("这个utxo不是标记给你用的");
                Debug.Log(hash.ToString());
                Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().scripthash));
                yield return(null);
            }
        }


        ThinNeo.Transaction tran_2 = Helper.makeTran(newlist_2, roleInfo.getInstance().address, new ThinNeo.Hash256(global.id_GAS), newlist_2[0].value);
        tran_2.type    = ThinNeo.TransactionType.ContractTransaction;
        tran_2.version = 0;

        //sign and broadcast
        {//做智能合约的签名
            byte[] n55contract = null;
            {
                WWWForm www_getState = Helper.GetWWWFormPost("getcontractstate", new MyJson.JsonNode_ValueString(global.id_sgas));
                WWW     www_state    = new WWW(global.api, www_getState);
                yield return(www_state);

                var _json    = MyJson.Parse(www_state.text).AsDict();
                var _resultv = _json["result"].AsList()[0].AsDict();
                n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString());
            }
            byte[] iscript = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                sb.EmitPushNumber(0);
                sb.EmitPushNumber(0);
                iscript = sb.ToArray();
            }
            tran_2.AddWitnessScript(n55contract, iscript);
        }


        var trandata_2    = tran_2.GetRawData();
        var strtrandata_2 = ThinNeo.Helper.Bytes2HexString(trandata_2);

        ThinNeo.Transaction testde_2 = new ThinNeo.Transaction();
        testde_2.Deserialize(new System.IO.MemoryStream(trandata_2));

        WWWForm www_transaction_2 = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata_2));
        WWW     www_tran_2        = new WWW(global.api, www_transaction_2);

        yield return(www_tran_2);

        Debug.Log(www_tran_2.text);

        var json_2 = MyJson.Parse(www_tran_2.text).AsDict();

        if (json_2.ContainsKey("result"))
        {
            var resultv = json_2["result"].AsList()[0].AsDict();
            var ext     = resultv["txid"].AsString();
            if (txid.Length > 0)
            {
                Debug.Log("txid=" + ext);
                testtool.panel_main.do_plat_notify(json_complete, ext);
                api_tool._instance.walletNotifyExt(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid, ext, global.netType, null);
            }
            else
            {
                Debug.Log("交易失败");
            }
        }
        else
        {
            Debug.Log("交易失败");
        }
    }
Example #42
0
    IEnumerator HTTP_nel_post_sgas_gas(decimal num)
    {
        var    nep55_shash   = new ThinNeo.Hash160(global.id_sgas);
        string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash);
        var    scripthash    = ThinNeo.Helper.GetPublicKeyHashFromAddress(roleInfo.getInstance().address);


        WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(nep55_address));
        WWW     www             = new WWW(global.api, www_getuxo_form);

        yield return(www);

        Dictionary <string, List <Utxo> > _dir = get_utxo(www.text);

        if (_dir.ContainsKey(global.id_GAS) == false)
        {
            Debug.Log("no gas");
        }

        List <Utxo> newlist = new List <Utxo>(_dir[global.id_GAS]);

        for (var i = newlist.Count - 1; i >= 0; i--)
        {
            Debug.Log(newlist[i].txid.ToString());

            byte[] script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(hex256)" + newlist[i].txid.ToString());
                sb.EmitParamJson(array);                                                   //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入
                var shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                                     //nep5脚本
                script = sb.ToArray();
            }
            if (newlist[i].n > 0)
            {
                continue;
            }

            WWWForm www_getTarget_form = Helper.GetWWWFormPost("invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script)));
            WWW     www_form           = new WWW(global.api, www_getTarget_form);

            yield return(www_form);

            var jsonCU = MyJson.Parse(www_form.text);
            var stack  = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict();
            var value  = stack["value"].AsString();

            if (value.Length > 0)//已经标记的UTXO,不能使用
            {
                newlist.RemoveAt(i);
            }
        }

        string paparms;

        ThinNeo.Transaction tran = null;
        {
            byte[] script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(bytes)" + ThinNeo.Helper.Bytes2HexString(scripthash));
                sb.EmitParamJson(array);                                          //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)refund")); //参数倒序入
                var shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                            //nep5脚本
                script = sb.ToArray();


                //拼接发给后台做验证的json字符串
                MyJson.JsonNode_Object account = new MyJson.JsonNode_Object();
                account["sbParamJson"]  = array;
                account["sbPushString"] = new MyJson.JsonNode_ValueString("refund");
                account["nnc"]          = new MyJson.JsonNode_ValueString(global.id_sgas);
                account["cnts"]         = new MyJson.JsonNode_ValueString(num.ToString());
                paparms = account.ToString();
            }

            //生成交易
            tran      = Helper.makeTran(newlist, nep55_address, new ThinNeo.Hash256(global.id_GAS), num);
            tran.type = ThinNeo.TransactionType.InvocationTransaction;
            var idata = new ThinNeo.InvokeTransData();
            tran.extdata = idata;
            idata.script = script;

            //附加鉴证
            tran.attributes          = new ThinNeo.Attribute[1];
            tran.attributes[0]       = new ThinNeo.Attribute();
            tran.attributes[0].usage = ThinNeo.TransactionAttributeUsage.Script;
            tran.attributes[0].data  = scripthash;

            Debug.Log(ThinNeo.Helper.Bytes2HexString(scripthash));
            Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().prikey));
            Debug.Log(ThinNeo.Helper.Bytes2HexString(roleInfo.getInstance().pubkey));
            Debug.Log(roleInfo.getInstance().address);
        }

        //sign and broadcast
        {//做智能合约的签名
            byte[] n55contract = null;
            {
                WWWForm www_getState = Helper.GetWWWFormPost("getcontractstate", new MyJson.JsonNode_ValueString(global.id_sgas));
                WWW     www_state    = new WWW(global.api, www_getState);

                yield return(www_state);

                var _json    = MyJson.Parse(www_state.text).AsDict();
                var _resultv = _json["result"].AsList()[0].AsDict();
                n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString());
            }
            byte[] iscript = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                sb.EmitPushString("whatever");
                sb.EmitPushNumber(250);
                iscript = sb.ToArray();
            }
            tran.AddWitnessScript(n55contract, iscript);
        }
        {//做提款人的签名
            var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey);
            tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address);
        }
        var trandata    = tran.GetRawData();
        var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

        ThinNeo.Transaction testde = new ThinNeo.Transaction();
        testde.Deserialize(new System.IO.MemoryStream(trandata));
        WWWForm www_transaction = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata));
        WWW     www_tran        = new WWW(global.api, www_transaction);

        yield return(www_tran);

        Debug.Log(www_tran.text);

        var json = MyJson.Parse(www_tran.text).AsDict();

        ThinNeo.Hash256 lasttxid = null;
        if (json.ContainsKey("result"))
        {
            bool bSucc = false;
            if (json["result"].type == MyJson.jsontype.Value_Number)
            {
                bSucc = json["result"].AsBool();
                Debug.Log("cli=" + json["result"].ToString());
            }
            else
            {
                var resultv = json["result"].AsList()[0].AsDict();
                var txid    = resultv["txid"].AsString();
                bSucc = txid.Length > 0;
            }
            if (bSucc)
            {
                lasttxid = tran.GetHash();
                Debug.Log("你可以从这个UTXO拿走GAS了 txid=" + lasttxid.ToString() + "[0]");

                api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, lasttxid.ToString(),
                                                     "0", num.ToString(), "2", paparms, global.netType, "0",
                                                     (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); testtool.panel_main.on_refresh_plat_NotifyList(); });
            }
            else
            {
                lasttxid = null;
            }
        }
    }
Example #43
0
 public string GetTimingList(string strjson)
 {
     try
     {
         Dictionary <string, string> dic = MyJson.JsonToDictionary(strjson);
         if (dic.Count == 0)
         {
             return(Json.Write(-1, "参数JSON格式错误"));
         }
         string equipmentname = string.Empty;
         string username      = string.Empty;
         string expstartdate  = string.Empty;
         string expenddate    = string.Empty;
         if (dic.TryGetValue("equipmentname", out equipmentname) == false)
         {
             return(Json.Write(-1, "设备名称无法识别"));
         }
         if (equipmentname.Trim().Length == 0)
         {
             return(Json.Write(-1, "设备名称为空"));
         }
         //以下参数为可选,先判断是否存在
         if (dic.ContainsKey("username") && dic.TryGetValue("username", out username) == false)
         {
             return(Json.Write(-1, "用户账号无法识别"));
         }
         if (dic.ContainsKey("expstartdate") && dic.TryGetValue("expstartdate", out expstartdate) == false)
         {
             return(Json.Write(-1, "有效期开始时间无法识别"));
         }
         if (dic.ContainsKey("expenddate") && dic.TryGetValue("expenddate", out expenddate) == false)
         {
             return(Json.Write(-1, "有效期结束时间无法识别"));
         }
         //获取设备信息
         TiminGstartRecordInfo info = new TiminGstartRecordInfo()
         {
             EIName = equipmentname
         };
         if (dic.ContainsKey("username"))
         {
             info.UserName = username;
         }
         if (dic.ContainsKey("expstartdate"))
         {
             DateTime starttime = Tools.GetDateTime(expstartdate, DateTime.MinValue);
             if (starttime == DateTime.MinValue)
             {
                 return(Json.Write(-1, "有效期开始时间格式输入不正确"));
             }
             info.ExpStartDate = starttime;
         }
         if (dic.ContainsKey("expenddate"))
         {
             DateTime endtime = Tools.GetDateTime(expenddate, DateTime.MaxValue);
             if (endtime == DateTime.MaxValue)
             {
                 return(Json.Write(-1, "有效期结束时间格式输入不正确"));
             }
             info.ExpEndDate = endtime;
         }
         ReturnValue retVal = tsrLogic.GetTimingStartRecord(info);
         return(Json.Write(retVal.RetCode, retVal.RetMsg, retVal.RetDt));
     }
     catch (Exception ex)
     {
         return(Json.Write(-1, Consts.EXP_Info));
     }
 }
Example #44
0
 //曲リストデータ書き込み
 static public void writeListData(Arg aData)
 {
     MyJson.serializeToFile(aData.dictionary, DataFolder.path + "/list.json", true);
 }
Example #45
0
 //譜面データ取得
 static public MusicScoreFileData loadScoreData(string aFileName)
 {
     return(new MusicScoreFileData(new Arg(MyJson.deserializeFile(DataFolder.path + "/score/" + aFileName + ".json")), aFileName));
 }
Example #46
0
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            LimpiarData();

            if (string.IsNullOrEmpty(txtUrlFile.Text))
            {
                MessageBox.Show("Seleciona un archivo de estaciones, por favor!.");
                return;
            }


            var objMyjSon = new MyJson <LocalizacionEntity>();
            //var objMyjSon = new MyJson<RutasEntity>();
            var lstRutas = objMyjSon.DeserializarFromFile(txtUrlFile.Text);

            if (lstRutas.Count > 0)
            {
                EF.EFModelContainer context = new EF.EFModelContainer();

                foreach (var objRutas in lstRutas)
                {
                    context.Localizacion.Add(new EF.Localizacion()
                    {
                        Ciudad   = objRutas.Ciudad,
                        Estado   = objRutas.Estado,
                        Pais     = objRutas.Pais,
                        Estacion = objRutas.Estacion
                    });


                    context.SaveChanges();



                    /*
                     * var objLocalizacion =  context.Localizacion.Add(new EF.Localizacion()
                     * {
                     *  Ciudad = objRutas.Estaciones.Ciudad,
                     *  Estado = objRutas.Estaciones.Estado,
                     *  Pais = objRutas.Estaciones.Pais,
                     *  Estacion = objRutas.Estaciones.Estacion
                     *
                     * });
                     *
                     * context.Entry(objLocalizacion).State = System.Data.Entity.EntityState.Added;
                     *
                     *
                     *
                     * var objContextRuta=   context.Rutas.Add(new EF.Rutas()
                     * {
                     *  Chofer = objRutas.Chofer,
                     *  Compania = objRutas.Compania,
                     *  FechaFin = objRutas.FechaFin,
                     *  FechaInicio = objRutas.FechaInicio,
                     *  IdRuta = Guid.NewGuid() ,
                     *  Estaciones= objLocalizacion
                     * });
                     *
                     *
                     * context.Entry(objContextRuta).State = System.Data.Entity.EntityState.Added;
                     *
                     * context.SaveChanges(); */
                }


                FillCbxEstaciones();


                this.MainPanel.Visibility = Visibility.Visible;
                this.LoadFile.Visibility  = Visibility.Hidden;
            }
            else
            {
                MessageBox.Show("El archivo esta vacio, seleciona un archivo de estaciones, por favor!.");
            }
        }
Example #47
0
 //楽曲リスト取得
 static public MusicListFileData loadListData()
 {
     return(new MusicListFileData(new Arg(MyJson.deserializeFile(DataFolder.path + "/list.json"))));
 }
Example #48
0
        private void Send(byte[] priKey, string assetid, string addr, decimal value, NnsAward nnsAward)
        {
            try
            {
                //获取资产的精度
                byte[]  postdata;
                var     url       = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "getnep5asset", out postdata, new MyJson.JsonNode_ValueString(assetid));
                var     result    = HttpHelper.HttpPost(url, postdata);
                var     Jo_result = MyJson.Parse(result) as MyJson.JsonNode_Object;
                decimal decimals  = 0;
                if (Jo_result.ContainsKey("result"))
                {
                    decimals = (decimal)Math.Pow(10, Jo_result["result"].AsList()[0].AsDict()["decimals"].AsInt());
                }
                else
                {
                    return;
                }


                byte[] data = null;

                byte[] pubKey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(priKey);
                string address = ThinNeo.Helper.GetAddressFromPublicKey(pubKey);

                if (addr == address)
                {
                    return;
                }
                //MakeTran
                ThinNeo.Transaction tran = new Transaction();
                {
                    BigInteger sendValue = (BigInteger)((decimal)value * decimals);
                    using (ScriptBuilder sb = new ScriptBuilder())
                    {
                        MyJson.JsonNode_Array array = new MyJson.JsonNode_Array();

                        byte[] randombytes = new byte[32];
                        using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
                        {
                            rng.GetBytes(randombytes);
                        }
                        BigInteger randomNum = new BigInteger(randombytes);
                        sb.EmitPushNumber(randomNum);
                        sb.Emit(ThinNeo.VM.OpCode.DROP);
                        array.AddArrayValue("(addr)" + address);
                        array.AddArrayValue("(addr)" + addr);
                        array.AddArrayValue("(int)" + sendValue);
                        sb.EmitParamJson(array);
                        sb.EmitPushString("transfer");
                        sb.EmitAppCall(new Hash160(assetid));
                        data = sb.ToArray();
                    }

                    tran.type = ThinNeo.TransactionType.InvocationTransaction;
                    var idata = new ThinNeo.InvokeTransData();
                    tran.extdata             = idata;
                    idata.script             = data;
                    idata.gas                = 0;
                    tran.inputs              = new ThinNeo.TransactionInput[0];
                    tran.outputs             = new ThinNeo.TransactionOutput[0];
                    tran.attributes          = new ThinNeo.Attribute[1];
                    tran.attributes[0]       = new ThinNeo.Attribute();
                    tran.attributes[0].usage = TransactionAttributeUsage.Script;
                    tran.attributes[0].data  = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);

                    //sign and broadcast
                    var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), priKey);
                    tran.AddWitness(signdata, pubKey, address);
                    var trandata    = tran.GetRawData();
                    var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

                    url    = HttpHelper.MakeRpcUrlPost(Config.Ins.url, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));
                    result = HttpHelper.HttpPost(url, postdata);
                    Console.WriteLine(result);
                    var j_result = MyJson.Parse(result).AsDict()["result"].AsList()[0].AsDict();
                    if (j_result["sendrawtransactionresult"].AsBool())
                    {
                        nnsAward.txid     = j_result["txid"].AsString();
                        nnsAward.maxBuyer = addr;
                        nnsAward.maxBonus = Decimal128.Parse(value.ToString());
                        mongoHelper.ReplaceData(Config.Ins.Applyfornnc_Conn, Config.Ins.Applyfornnc_DB, Config.Ins.Applyfornnc_Coll, "{maxBuyer:\"" + addr + "\"}", nnsAward);
                    }
                    else
                    {
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return;
            }
        }
Example #49
0
        async Task test_claimSimple()
        {
            var addr = ThinNeo.Helper.GetAddressFromScriptHash(Config.sneo);

            byte[] postdata;

            var url    = Helper.MakeRpcUrlPost(Config.api, "getclaimgas", out postdata, new MyJson.JsonNode_ValueString(addr));
            var result = await Helper.HttpPost(url, postdata);

            //Console.WriteLine("得到的结果是:" + result);

            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                //gas总量
                var gas = json["result"].AsList()[0].AsDict()["gas"] + "";
                //var gas = 0.00004;
                //Console.WriteLine("gas:" + gas);

                var claims = json["result"].AsList()[0].AsDict()["claims"].AsList();
                //Console.WriteLine("claims:" + claims);

                //var assetIDStr = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7"; //选择GAS支付合约调用费用
                var assetID = HexString2Bytes(Config.id_GAS.Replace("0x", "")).Reverse().ToArray();

                //构建交易体
                ThinNeo.Transaction claimTran = new ThinNeo.Transaction
                {
                    type       = ThinNeo.TransactionType.ClaimTransaction,//领取Gas合约
                    attributes = new ThinNeo.Attribute[0],
                    inputs     = new ThinNeo.TransactionInput[0],
                    outputs    = new ThinNeo.TransactionOutput[1],
                    extdata    = new ThinNeo.ClaimTransData()
                };

                claimTran.outputs[0] = new ThinNeo.TransactionOutput
                {
                    assetId   = assetID,
                    toAddress = ThinNeo.Helper.GetPublicKeyHashFromAddress(this.address),
                    value     = Decimal.Parse("0.00006552")
                };
                Console.WriteLine("claim addr:" + this.address);
                List <ThinNeo.TransactionInput> claimVins = new List <ThinNeo.TransactionInput>();

                MyJson.JsonNode_Array array = (MyJson.JsonNode_Array)claims;
                MyJson.IJsonNode      node  = array[0];

                Console.WriteLine("claims:" + node);
                claimVins.Add(new ThinNeo.TransactionInput
                {
                    hash  = ThinNeo.Debug.DebugTool.HexString2Bytes((node.AsDict()["txid"].ToString()).Replace("0x", "")).Reverse().ToArray(),
                    index = ushort.Parse(node.AsDict()["n"].ToString())
                });

                (claimTran.extdata as ThinNeo.ClaimTransData).claims = claimVins.ToArray();

                //做智能合约的签名
                byte[] iscript = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    sb.EmitPushString("whatever");
                    sb.EmitPushNumber(250);
                    iscript = sb.ToArray();
                }

                claimTran.AddWitnessScript(n55contract, iscript);

                var trandata    = claimTran.GetRawData();
                var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

                byte[] postdata2;
                url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata2, new MyJson.JsonNode_ValueString(strtrandata));

                var result2 = await Helper.HttpPost(url, postdata2);

                Console.WriteLine("得到的结果是:" + result2);
            }
        }
Example #50
0
        //升级合约
        async Task test_setUpgrade()
        {
            byte[] prikey_admin = ThinNeo.Helper.GetPrivateKeyFromWIF(Config.testwif_admin);
            byte[] pubkey_admin = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey_admin);
            string address      = ThinNeo.Helper.GetAddressFromPublicKey(pubkey_admin);

            Console.WriteLine(address);
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, address);

            //从文件中读取合约脚本
            byte[] script     = System.IO.File.ReadAllBytes("C:\\Neo\\SmartContracts\\0xe7bce3dde514813762b44a11bb5767f343dafb22.avm"); //这里填你的合约所在地址
            string str_script = ThinNeo.Helper.Bytes2HexString(script);

            byte[] aa = ThinNeo.Helper.HexString2Bytes(str_script);
            var    ss = 1 | 0 | 4;

            using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder())
            {
                //倒叙插入数据
                var array = new MyJson.JsonNode_Array();
                array.AddArrayValue("(bytes)" + str_script);
                array.AddArrayValue("(bytes)0710");
                array.AddArrayValue("(bytes)05");
                array.AddArrayValue("(int)" + 5);
                array.AddArrayValue("(str)合约升级测试");                                //name
                array.AddArrayValue("(str)1");                                     //version
                array.AddArrayValue("(str)ss");                                    //author
                array.AddArrayValue("(str)1");                                     //email
                array.AddArrayValue("(str)sssss");                                 //desc
                sb.EmitParamJson(array);                                           //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)upgrade")); //参数倒序入
                var shash = Config.oracle;
                sb.EmitAppCall(shash);

                string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());
                byte[] postdata;
                var    url    = Helper.MakeRpcUrlPost(Config.api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
                var    result = await Helper.HttpPost(url, postdata);

                //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8);
                //var consume = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString();
                //decimal gas_consumed = decimal.Parse(consume);
                ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
                extdata.gas    = 510;// Math.Ceiling(gas_consumed - 10);
                extdata.script = sb.ToArray();

                //拼装交易体
                ThinNeo.Transaction tran = Helper.makeTran(dir[Config.id_GAS], null, new ThinNeo.Hash256(Config.id_GAS), extdata.gas);
                tran.version = 1;
                tran.extdata = extdata;
                tran.type    = ThinNeo.TransactionType.InvocationTransaction;
                byte[] msg      = tran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, prikey_admin);
                tran.AddWitness(signdata, pubkey_admin, address);
                string txid    = tran.GetHash().ToString();
                byte[] data    = tran.GetRawData();
                string rawdata = ThinNeo.Helper.Bytes2HexString(data);
                url    = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
                result = await Helper.HttpPost(url, postdata);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }
        }
Example #51
0
 public HttpResponseMessage Get()
 {
     return(MyJson.ObjectToJson(GetApps()));
 }
Example #52
0
        async Task test_getRefund()
        {
            //if (lasttxid == null)
            //{
            //    Console.WriteLine("你还没有正确执行Refund");
            //    return;
            //}
            Console.WriteLine("refund txid:");
            var lastTxid = Console.ReadLine();

            string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(wneo_common.sc_wneo);

            Console.WriteLine("address=" + nep55_address);

            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Config.api, nep55_address);

            if (dir.ContainsKey(Config.id_NEO) == false)
            {
                Console.WriteLine("no neo");
                return;
            }
            List <Utxo> newlist = new List <Utxo>();

            foreach (var utxo in dir[Config.id_NEO])
            {
                if (utxo.n == 0 && utxo.txid.ToString().Equals(lastTxid))
                {
                    newlist.Add(utxo);
                }
            }
            if (newlist.Count == 0)
            {
                Console.WriteLine("找不到要使用的UTXO");
                return;
            }
            else
            {
                lastTxid = newlist[0].txid.ToString();
            }


            {//检查是否是前面交易存储的
                var ret = await wneo_common.api_InvokeScript(wneo_common.sc_wneo, "getRefundTarget", "(hex256)" + lastTxid);

                wneo_common.ResultItem item = ret.value;

                var value = ThinNeo.Helper.GetAddressFromScriptHash(item.subItem[0].AsHash160());
                if (value.Length == 0)//未标记的UTXO,不能使用
                {
                    Console.WriteLine("这个utxo没有标记");
                    return;
                }
                if (value != this.address)
                {
                    Console.WriteLine("这个utxo不是标记给你用的");
                    return;
                }
            }

            ThinNeo.Transaction tran = Helper.makeTran(newlist, address, new ThinNeo.Hash256(Config.id_NEO), newlist[0].value);
            tran.type    = ThinNeo.TransactionType.ContractTransaction;
            tran.version = 0;


            //sign and broadcast
            {//做智能合约的签名
                byte[] iscript = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    sb.EmitPushNumber(0);
                    sb.EmitPushNumber(0);
                    iscript = sb.ToArray();
                }
                tran.AddWitnessScript(n55contract, iscript);
            }


            var trandata    = tran.GetRawData();
            var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

            ThinNeo.Transaction testde = new ThinNeo.Transaction();
            testde.Deserialize(new System.IO.MemoryStream(trandata));

            byte[] postdata;
            var    url = Helper.MakeRpcUrlPost(Config.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));

            string poststr = System.Text.Encoding.UTF8.GetString(postdata);

            Console.WriteLine("-----post info begin----");
            Console.WriteLine(poststr);
            Console.WriteLine("-----post info end----");

            var result = await Helper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result);
            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                bool bSucc = false;
                if (json["result"].type == MyJson.jsontype.Value_Number)
                {
                    bSucc = json["result"].AsBool();
                    Console.WriteLine("cli=" + json["result"].ToString());
                }
                else
                {
                    var resultv = json["result"].AsList()[0].AsDict();
                    var txid    = resultv["txid"].AsString();
                    bSucc = txid.Length > 0;
                    Console.WriteLine("txid=" + txid);
                }
                if (bSucc)
                {
                    Nep55_1.lastNep5Tran = tran.GetHash();
                    Console.WriteLine("besucc txid=" + tran.GetHash().ToString());
                }
            }
        }
Example #53
0
        public JArray downloadCompileFile(string hash, string type = ".all")
        {
            hash = format(hash);
            type = type.ToLower();
            if (type == ".cs" || type == "cs")
            {
                return(new JArray {
                    new JObject()
                    {
                        { "cs", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".cs")) }
                    }
                });
            }
            if (type == ".avm" || type == "avm")
            {
                return(new JArray {
                    new JObject()
                    {
                        { "avm", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".avm")) }
                    }
                });
            }
            if (type == ".abi" || type == "abi")
            {
                return(new JArray {
                    new JObject()
                    {
                        { "abi", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".abi.json")) }
                    }
                });
            }
            if (type == ".map" || type == "map")
            {
                return(new JArray {
                    new JObject()
                    {
                        { "map", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".map.json")) }
                    }
                });
            }
            if (type == ".py" || type == "py")
            {
                return(new JArray {
                    new JObject()
                    {
                        { "py", ossClient.OssFileDownLoad(System.IO.Path.Combine("", hash + ".py")) }
                    }
                });
            }
            // 获取合约文件
            string  pathScript = "";
            string  str_avm    = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".avm"));
            string  str_cs     = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".cs"));
            string  str_py     = ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".py"));
            var     JO_map     = (MyJson.IJsonNode)MyJson.Parse(ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".map.json")));
            var     JO_abi     = (MyJson.IJsonNode)MyJson.Parse(ossClient.OssFileDownLoad(System.IO.Path.Combine(pathScript, hash + ".abi.json")));
            JObject JO_result  = new JObject();

            JO_result["avm"] = str_avm;
            JO_result["cs"]  = str_cs;
            JO_result["py"]  = str_py;
            JO_result["map"] = JO_map?.ToString();
            JO_result["abi"] = JO_abi?.ToString();
            return(new JArray()
            {
                JO_result
            });
        }
Example #54
0
 public MapFileData(string aFilePath)
 {
     //ファイルロード
     load(new Arg(MyJson.deserializeFile("Assets/resources/" + MyMap.mMapResourcesDirectory + "/map/" + aFilePath + ".json")));
 }
Example #55
0
        private static void PubScDemo(string wif)
        {
            string assetid = "0x602c79718b16e442de58778e148d0b1084e3b2dffd5de6b7b16cee7969282de7";
            string api     = "https://api.nel.group/api/testnet";

            byte[] prikey  = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            byte[] pubkey  = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

            Dictionary <string, List <Utxo> > dir = GetBalanceByAddress(api, address);

            //从文件中读取合约脚本
            byte[] script = System.IO.File.ReadAllBytes("dapp_nnc4.0.avm"); //这里填你的合约所在地址
            Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script));
            Console.WriteLine("合约脚本hash:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script).data.ToArray().Reverse().ToArray()));
            byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710"); //这里填合约入参  例:0610代表(string,[])
            byte[] return_type     = ThinNeo.Helper.HexString2Bytes("05");   //这里填合约的出参
            int    need_storage    = 1;
            int    need_nep4       = 2;
            int    need_canCharge  = 4;
            string name            = "XC";
            string version         = "1.0";
            string auther          = "Zhang";
            string email           = "0";
            string description     = "0";

            using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder())
            {
                var ss = need_storage;
                //倒叙插入数据
                sb.EmitPushString(description);
                sb.EmitPushString(email);
                sb.EmitPushString(auther);
                sb.EmitPushString(version);
                sb.EmitPushString(name);
                sb.EmitPushNumber(need_storage | need_nep4 | need_canCharge);
                sb.EmitPushBytes(return_type);
                sb.EmitPushBytes(parameter__list);
                sb.EmitPushBytes(script);
                sb.EmitSysCall("Neo.Contract.Create");

                string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());
                //用ivokescript试运行并得到消耗

                byte[] postdata;
                var    url    = MakeRpcUrlPost(api, "invokescript", out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
                var    result = HttpPost(url, postdata);
                //string result = http.Post(api, "invokescript", new MyJson.JsonNode_Array() { new MyJson.JsonNode_ValueString(scriptPublish) },Encoding.UTF8);
                var     consume                 = (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as MyJson.JsonNode_Object)["gas_consumed"].ToString();
                decimal gas_consumed            = decimal.Parse(consume);
                ThinNeo.InvokeTransData extdata = new ThinNeo.InvokeTransData();
                extdata.script = sb.ToArray();

                //Console.WriteLine(ThinNeo.Helper.Bytes2HexString(extdata.script));
                extdata.gas = Math.Ceiling(gas_consumed - 10);

                //拼装交易体
                ThinNeo.Transaction tran = MakeTran(dir, null, new ThinNeo.Hash256(assetid), extdata.gas);
                tran.version = 1;
                tran.extdata = extdata;
                tran.type    = ThinNeo.TransactionType.InvocationTransaction;
                byte[] msg      = tran.GetMessage();
                byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
                tran.AddWitness(signdata, pubkey, address);
                string txid    = tran.GetHash().ToString();
                byte[] data    = tran.GetRawData();
                string rawdata = ThinNeo.Helper.Bytes2HexString(data);

                //Console.WriteLine("scripthash:"+scripthash);

                url    = MakeRpcUrlPost(api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(rawdata));
                result = HttpPost(url, postdata);

                MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object)MyJson.Parse(result);
                Console.WriteLine(resJO.ToString());
            }



            ////byte[] prikey = ThinNeo.Helper.GetPrivateKeyFromWIF(wif);
            //byte[] pubkey = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            //string address = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);

            //Dictionary<string, List<UTXO>> dic_UTXO = new Dictionary<string, List<UTXO>>();

            ////读取合约avm文件
            //byte[] script = System.IO.File.ReadAllBytes("NeoContracts.avm");
            //Console.WriteLine("合约脚本:" + ThinNeo.Helper.Bytes2HexString(script));
            //Console.WriteLine("合约脚本哈希:" + ThinNeo.Helper.Bytes2HexString(ThinNeo.Helper.GetScriptHashFromScript(script)
            //                      .data.ToArray().Reverse().ToArray()));
            //byte[] parameter__list = ThinNeo.Helper.HexString2Bytes("0710");//合约入参
            //byte[] return_type = ThinNeo.Helper.HexString2Bytes("05");//合约出参
            //int need_storage = 1;
            ////int need_nep4 = 0;
            ////int need_canCharge = 4;
            //string name = "sgas";
            //string version = "1.0";
            //string auther = "NEL";
            //string email = "0";
            //string description = "0";
            //using (ThinNeo.ScriptBuilder sb = new ThinNeo.ScriptBuilder())
            //{
            //    var ss = need_storage    ;

            //    sb.EmitPushString(description);
            //    sb.EmitPushString(email);
            //    sb.EmitPushString(auther);
            //    sb.EmitPushString(version);
            //    sb.EmitPushString(name);
            //    sb.EmitPushNumber(need_storage    );
            //    sb.EmitPushBytes(return_type);
            //    sb.EmitPushBytes(parameter__list);
            //    sb.EmitPushBytes(script);
            //    sb.EmitSysCall("Neo.Contract.Create");

            //    string scriptPublish = ThinNeo.Helper.Bytes2HexString(sb.ToArray());

            //    byte[] postdata;
            //    var method = "invokescript";
            //    var url = Helper.MakeRpcUrlPost(api, method, out postdata, new MyJson.JsonNode_ValueString(scriptPublish));
            //    var result = await Helper.HttpPost(url, postdata);

            //    var consume =
            //        (((MyJson.Parse(result) as MyJson.JsonNode_Object)["result"] as MyJson.JsonNode_Array)[0] as
            //            MyJson.JsonNode_Object)["gas_consumed"].ToString();
            //    decimal gas_consume = decimal.Parse(consume);
            //    ThinNeo.InvokeTransData extdata = new InvokeTransData();
            //    extdata.script = sb.ToArray();
            //    extdata.gas = Math.Ceiling(gas_consume - 10);

            //    ThinNeo.Transaction tran = MakeTran(dic_UTXO, null, new ThinNeo.Hash256(assetid), extdata.gas);

            //    tran.version = 1;
            //    tran.extdata = extdata;
            //    tran.type = ThinNeo.TransactionType.InvocationTransaction;
            //    byte[] msg = tran.GetMessage();
            //    byte[] signdata = ThinNeo.Helper.Sign(msg, prikey);
            //    tran.AddWitness(signdata, pubkey, address);
            //    string txid = tran.GetHash().ToString();
            //    byte[] data = tran.GetRawData();
            //    string rawdata = ThinNeo.Helper.Bytes2HexString(data);

            //    url = Helper.MakeRpcUrlPost(api, "sendrawtransaction", out postdata,
            //        new MyJson.JsonNode_ValueString(rawdata));
            //    result = await Helper.HttpPost(url, postdata);
            //    MyJson.JsonNode_Object resJO = (MyJson.JsonNode_Object) MyJson.Parse(result);
            //    Console.WriteLine(resJO.ToString());
            //}
        }
Example #56
0
    public HttpResponseMessage Get(int id)
    {
        var app = GetApps().Where(m => m.Id.Equals(id)).FirstOrDefault();

        return(MyJson.ObjectToJson(app));
    }
Example #57
0
    IEnumerator HTTP_nel_post_tan_gas(string toaddr, decimal num)
    {
        WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(roleInfo.getInstance().address));
        WWW     www             = new WWW(global.api, www_getuxo_form);

        yield return(www);

        Dictionary <string, List <Utxo> > _dir = get_utxo(www.text);

        if (_dir.ContainsKey(global.id_GAS) == false)
        {
            Debug.Log("no gas");
            yield return(null);
        }

        string paparms;

        //拼接发给后台做验证的json字符串
        MyJson.JsonNode_Object account = new MyJson.JsonNode_Object();
        account["sbPushString"] = new MyJson.JsonNode_ValueString("transfer");
        account["cnts"]         = new MyJson.JsonNode_ValueString(num.ToString());

        paparms = account.ToString();
        Debug.Log(paparms);

        ThinNeo.Transaction tran = null;
        {
            tran = Helper.makeTran(_dir[global.id_GAS], toaddr, new ThinNeo.Hash256(global.id_GAS), num);
        }

        //sign and broadcast
        var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey);

        tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address);
        var trandata    = tran.GetRawData();
        var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

        WWWForm www_form_sendraw = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata));
        WWW     sendraw          = new WWW(global.api, www_form_sendraw);

        yield return(sendraw);

        var json = MyJson.Parse(sendraw.text).AsDict();

        if (json.ContainsKey("result"))
        {
            var resultv = json["result"].AsList()[0].AsDict();
            var txid    = resultv["txid"].AsString();
            if (txid.Length > 0)
            {
                //Nep55_1.lastNep5Tran = tran.GetHash();
            }
            Debug.Log("txid=" + txid);

            api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid,
                                                 "0", num.ToString(), "6", paparms, global.netType, "0",
                                                 (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); });
        }
        else
        {
            Debug.Log("交易失败");
            //testtool.showNotice("交易失败");
        }
    }
Example #58
0
        async public Task Demo()
        {
            var lasthash = "0x0963614006fda9ebb3ecbc1a7bd604a393cfe66cf9234882abc860cdb4694970";

            if (lasthash == null)
            {
                Console.WriteLine("你还没有正确执行N5 3");
                return;
            }
            byte[] prikey     = ThinNeo.Helper.GetPrivateKeyFromWIF(Nep55_1.testwif);
            byte[] pubkey     = ThinNeo.Helper.GetPublicKeyFromPrivateKey(prikey);
            string address    = ThinNeo.Helper.GetAddressFromPublicKey(pubkey);
            var    scripthash = ThinNeo.Helper.GetPublicKeyHashFromAddress(address);

            var    nep55_shash   = new ThinNeo.Hash160(Nep55_1.nep55);
            string nep55_address = ThinNeo.Helper.GetAddressFromScriptHash(nep55_shash);


            Console.WriteLine("address=" + address);

            //获取地址的资产列表
            Dictionary <string, List <Utxo> > dir = await Helper.GetBalanceByAddress(Nep55_1.api, nep55_address);

            if (dir.ContainsKey(Nep55_1.id_GAS) == false)
            {
                Console.WriteLine("no gas");
                return;
            }
            List <Utxo> newlist = new List <Utxo>();

            foreach (var utxo in dir[Nep55_1.id_GAS])
            {
                if (utxo.n == 0 && utxo.txid.ToString().Equals(lasthash))
                {
                    newlist.Add(utxo);
                }
            }
            if (newlist.Count == 0)
            {
                Console.WriteLine("找不到要使用的UTXO");
                return;
            }

            {//检查utxo
                byte[] script = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    var array = new MyJson.JsonNode_Array();
                    array.AddArrayValue("(hex256)" + newlist[0].txid.ToString());
                    sb.EmitParamJson(array);                                                   //参数倒序入
                    sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)getRefundTarget")); //参数倒序入
                    var shash = new ThinNeo.Hash160(Nep55_1.nep55);
                    sb.EmitAppCall(shash);                                                     //nep5脚本
                    script = sb.ToArray();
                }
                var    urlCheckUTXO    = Helper.MakeRpcUrl(Nep55_1.api, "invokescript", new MyJson.JsonNode_ValueString(ThinNeo.Helper.Bytes2HexString(script)));
                string resultCheckUTXO = await Helper.HttpGet(urlCheckUTXO);

                var jsonCU = MyJson.Parse(resultCheckUTXO);
                var stack  = jsonCU.AsDict()["result"].AsList()[0].AsDict()["stack"].AsList()[0].AsDict();
                var value  = stack["value"].AsString();
                if (value.Length == 0)//未标记的UTXO,不能使用
                {
                    Console.WriteLine("这个utxo没有标记");
                    return;
                }
                var hash = new ThinNeo.Hash160(ThinNeo.Helper.HexString2Bytes(value));
                //if (hash.ToString()!= scripthash.ToString())
                //{
                //    Console.WriteLine("这个utxo不是标记给你用的");
                //    return;
                //}
            }


            ThinNeo.Transaction tran = Helper.makeTran(newlist, address, new ThinNeo.Hash256(Nep55_1.id_GAS), newlist[0].value);
            tran.type    = ThinNeo.TransactionType.ContractTransaction;
            tran.version = 0;


            //sign and broadcast
            {//做智能合约的签名
                byte[] n55contract = null;
                {
                    var urlgetscript    = Helper.MakeRpcUrl(Nep55_1.api, "getcontractstate", new MyJson.JsonNode_ValueString(Nep55_1.nep55));
                    var resultgetscript = await Helper.HttpGet(urlgetscript);

                    var _json    = MyJson.Parse(resultgetscript).AsDict();
                    var _resultv = _json["result"].AsList()[0].AsDict();
                    n55contract = ThinNeo.Helper.HexString2Bytes(_resultv["script"].AsString());
                }
                byte[] iscript = null;
                using (var sb = new ThinNeo.ScriptBuilder())
                {
                    sb.EmitPushNumber(0);
                    sb.EmitPushNumber(0);
                    iscript = sb.ToArray();
                }
                tran.AddWitnessScript(n55contract, iscript);
            }


            var trandata    = tran.GetRawData();
            var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

            ThinNeo.Transaction testde = new ThinNeo.Transaction();
            testde.Deserialize(new System.IO.MemoryStream(trandata));

            byte[] postdata;
            var    url = Helper.MakeRpcUrlPost(Nep55_1.api, "sendrawtransaction", out postdata, new MyJson.JsonNode_ValueString(strtrandata));


            //bug
            //sendraw api 有bug,所以先加这个
            //url = "http://localhost:20332";


            string poststr = System.Text.Encoding.UTF8.GetString(postdata);

            Console.WriteLine("-----post info begin----");
            Console.WriteLine(poststr);
            Console.WriteLine("-----post info end----");

            var result = await Helper.HttpPost(url, postdata);

            Console.WriteLine("得到的结果是:" + result);
            var json = MyJson.Parse(result).AsDict();

            if (json.ContainsKey("result"))
            {
                bool bSucc = false;
                if (json["result"].type == MyJson.jsontype.Value_Number)
                {
                    bSucc = json["result"].AsBool();
                    Console.WriteLine("cli=" + json["result"].ToString());
                }
                else
                {
                    var resultv = json["result"].AsList()[0].AsDict();
                    var txid    = resultv["txid"].AsString();
                    bSucc = txid.Length > 0;
                    Console.WriteLine("txid=" + txid);
                }
                if (bSucc)
                {
                    Nep55_1.lastNep5Tran = tran.GetHash();
                    Console.WriteLine("besucc txid=" + tran.GetHash().ToString());
                }
            }
        }
Example #59
0
    IEnumerator HTTP_nel_post_gas_sgas(decimal num)
    {
        WWWForm www_getuxo_form = Helper.GetWWWFormPost("getutxo", new MyJson.JsonNode_ValueString(roleInfo.getInstance().address));
        WWW     www             = new WWW(global.api, www_getuxo_form);

        yield return(www);

        Dictionary <string, List <Utxo> > _dir = get_utxo(www.text);

        if (_dir.ContainsKey(global.id_GAS) == false)
        {
            Debug.Log("no gas");
        }

        string paparms;

        ThinNeo.Transaction tran = null;
        {
            byte[] script = null;
            using (var sb = new ThinNeo.ScriptBuilder())
            {
                var array = new MyJson.JsonNode_Array();
                sb.EmitParamJson(array);                                              //参数倒序入
                sb.EmitParamJson(new MyJson.JsonNode_ValueString("(str)mintTokens")); //参数倒序入
                ThinNeo.Hash160 shash = new ThinNeo.Hash160(global.id_sgas);
                sb.EmitAppCall(shash);                                                //nep5脚本
                script = sb.ToArray();

                //拼接发给后台做验证的json字符串
                MyJson.JsonNode_Object account = new MyJson.JsonNode_Object();
                account["sbParamJson"]  = array;
                account["sbPushString"] = new MyJson.JsonNode_ValueString("mintTokens");
                account["nnc"]          = new MyJson.JsonNode_ValueString(global.id_sgas);
                account["cnts"]         = new MyJson.JsonNode_ValueString(num.ToString());
                paparms = account.ToString();
                Debug.Log(paparms);
            }
            var nep5scripthash = new ThinNeo.Hash160(global.id_sgas);
            var targetaddr     = ThinNeo.Helper.GetAddressFromScriptHash(nep5scripthash);
            Debug.Log("contract address=" + targetaddr);//往合约地址转账



            //生成交易
            tran      = Helper.makeTran(_dir[global.id_GAS], targetaddr, new ThinNeo.Hash256(global.id_GAS), num);
            tran.type = ThinNeo.TransactionType.InvocationTransaction;
            var idata = new ThinNeo.InvokeTransData();
            tran.extdata = idata;
            idata.script = script;
        }

        //sign and broadcast
        var signdata = ThinNeo.Helper.Sign(tran.GetMessage(), roleInfo.getInstance().prikey);

        tran.AddWitness(signdata, roleInfo.getInstance().pubkey, roleInfo.getInstance().address);
        var trandata    = tran.GetRawData();
        var strtrandata = ThinNeo.Helper.Bytes2HexString(trandata);

        WWWForm www_form_sendraw = Helper.GetWWWFormPost("sendrawtransaction", new MyJson.JsonNode_ValueString(strtrandata));
        WWW     sendraw          = new WWW(global.api, www_form_sendraw);

        yield return(sendraw);

        var json = MyJson.Parse(sendraw.text).AsDict();

        if (json.ContainsKey("result"))
        {
            var resultv = json["result"].AsList()[0].AsDict();
            var txid    = resultv["txid"].AsString();
            if (txid.Length > 0)
            {
                Debug.Log("txid=" + txid);

                api_tool._instance.addUserWalletLogs(roleInfo.getInstance().uid, roleInfo.getInstance().token, txid,
                                                     "0", num.ToString(), "1", paparms, global.netType, "0",
                                                     (bool timeout1, WWW www1) => { testtool.panel_main.on_refresh_WalletListss(); });
            }
            else
            {
                Debug.Log("交易失败");
            }
        }
        else
        {
            Debug.Log("交易失败");
        }
    }
Example #60
0
        private void dapp_invokeScript(DApp_Func func)
        {
            try
            {
                var hash   = dapp_getCallParam(func.call.scriptcall);
                var scrb   = new ThinNeo.ScriptBuilder();
                var jsonps = func.call.scriptparam;
                for (var i = jsonps.Length - 1; i >= 0; i--)
                {
                    dapp_EmitParam(scrb, jsonps[i]);
                }
                scrb.EmitAppCall(hash);


                var callstr = ThinNeo.Helper.Bytes2HexString(scrb.ToArray());
                var str     = WWW.MakeRpcUrl(labelRPC.Text, "invokescript", new MyJson.JsonNode_ValueString(callstr));
                var result  = WWW.GetWithDialog(this, str);

                this.dapp_result.Text = "";


                if (result == null)
                {
                    this.dapp_result_raw.Text = "(null)";
                }
                else
                {
                    var json = MyJson.Parse(result).AsDict();
                    if (json.ContainsKey("error"))
                    {
                        this.dapp_result_raw.Text = json["error"].ToString();
                    }
                    else
                    {
                        StringBuilder sb = new StringBuilder();
                        json["result"].AsDict().ConvertToStringWithFormat(sb, 4);
                        this.dapp_result_raw.Text = sb.ToString();
                        //var gas = json["result"].AsDict()["gas_consumed"].ToString();
                        //this.dapp_result.Items.Add("Fee:" + gas);
                        //var state = json["result"].AsDict()["state"].ToString();
                        //this.dapp_result.Items.Add("State:" + state);
                        var stack = json["result"].AsDict()["stack"].AsList();
                        this.dapp_result.Text += ("StackCount=" + stack.Count) + "\r\n";
                        for (var i = 0; i < func.results.Length; i++)
                        {
                            var jsonresult = getJsonResult(stack, func.results[i].pos);
                            if (jsonresult == null)
                            {
                                this.dapp_result.Text += (func.results[i].desc + "=" + "<miss>") + "\r\n";
                            }
                            else
                            {
                                try
                                {
                                    var outvalue = dapp_getResultValue(func.results[i].type, jsonresult);
                                    this.dapp_result.Text += (func.results[i].desc + "=" + outvalue) + "\r\n";
                                }
                                catch
                                {
                                    this.dapp_result.Text += (func.results[i].desc + "=" + "<error>") + "\r\n";
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception err)
            {
                this.dapp_result_raw.Text = "error=" + err.Message + "\r\n" + err.StackTrace;
            }
        }