From af7ce57d89405df0de98cbcf89929c1b58269d76 Mon Sep 17 00:00:00 2001 From: nullptr-w8 Date: Thu, 30 Sep 2021 16:15:44 +0500 Subject: [PATCH] demo sciter-js --- Projects/UOContent/Gumps/SciterTestGump.cs | 477 ++++++++++----------- 1 file changed, 236 insertions(+), 241 deletions(-) diff --git a/Projects/UOContent/Gumps/SciterTestGump.cs b/Projects/UOContent/Gumps/SciterTestGump.cs index ce6b87a43..4147c24c8 100644 --- a/Projects/UOContent/Gumps/SciterTestGump.cs +++ b/Projects/UOContent/Gumps/SciterTestGump.cs @@ -1,4 +1,5 @@ using Server.Gumps; +using Server.Items; using Server.Network; using System; using System.IO; @@ -8,20 +9,48 @@ namespace Server.Gumps { public class SciterTestGump : Gump { + public class Item + { + public string Name { get; set; } + public int Count { get; set; } + } public class Shop { - public string[] ShopItems { get; set; } = new string[] { "item1", "item2" }; + public Item[] ShopItems { get; set; } = new Item[] + { + new Item(){Name="Arrow",Count = 10 }, + new Item(){Name="Bolt",Count = 10 }, + new Item(){Name="Gold",Count = 20000 }, + }; } - + public Shop _shop = new Shop(); public SciterTestGump(Mobile user) : base( 0, 0 ) { UseWebRender = true; - AddBody(Body()); + AddBody(body()); } + + public void TryToAddItem(Mobile m, int index) + { + if (_shop.ShopItems.Length < index) + return; + + var itemName = _shop.ShopItems[index].Name; + var itemCount = Convert.ToInt32(_shop.ShopItems[index].Count); + + var type = AssemblyHandler.FindTypeByName(itemName); + + var item = Activator.CreateInstance(type, args: new object[] { itemCount }); + if (item is Server.Item _item) + { + m.AddToBackpack(_item); + } + + } public override void OnResponse(NetState sender, RelayInfo info) { var from = sender.Mobile; @@ -30,263 +59,229 @@ namespace Server.Gumps case 0: // close sender.RemoveGump(this); break; - case 1: // hide - from.Hidden = true; + case 1: + SendData(from, "1", _shop); break; - case 2: // unhide - from.Hidden = false; + case 2: + TryToAddItem(from, Convert.ToInt32(info.TextEntries[0].Text)); break; - case 3: // sendDataToCLeint - SendData(from, "ShowSend", new Shop()); - break; - case 4: // showData - var builder = new StringBuilder(); - for (int i = 0; i < info.TextEntries.Length; i++) - { - var test = info.TextEntries[i].Text; - builder.Append("argument "); - builder.Append(i.ToString()); - builder.Append(" = "); - builder.Append(test); - builder.Append(" "); - } - from.SendAsciiMessage(builder.ToString()); - - break; default: break; - - } + } - public string Body() + public string body() { - return "\r\n" + - " \r\n" + - " Test<" + - "/title>\r\n" + - " <style>\r\n" + - " [onmousele" + - "ave] { aspect: \"Emu" + - ".onmouseleave\"; }\r" + - "\n" + - " html {\r" + - "\n" + - " over" + - "flow: hidden;\r\n" + - " \r\n" + - " }\r\n" + + return "<html >\r\n" + " \r\n" + - " .btn {\r\n" + - " border: 2px solid " + - "black;\r\n" + - " border-radius: 5px" + + " <style>\r\n" + + " html{backgroun" + + "d-color:black}\r\n" + + " h1 { color: wh" + + "ite;}\r\n" + + " p{color: white" + + ";}\r\n" + + " .btn1 {\r\n" + + " backgrou" + + "nd-color: yellow;\r" + + "\n" + + " color: b" + + "lack;\r\n" + + " text-ali" + + "gn: center;\r\n" + + " font-siz" + + "e: 13px;\r\n" + + " }\r\n" + + " #close {\r\n" + + " position: re" + + "lative;\r\n" + + " float: right" + ";\r\n" + - " background-color: " + - "white;\r\n" + - " color: black;\r\n" + - " padding: 14px 28px" + - ";\r\n" + - " font-size: 16px;\r" + + " \r\n" + + " }\r\n" + + " \r\n" + + " .center {\r\n" + + " position: re" + + "lative;\r\n" + + " float: cente" + + "r;\r\n" + + " } \r\n" + + " \r\n" + + " .close-btn {\r" + "\n" + - " cursor: pointer;\r" + - "\n" + - "} \r\n" + - ".success {\r\n" + - " border-color: #04A" + - "A6D;\r\n" + - " color: green;\r\n" + - "}\r\n\r\n" + - ".success:hover {\r\n" + - " background-color: " + - "#04AA6D;\r\n" + - " color: white;\r\n" + - "}\r\n\r\n" + - "/* Blue */\r\n" + - ".info {\r\n" + - " border-color: #219" + - "6F3;\r\n" + - " color: dodgerblue" + + " font-size: 6" + + "0px;\r\n" + + " font-weight:" + + " bold;\r\n" + + " color: #000;" + "\r\n" + - "}\r\n\r\n" + - ".info:hover {\r\n" + - " background: #2196F" + - "3;\r\n" + - " color: white;\r\n" + - "}\r\n\r\n" + - "/* Orange */\r\n" + - ".warning {\r\n" + - " border-color: #ff9" + - "800;\r\n" + - " color: orange;\r\n" + - "}\r\n\r\n" + - ".warning:hover {\r\n" + - " background: #ff980" + - "0;\r\n" + - " color: white;\r\n" + - "}\r\n\r\n" + - "/* Red */\r\n" + - ".danger {\r\n" + - " border-color: #f44" + - "336;\r\n" + - " color: red\r\n" + - "}\r\n\r\n" + - ".danger:hover {\r\n" + - " background: #f4433" + - "6;\r\n" + - " color: white;\r\n" + - "}\r\n\r\n" + - "/* Gray */\r\n" + - ".default {\r\n" + - " border-color: #e7e" + - "7e7;\r\n" + - " color: black;\r\n" + - "}\r\n\r\n" + - ".default:hover {\r\n" + - " background: #e7e7e" + - "7;\r\n" + - "}\r\n\r\n" + - " </style>\r\n" + - " <script type=\"t" + - "ext/tiscript\">\r\n" + - "\r\n" + - " namespace Em" + - "u {\r\n" + - " function o" + - "nmouseleave() {\r\n" + - " this.o" + - "n(\"mouseleave\", fu" + - "nction(evt) {\r\n" + - " \r\n" + - " });\r" + - "\n" + - " }\r\n" + - " }\r\n\r\n" + - " function sel" + - "f.ready() {\r\n" + - " view.move(" + - "400px,100px,500,300)" + - ";\r\n" + - " view.windo" + - "wTopmost = false;\r" + - "\n" + - " //focus on" + - " form \r\n" + - " //this.tim" + - "er(20ms, function() " + - "{ view.focusable(#fi" + - "rst).state.focus = t" + - "rue; });\r\n" + - " }\r\n\r\n" + - " self.on(\"ke" + - "ydown\", function(ev" + - "t) {\r\n" + - " if(evt.ke" + - "yCode == 27)\r\n" + - " {\r\n" + - " close(" + - ");\r\n" + - " }\r\n" + - " });\r\n\r\n" + - " function Sho" + - "wSend(data)\r\n" + - " {\r\n" + - " var input " + - "= $(#test);\r\n" + - " if(element" + - ")return; \r\n" + - " input.clea" + - "r();\r\n\r\n" + - " for (var i" + - " = 0; i < data.ShopI" + - "tems.length; i++) {" + - "\r\n" + - " input.ap" + - "pend(data.ShopItems[" + - "i]+\' ,\');\r\n" + - " }\r\n" + - " }\r\n\r\n" + - " function clo" + - "se()\r\n" + - " {\r\n" + - " view.Host_" + - "SEND(0);\r\n" + - " view.windo" + - "wState = View.WINDOW" + - "_HIDDEN;\r\n" + - " view.move(" + - "0px,0px,0,0);\r\n" + + " }\r\n" + + " .tsize\r\n" + + " {\r\n" + + " color: r" + + "ed;\r\n" + + " font-siz" + + "e: 18px;\r\n" + + " }\r\n" + + " .myButton " + + "{\r\n" + + " box-shadow" + + ":inset 0px 34px 0px " + + "-15px #b54b3a;\r\n" + + " background" + + ":linear-gradient(to " + + "bottom, #a73f2d 5%, " + + "#b34332 100%);\r\n" + + " background" + + "-color:#a73f2d;\r\n" + + " border:1px" + + " solid #241d13;\r\n" + + " display:in" + + "line-block;\r\n" + + " cursor:poi" + + "nter;\r\n" + + " color:#fff" + + "fff;\r\n" + + " font-famil" + + "y:Arial;\r\n" + + " font-size:" + + "15px;\r\n" + + " font-weigh" + + "t:bold;\r\n" + + " padding:9p" + + "x 23px;\r\n" + + " text-decor" + + "ation:none;\r\n" + + " text-shado" + + "w:0px -1px 0px #7a2a" + + "1d;\r\n" + " }\r\n" + - " \r\n\r\n\r\n" + - " event click " + - "$(button#load) {\r\n" + - " view.Hos" + - "t_SEND(3);\r\n" + - " }\r\n\r\n" + - " event click " + - "$(button#send) {\r\n" + - " view.Hos" + - "t_SEND(4,\"arg0\",\"" + - "arg1\",\"arg2\",\"ar" + - "g3\",\"arg4\",\"arg5" + - "\",\"arg6\",\"arg7\"" + - ",\"arg8\",\"arg9\");" + - "\r\n" + - " }\r\n\r\n" + - " event click " + - "$(button#hide) {\r\n" + - " view.Hos" + - "t_SEND(1,\"HELLO WOR" + - "LD YEAH\");\r\n" + - " }\r\n\r\n" + - " event click " + - "$(button#unhide) {\r" + - "\n" + - " view.Hos" + - "t_SEND(2);\r\n" + - " }\r\n\r\n" + - " event click " + - "$(button#close) {\r" + - "\n" + - " close();\r" + + " .myButton:ho" + + "ver {\r\n" + + " background" + + ":linear-gradient(to " + + "bottom, #b34332 5%, " + + "#a73f2d 100%);\r\n" + + " background" + + "-color:#b34332;\r\n" + + " }\r\n" + + " .myButton:ac" + + "tive {\r\n" + + " position:r" + + "elative;\r\n" + + " top:1px;\r" + "\n" + " }\r\n" + - " \r\n\r\n" + - " </script>\r\n" + + " </style>\r\n" + + " \r\n\r\n" + + "\t<script type=\"mod" + + "ule\">\r\n\r\n" + + "\t\tdocument.ready =" + + " function () {\r\n" + + "\t\t}\r\n" + " \r\n" + - " </head>\r\n" + - " <body onmouselea" + - "ve>\r\n" + - " <button#load" + - " class=\"btn warning" + - "\" onmouseenter onmo" + - "useleave>getDataFrom" + - "Server</button>\r\n" + - " <button#send" + - " class=\"btn warning" + - "\" onmouseenter onmo" + - "useleave>sendDataToS" + - "erver</button>\r\n" + - " <button#hide" + - " class=\"btn warning" + - "\" onmouseenter onmo" + - "useleave>hide</butto" + - "n>\r\n" + - " <button#unhi" + - "de class=\"btn info" + - "\">unhide</button>\r" + + " document.onmouse" + + "leave = function(){" + + "\r\n" + + " Window.this.xc" + + "all(\"GameFocus\");" + + "\r\n" + + " }\r\n" + + "\t</script>\r\n" + + " \r\n" + + "</head>\r\n" + + " <body>\r\n" + + " <div id=\"app\" " + + ">\r\n" + + " <a id=\"clos" + + "e\" v-on:click=\"Clo" + + "se()\" class=\"tsize" + + "\">✕</a>\r\n" + + " <h1 class=\"" + + "center\"> MUO + VueJ" + + "s Demo</h1>\r\n" + + " <ul>\r\n" + + " <li v-for=\"" + + "(item, index) in sho" + + "pItems\">\r\n" + + " <p>{{ item" + + ".Name }} amount: {{ " + + "item.Count }} \r\n" + + " <a href=" + + "\"#\" class=\"myButt" + + "on\" v-on:click=\"Ge" + + "t(index)\">OK</a>\r" + "\n" + - " <button#clos" + - "e class=\"btn danger" + - "\">Close</button>\r" + + " </p>\r\n" + + " </li>\r\n" + + " </ul>\r\n" + + " </div>\r\n" + + " <script src=\"http" + + "s://unpkg.com/vue\">" + + "</script>\r\n" + + " <!-- <script src=" + + "\"js\\vue.js\"></scr" + + "ipt> -->\r\n" + + " <script>\r\n" + + " var app = new " + + "Vue({\r\n" + + " el: \'#app" + + "\',\r\n" + + " data: {\r" + "\n" + - " <textarea id" + - "=\"test\" name=\"com" + - "ment\"></textarea></" + - "p>\r\n" + - " </body>\r\n" + + " shopI" + + "tems: []\r\n" + + " },\r\n" + + " beforeMoun" + + "t(){\r\n" + + " //set s" + + "ize \r\n" + + " Window." + + "this.move(100,100, 5" + + "00, 500, false);\r\n" + + " this.ge" + + "tItems();\r\n" + + " },\r\n" + + " methods: {" + + "\r\n" + + " getItems" + + ": function () {\r\n" + + " Window" + + ".this.xcall(\"SEND\"" + + ", 1 ,function (value" + + ") {\r\n" + + " //" + + "you can\'t use this " + + "now it\'s func\r\n" + + " ap" + + "p.shopItems = value." + + "ShopItems;\r\n" + + "\t\t\t });\r" + + "\n" + + " },\r\n" + + " Get: fun" + + "ction (index) {\r\n" + + " Window" + + ".this.xcall(\"SEND\"" + + ", 2, index);\r\n" + + " },\r\n" + + " Close: f" + + "unction () {\r\n" + + " docu" + + "ment.body.innerHTML " + + "= \"\";\r\n" + + " Wind" + + "ow.this.state = Win" + + "dow.WINDOW_HIDDEN;\r" + + "\n" + + " },\r\n" + + " }\r\n" + + " });\r\n" + + " </script>\r\n" + + " </body>\r\n" + "</html>"; } + } }