WM Sidekick Docking Object

This is the docking object which is created under the WM version 4.x script

目前為 2014-12-09 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/6906/27574/WM%20Sidekick%20Docking%20Object.js

  1. // ==UserScript==
  2. // @name WM Sidekick Docking Object
  3. // @namespace MerricksdadWMSidekickDockingObject
  4. // @description This is the docking object which is created under the WM version 4.x script
  5. // @license http://creativecommons.org/licenses/by-nc-nd/3.0/us/
  6. // @version 4.0.0.0
  7. // @copyright Charlie Ewing except where noted
  8. // ==/UserScript==
  9.  
  10. //this script requires some functions in the WM Common Library
  11. //this script needs access to a pre-defined JSON object
  12.  
  13.  
  14. (function(){
  15.  
  16. //***************************************************************************************************************************************
  17. //***** Sidekick Docking Object
  18. //***************************************************************************************************************************************
  19. WM.dock = {
  20. //restructure menu to append appID before every object
  21. fixMenu: function(menu,app){try{
  22. var ret={};
  23. //for each object in menu
  24. for (var o in menu){
  25. //WM.message(o);
  26. ret[app+o]=menu[o];
  27.  
  28. //fix button functions and arrays to be prepended by the appID of that sidekick
  29. var t=menu[o]["type"];
  30. switch(t){
  31. case "button_highlight":
  32. case "button_selectmulti":
  33. case "button_selectprefix":
  34.  
  35. //fix elements in the clearfirst array
  36. if (menu[o]["clearfirst"]){
  37. for (var i=0,len=ret[app+o]["clearfirst"].length;i<len;i++){
  38. ret[app+o]["clearfirst"][i] = app+ret[app+o]["clearfirst"][i];
  39. }
  40. }
  41.  
  42. //fix elements in the options array
  43. if (menu[o]["options"]){
  44. for (var i=0,len=ret[app+o]["options"].length;i<len;i++){
  45. ret[app+o]["options"][i] = app+ret[app+o]["options"][i];
  46. }
  47. }
  48.  
  49. if (menu[o]["clearPrefix"]){
  50. ret[app+o]["clearPrefix"]=app+ret[app+o]["clearPrefix"];
  51. }
  52.  
  53. if (menu[o]["prefix"]){
  54. ret[app+o]["prefix"]=app+ret[app+o]["prefix"];
  55. }
  56. }
  57.  
  58. //fix kids
  59. if (menu[o]["kids"]){
  60. //rebuild kids object
  61. ret[app+o]["kids"]=WM.dock.fixMenu(menu[o]["kids"],app);
  62. }
  63. }
  64. return ret;
  65. } catch(e) {log("WM.dock.fixMenu: "+e);}},
  66.  
  67. //restructure tests to append appID before every object's return
  68. fixTests: function(arr,app){try{
  69. //for each test in array
  70. for (var t=0,len=arr.length;t<len;t++) {
  71. var ret=arr[t].ret, kids=arr[t].kids;
  72. //replace return value
  73. if (ret) {
  74. if (ret!="exclude" && ret!="none") {
  75. arr[t].ret=app.appID+ret;
  76. }
  77. }
  78. //process subtests
  79. if (kids) WM.dock.fixTests(kids,app);
  80. }
  81. } catch(e) {log("WM.dock.fixTests: "+e);}},
  82.  
  83. fixAcceptTexts:function(app){try{
  84. var newAccText={};
  85. for (var s in app.accText) {
  86. newAccText[app.appID+s]=app.accText[s];
  87. }
  88. app.accText=newAccText;
  89. } catch(e) {log("WM.dock.fixAcceptTexts: "+e);}},
  90.  
  91. onSidekickParsed: function(newset){try{
  92. //save it into the NEW format for games
  93. var app=(WM.apps[newset.appID]=new WM.App(newset));
  94.  
  95. //promptText JSON.stringify(WM.config.settings));
  96. WM.updateSettingsValues();
  97.  
  98. //detach the menu from the newset to reduce duplication
  99. delete app.menu;
  100. //fire priority event
  101. (function(){WM.rulesManager.doEvent("onSidekickDock",app);})();
  102. //fetch its initial posts
  103. //app.fetchPosts();
  104. WM.newSidekicks.push(app);
  105. }catch(e){log("WM.dock.onSidekickParsed: "+e);}},
  106. parseNewSidekick: function(node){try{
  107. if (node){
  108. var v = node.getAttribute('data-ft');
  109. node.setAttribute('data-ft','');
  110. if (v||null) {
  111. var newset = JSON.parse(v);
  112. WM.dock.onSidekickParsed(newset);
  113. }
  114. }
  115. } catch(e) {log("WM.dock.parseNewSidekick: "+e);}},
  116. answerDockingDoor: function(){try{
  117. //log("Sidekick requesting to dock");
  118.  
  119. //get all sidekicks that left info on the dock;
  120. forNodes(".//div[@id='wmDock']/div[(@data-ft) and not(@data-ft='')]",{},function(node){
  121. if (node.getAttribute('data-ft') !=""){
  122. window.setTimeout(WM.dock.parseNewSidekick,1,node);
  123. }
  124. });
  125. } catch(e) {log("WM.dock.answerDockingDoor: "+e);}},
  126.  
  127. };
  128.  
  129. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址