• R/O
  • SSH
  • HTTPS

thief: Commit


Commit MetaInfo

Revision25 (tree)
Time2011-11-26 02:01:03
Authorseussnu

Log Message

0.0.7-alpha4
・ コマンドの実装方式を変更

Change Summary

Incremental Difference

--- thief.js (revision 24)
+++ thief.js (revision 25)
@@ -99,7 +99,7 @@
9999 Space : 32,
100100 PageUp : 33, // !
101101 PageDown : 34, // "
102- End : 35, // #
102+ End : 10035, // # = 35
103103 Home : 36, // $
104104 Left : 37, // %
105105 Up : 38, // &
@@ -368,7 +368,7 @@
368368
369369 if(THIEF.global.debugmode){
370370 if(typeof param === 'undefined'){
371- alert('引数が師弟されていません');
371+ alert('引数が指定されていません');
372372 }
373373 }
374374
@@ -1060,11 +1060,13 @@
10601060 THIEF.html.addDebugMessage('無効なキー入力のため、何の処理もしない。')
10611061 } else {
10621062 THIEF.html.addDebugMessage(String.fromCharCode(code) + '(' + code + ')の入力に対する処理を開始...');
1063- if (typeof THIEF.func.method.manual[code] === 'function') {
1064- THIEF.html.addDebugMessage(this.get(THIEF.PROP.displayName) + ' の ' + THIEF.func.method.manual[code] + 'を実行');
1065- finish = THIEF.func.method.manual[code].apply(this);
1066- } else {
1067- finish = false;
1063+
1064+ for(var name in THIEF.Data.Keymap){
1065+ if(THIEF.Data.Keymap[name].key !== 'undefined' && THIEF.Data.Keymap[name].key === code){
1066+ THIEF.html.addDebugMessage(this.get(THIEF.PROP.displayName) + ' の ' + name + ' コマンドを実行');
1067+ finish = THIEF.Data.Keymap[name].cmd.call(this);
1068+ break;
1069+ }
10681070 }
10691071
10701072 if (typeof finish === 'undefined') {
@@ -1080,25 +1082,6 @@
10801082 return finish;
10811083 };
10821084
1083-// 束縛しないように関数化している
1084-THIEF.func.method.manual[THIEF.KEY.h] = function() { return this.goLeft(); };
1085-THIEF.func.method.manual[THIEF.KEY.k] = function() { return this.goUp(); };
1086-THIEF.func.method.manual[THIEF.KEY.j] = function() { return this.goDown(); };
1087-THIEF.func.method.manual[THIEF.KEY.l] = function() { return this.goRight(); };
1088-THIEF.func.method.manual[THIEF.KEY.y] = function() { return this.goUpperLeft(); };
1089-THIEF.func.method.manual[THIEF.KEY.u] = function() { return this.goUpperRight(); };
1090-THIEF.func.method.manual[THIEF.KEY.b]= function() { return this.goLowerLeft(); };
1091-THIEF.func.method.manual[THIEF.KEY.n] = function() { return this.goLowerRight(); };
1092-THIEF.func.method.manual[THIEF.KEY.R] = function() { return this.refreshHTML(); };
1093-THIEF.func.method.manual[THIEF.KEY.Comma] = function() { return this.pickup(); };
1094-THIEF.func.method.manual[THIEF.KEY.d] = function() { return this.drop(); };
1095-// TTHIEF.func.method.manual[THIEF.KEY.i] = function() { return this.showInventory(); };
1096-THIEF.func.method.manual[THIEF.KEY.p] = function() { return this.history(); };
1097-THIEF.func.method.manual[THIEF.KEY.s] = function() { return this.rest(); };
1098-THIEF.func.method.manual[THIEF.KEY.E] = function() { return this.equip(); };
1099-THIEF.func.method.manual[THIEF.KEY.Period] = function() { return this.rest(); };
1100-THIEF.func.method.manual[THIEF.KEY.Sharp] = function() { return this.extendedCommand(); };
1101-
11021085 THIEF.func.command = {}; // マニュアルコマンドで実行して良いもの
11031086 THIEF.func.command.goUp = function() {
11041087 return this.move(0, -1);
@@ -1280,7 +1263,7 @@
12801263 if (list.length === 0) {
12811264 THIEF.Data.Text.$(THIEF.Data.Text.inventoryIsEmpty);
12821265 } else {
1283- this.action = THIEF.func.method.selecter(list, this.action, true, false);
1266+ this.action = THIEF.func.method.selecter(list, THIEF.func.method.inputWait, true, false);
12841267 }
12851268
12861269 THIEF.html.addDebugMessage('...' + this.get(THIEF.PROP.displayName) + 'のインベントリ表示を完了。');
@@ -1288,7 +1271,7 @@
12881271 return false;
12891272 };
12901273
1291-THIEF.func.command.history = function() {
1274+THIEF.func.command.printHistory = function() {
12921275
12931276 var key = THIEF.KEY;
12941277
@@ -1371,8 +1354,10 @@
13711354 THIEF.html.setInput('#');
13721355
13731356 var com = [];
1374- for (var name in THIEF.func.command) {
1375- com.push(name);
1357+ for (var name in THIEF.Data.Keymap) {
1358+ if( typeof THIEF.Data.Keymap[name].txt !== 'undefined' ) {
1359+ com.push(name);
1360+ }
13761361 }
13771362 com.sort();
13781363
@@ -1404,9 +1389,9 @@
14041389 THIEF.html.setInput(' ');
14051390 THIEF.html.clearInfomation();
14061391 this.action = THIEF.func.method.action;
1407- if (typeof THIEF.func.command[target] === 'function') {
1392+ if (typeof THIEF.Data.Keymap[target].cmd === 'function') {
14081393 THIEF.global.keycode = 0;
1409- finish = this[target]();
1394+ finish = THIEF.Data.Keymap[target].cmd.call(this);
14101395 } else {
14111396 THIEF.Data.Text.$(THIEF.Data.Text.commandNotFound, line);
14121397 }
@@ -1433,7 +1418,6 @@
14331418 return finish;
14341419 };
14351420
1436- //return this.action();
14371421 };
14381422
14391423 THIEF.func.command.equip = function () {
@@ -1691,10 +1675,9 @@
16911675 THIEF.html.addDebugMessage('...ステータス画面の更新完了。');
16921676 };
16931677
1678+
16941679 THIEF.util.getKeyCode = function(e) {
16951680
1696- var key = THIEF.KEY;
1697-
16981681 // Browser bug fix
16991682 if (!e) {
17001683 //noinspection AssignmentToFunctionParameterJS
@@ -1719,70 +1702,56 @@
17191702
17201703 // コンビネーションキー "だけ" 押されたイベントは無視
17211704 // ブラウザにも処理を回す
1722- if (code === key.Shift || code === key.Ctrl || code === key.Alt) {
1705+ if (code === THIEF.KEY.Shift || code === THIEF.KEY.Ctrl || code === THIEF.KEY.Alt) {
17231706 code = 0;
17241707 block = false;
17251708
1726- // 非 Shift押下時処理
17271709 } else {
1728- if (!e.shiftKey) {
1710+
1711+ if(e.shiftKey) {
1712+ //
1713+ } else {
17291714 switch (code) {
1715+ // ファンクションキーはブラウザに処理を回す
1716+ // 他の文字とコードはかぶっているが問題なしとする
1717+ case THIEF.KEY.F1:
1718+ case THIEF.KEY.F2:
1719+ case THIEF.KEY.F3:
1720+ case THIEF.KEY.F4:
1721+ case THIEF.KEY.F5:
1722+ case THIEF.KEY.F6:
1723+ case THIEF.KEY.F7:
1724+ case THIEF.KEY.F8:
1725+ case THIEF.KEY.F9:
1726+ case THIEF.KEY.F10:
1727+ case THIEF.KEY.F11:
1728+ case THIEF.KEY.F12:
1729+ block = false;
1730+ //code = 0;
1731+ break;
17301732
1731- // 方向キー用の調整
1732- case key.Up:
1733- code = key.k;
1733+ case 35: // Shift + 3 = #, or End
1734+ code = THIEF.KEY.End;
17341735 break;
1735- case key.Down:
1736- code = key.j;
1736+
1737+ default:
17371738 break;
1738- case key.Left:
1739- code = key.h;
1740- break;
1741- case key.Right:
1742- code = key.l;
1743- break;
1744- case key.Home:
1745- code = key.y;
1746- break;
1747- case key.End:
1748- code = key.b;
1749- break;
1750- case key.PageUp:
1751- code = key.u;
1752- break;
1753- case key.PageDown:
1754- code = key.n;
1755- break;
1739+ }
1740+ }
17561741
1742+ if(e.ctrlKey){
1743+ switch (code) {
17571744 // コピペ・ブックマーク用
1758- case key.a:
1759- case key.c:
1760- case key.d:
1761- case key.v:
1745+ case THIEF.KEY.a:
1746+ case THIEF.KEY.c:
1747+ case THIEF.KEY.d:
1748+ case THIEF.KEY.v:
17621749 if (e.ctrlKey) {
17631750 block = false;
17641751 code = 0;
17651752 }
17661753 break;
1767-
1768- // ファンクションキーはブラウザに処理を回す
1769- // 他の文字とコードはかぶっているが問題なしとする
1770- case key.F1:
1771- case key.F2:
1772- case key.F3:
1773- case key.F4:
1774- case key.F5:
1775- case key.F6:
1776- case key.F7:
1777- case key.F8:
1778- case key.F9:
1779- case key.F10:
1780- case key.F11:
1781- case key.F12:
1782- block = false;
1783- //code = 0;
1784- break;
1785-
1754+
17861755 default:
17871756 break;
17881757 }
@@ -2717,35 +2686,41 @@
27172686 help += '<table border=1>\n';
27182687 help += '<tr><th colspan=3>Command Help</th></tr>\n';
27192688 var com = [];
2720- for (var name in THIEF.func.method.manual) {
2721- com.push(name);
2689+ for (var name in THIEF.Data.Keymap) {
2690+ if(typeof THIEF.Data.Keymap[name].txt !== 'undefined'){
2691+ com.push(name);
2692+ }
27222693 }
27232694 com.sort(function(a, b) {
2724- var x = a;
2725- var y = b;
2695+ var x = THIEF.Data.Keymap[a].key;
2696+ var y = THIEF.Data.Keymap[b].key;
27262697
2727- if (a === '#'.charCodeAt(0).toString()) {
2698+ if (x === THIEF.KEY.Sharp) {
27282699 x -= 70000;
27292700 }
2730- if (b === '#'.charCodeAt(0).toString()) {
2701+ if (y === THIEF.KEY.Sharp) {
27312702 y -= 70000;
27322703 }
2733- if (THIEF.KEY.a <= a && a <= THIEF.KEY.z) {
2704+ if (THIEF.KEY.a <= x && x <= THIEF.KEY.z) {
27342705 x -= 50000;
27352706 }
2736- if (THIEF.KEY.a <= b && b <= THIEF.KEY.z) {
2707+ if (THIEF.KEY.a <= y && y <= THIEF.KEY.z) {
27372708 y -= 50000;
27382709 }
2739- if (THIEF.KEY.A <= a && a <= THIEF.KEY.Z) {
2710+ if (THIEF.KEY.A <= x && x <= THIEF.KEY.Z) {
27402711 x -= 20000;
27412712 }
2742- if (THIEF.KEY.A <= b && b <= THIEF.KEY.Z) {
2713+ if (THIEF.KEY.A <= y && y <= THIEF.KEY.Z) {
27432714 y -= 20000;
27442715 }
27452716 return x - y;
27462717 });
2718+
2719+
2720+ help += '<tr><td colspan=3>' + THIEF.Data.Keymap.$.ja + '</td></tr>\n';
2721+
27472722 for (var i = 0; i < com.length; i++) {
2748- help += '<tr><td>' + String.fromCharCode(com[i]) + '</td><td>' + THIEF.func.method.manual[com[i]].toString().slice(THIEF.func.method.manual[com[i]].toString().indexOf('this.') + 5, THIEF.func.method.manual[com[i]].toString().lastIndexOf('(')) + '</td></tr>\n';
2723+ help += '<tr><td>' + String.fromCharCode(THIEF.Data.Keymap[com[i]].key) + '</td><td>' + com[i] + '</td><td>' + THIEF.Data.Keymap[com[i]].txt.ja + '</td></tr>\n';
27492724 }
27502725 help += '</table>\n';
27512726 document.getElementById(THIEF.conf.id + 'Footer').innerHTML = help;
@@ -2902,12 +2877,14 @@
29022877 イベントやシナリオの管理用
29032878 Data.Text
29042879 ローカライズの管理用
2880+Data.Prop
2881+ 特殊変数の管理用
29052882
2906-$ から始まるオブジェクトは、テンプレートとして扱われます。
2883+Data.Obj 配下の $ から始まるオブジェクトは、テンプレートとして扱われます。
29072884 ※ スポーンの対象にならない・一覧に表示されない、など
29082885
29092886 Date.Obj 配下に格納されるオブジェクトは、
2910-自動的に THIEF.func.command 内のメソッドを継承し、その対象になります。
2887+自動的に THIEF.func.command, THIEF.func.method 内のメソッドを継承し、その対象になります。
29112888 その為、すべてのオブジェクトが eat や wear メソッドの対象になります。
29122889 ※ 各コマンド名に -able をつけたプロパティ (eatable, wearable) の
29132890 Boolean値 (true/false) に応じて動作します。
@@ -2919,21 +2896,23 @@
29192896 何もない場合は、Date.Obj.$を継承します。
29202897
29212898 プロパティは以下の順番で参照されます。
2922- ※ Object -> THIEF.func.command -> Date.Obj.$ -> Date.Obj.Human -> this
2899+ ※ Object -> THIEF.func.command -> THIEF.func.method -> Date.Obj.$ -> Date.Obj.Human -> this
29232900
29242901 現段階では、多段的な階層はサポートしていません。
29252902 今後もするつもりはありません。
29262903 ※ Date.Monster.Humanoid.Elf
29272904
2928-$ (テンプレート) 以外のオブジェクトも、実質的にはテンプレートとして
2929-扱われます。
2930-
2905+$ (テンプレート) 以外のオブジェクトも、実質的にはテンプレートとして扱われます。
29312906 オブジェクトの使用時にマスターオブジェクトが作成され、
29322907 以降はそれをクローニングしてスポーン処理などを行います。
29332908
29342909 そのため、起動後に Date 内のオブジェクトを修正した場合、
2935-その結果が新しいインスタンスには反映されない可能性があります。
2910+その結果が新しいインスタンスには反映されません。
29362911
2912+Data.Obj 配下のオブジェクトのプロパティ値が _ から始まる場合、
2913+数式として処理されます。
2914+ str : '_3d6'
2915+
29372916 */
29382917
29392918
@@ -3223,7 +3202,7 @@
32233202 inheritance : '$Weapon',
32243203 name : {
32253204 ja : 'テスト用上位ダガー',
3226- en : 'DebuggingHighDagger'
3205+ en : 'Debugging High Dagger'
32273206 },
32283207 damage : '3d4',
32293208 color : 'silver'
@@ -3247,7 +3226,7 @@
32473226 ac : 2,
32483227 name : {
32493228 ja : 'テスト用鎧',
3250- en : 'DebuggingArmor'
3229+ en : 'Debugging Armor'
32513230 }
32523231 };
32533232
@@ -3256,7 +3235,7 @@
32563235 ac : 4,
32573236 name : {
32583237 ja : 'テスト用固鎧',
3259- en : 'DebuggingHighArmor'
3238+ en : 'Debugging High Armor'
32603239 }
32613240 };
32623241
@@ -3355,6 +3334,133 @@
33553334 */
33563335
33573336
3337+THIEF.Data.Keymap = {
3338+ $ : { // help
3339+ ja : '' +
3340+ 'y&nbsp;k&nbsp;u' + '&nbsp;&nbsp;&nbsp;&nbsp;' + 'yuhjklbn: 指定方向に一歩歩く' + '<br>\n' +
3341+ '&nbsp;&#x20E5;|/&nbsp;' + '&nbsp;&nbsp;&nbsp;&nbsp;' + '←↑↓→: 同' + '<br>\n' +
3342+ 'h-.-k' + '&nbsp;&nbsp;&nbsp;&nbsp;' + 'Home,End,PageUp,PageDown: 斜め方向に一歩歩く' + '<br>\n' +
3343+ '&nbsp;/|&#x20E5;&nbsp;' + '&nbsp;&nbsp;&nbsp;&nbsp;' + '.: 何もしない' + '<br>\n' +
3344+ 'b&nbsp;j&nbsp;n' + '&nbsp;&nbsp;&nbsp;&nbsp;' + '' + '<br>\n'
3345+ },
3346+ moveUp1 : {
3347+ cmd : THIEF.func.command.goUp,
3348+ key : THIEF.KEY.k
3349+ },
3350+ moveUp2 : {
3351+ cmd : THIEF.func.command.goUp,
3352+ key : THIEF.KEY.Up
3353+ },
3354+ moveDown1 : {
3355+ cmd : THIEF.func.command.goDown,
3356+ key : THIEF.KEY.j
3357+ },
3358+ moveDown2 : {
3359+ cmd : THIEF.func.command.goDown,
3360+ key : THIEF.KEY.Down
3361+ },
3362+ moveLeft1 : {
3363+ cmd : THIEF.func.command.goLeft,
3364+ key : THIEF.KEY.h
3365+ },
3366+ moveLeft2 : {
3367+ cmd : THIEF.func.command.goLeft,
3368+ key : THIEF.KEY.Left
3369+ },
3370+ moveRight1 : {
3371+ cmd : THIEF.func.command.goRight,
3372+ key : THIEF.KEY.l
3373+ },
3374+ moveRight2 : {
3375+ cmd : THIEF.func.command.goRight,
3376+ key : THIEF.KEY.Right
3377+ },
3378+ moveUpperLeft1 : {
3379+ cmd : THIEF.func.command.goUpperLeft,
3380+ key : THIEF.KEY.y
3381+ },
3382+ moveUpperLeft2 : {
3383+ cmd : THIEF.func.command.goUpperLeft,
3384+ key : THIEF.KEY.Home
3385+ },
3386+ moveUpperRight1 : {
3387+ cmd : THIEF.func.command.goUpperRight,
3388+ key : THIEF.KEY.u
3389+ },
3390+ moveUpperRight2 : {
3391+ cmd : THIEF.func.command.goUpperRight,
3392+ key : THIEF.KEY.PageUp
3393+ },
3394+ moveLowerLeft1 : {
3395+ cmd : THIEF.func.command.goLowerLeft,
3396+ key : THIEF.KEY.b
3397+ },
3398+ moveLowerLeft2 : {
3399+ cmd : THIEF.func.command.goLowerLeft,
3400+ key : THIEF.KEY.End
3401+ },
3402+ moveLowerRight1 : {
3403+ cmd : THIEF.func.command.goLowerRight,
3404+ key : THIEF.KEY.n
3405+ },
3406+ moveLowerRight2 : {
3407+ cmd : THIEF.func.command.goLowerRight,
3408+ key : THIEF.KEY.PageDown
3409+ },
3410+ rest : {
3411+ cmd : THIEF.func.command.rest,
3412+ key : THIEF.KEY.Period
3413+ },
3414+ inventory : {
3415+ cmd : THIEF.func.command.showInventory,
3416+ key : THIEF.KEY.i,
3417+ txt : {
3418+ ja : '持ち物を表示',
3419+ en : 'show your inventory.'
3420+ }
3421+ },
3422+ Equip : {
3423+ cmd : THIEF.func.command.equip,
3424+ key : THIEF.KEY.E,
3425+ txt : {
3426+ ja : 'アイテムを装備',
3427+ en : 'equip your item.'
3428+ }
3429+ },
3430+ printHistory : {
3431+ cmd : THIEF.func.command.printHistory,
3432+ key : THIEF.KEY.p,
3433+ txt : {
3434+ ja : 'メッセージの履歴を表示',
3435+ en : 'show messages history'
3436+ }
3437+ },
3438+ RrefreshScreen : {
3439+ cmd : THIEF.func.command.refreshHTML,
3440+ key : THIEF.KEY.R,
3441+ txt : {
3442+ ja : '画面を再描画する',
3443+ en : 'refresh screen'
3444+ }
3445+ },
3446+ pickup : {
3447+ cmd : THIEF.func.command.pickup,
3448+ key : THIEF.KEY.Comma,
3449+ txt : {
3450+ ja : '足元のアイテムを拾う',
3451+ en : 'pickup items from your step.'
3452+ }
3453+ },
3454+ executeCommand : {
3455+ cmd : THIEF.func.command.extendedCommand,
3456+ key : THIEF.KEY.Sharp,
3457+ txt : {
3458+ ja : '指定したコマンドを実行します',
3459+ en : 'execute command'
3460+ }
3461+ }
3462+};
3463+
33583464 THIEF.Data.Text = {
33593465 $ : function(){
33603466 var text;
Show on old repository browser