├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── UPDATE_LOG.txt ├── build └── js │ └── lib │ └── .gitkeep ├── gulpfile.js ├── local └── .gitkeep ├── package.json └── src ├── js ├── .option.spectrum.json ├── contextMenu │ ├── .loading.js │ ├── characterData.js │ ├── chit.js │ ├── floorTile.js │ ├── initiative.js │ ├── magicRange.js │ ├── map.js │ ├── mapMarker.js │ ├── mapMask.js │ └── memo.js ├── index.js ├── room_menu.js ├── screenshot.js └── window │ ├── .loading.js │ ├── addCharacter.js │ ├── alerm.js │ ├── characterCutin.js │ ├── chat.js │ ├── chatFont.js │ ├── chatPalette.js │ ├── chit.js │ ├── diceBotTable.js │ ├── floorTile.js │ ├── graveyard.js │ ├── help.js │ ├── imageDelete.js │ ├── initiative.js │ ├── loadSaveData.js │ ├── loginCheck.js │ ├── magicRangeDD4th.js │ ├── magicRangeLH.js │ ├── magicRangeMG.js │ ├── magicRangeMarker.js │ ├── magicTimer.js │ ├── mapChange.js │ ├── mapMarker.js │ ├── mapMask.js │ ├── memo.js │ ├── playRoomInfo.js │ ├── roomDelete.js │ ├── saveChatLog.js │ ├── upload.js │ ├── uploadFile.js │ ├── version.js │ └── vote.js ├── pug ├── _lobby.pug ├── _playRoom.pug ├── _playRoom_menu.pug ├── index.pug └── window │ ├── _addCharacter.pug │ ├── _alerm.pug │ ├── _characterCutin.pug │ ├── _chat.pug │ ├── _chatFont.pug │ ├── _chatPalette.pug │ ├── _chit.pug │ ├── _createPlayRoom.pug │ ├── _diceBotTable.pug │ ├── _diceResult.pug │ ├── _floorTile.pug │ ├── _graveyard.pug │ ├── _help.pug │ ├── _imageDelete.pug │ ├── _initiative.pug │ ├── _loadSaveData.pug │ ├── _loginCheck.pug │ ├── _loginNumber.pug │ ├── _loginUser.pug │ ├── _magicRangeDD4th.pug │ ├── _magicRangeLH.pug │ ├── _magicRangeMG.pug │ ├── _magicRangeMarker.pug │ ├── _magicTimer.pug │ ├── _mapChange.pug │ ├── _mapMarker.pug │ ├── _mapMask.pug │ ├── _memo.pug │ ├── _playRoomInfo.pug │ ├── _roomDelete.pug │ ├── _saveChatLog.pug │ ├── _upload.pug │ ├── _uploadFile.pug │ ├── _version.pug │ └── _vote.pug ├── scss └── style.scss └── vender ├── img ├── centerMarker.png ├── cursor │ ├── cur_horizontal.png │ ├── cur_left_oblique.png │ ├── cur_right_oblique.png │ ├── cur_vertical.png │ └── yajirusi_a13.png ├── draw.svg ├── grid.svg ├── icons │ ├── arrow_redo.png │ ├── arrow_undo.png │ ├── bell.png │ ├── book_open.png │ ├── camera.png │ ├── cancel.png │ ├── comment_delete.png │ ├── control_pause.png │ ├── control_pause_blue.png │ ├── control_play.png │ ├── control_play_blue.png │ ├── door_out.png │ ├── emoticon_grin.png │ ├── emoticon_smile.png │ ├── emoticon_surprised.png │ ├── eraser.gif │ ├── exclamation.png │ ├── film.png │ ├── font.png │ ├── good.jpg │ ├── icon_help.png │ ├── key.png │ ├── line.gif │ ├── maximize_over.png │ ├── maximize_up.png │ ├── page_white_delete.png │ ├── page_white_gear.png │ ├── page_white_get.png │ ├── pencil.gif │ ├── restore_over.png │ ├── restore_up.png │ ├── sound.png │ ├── sound_mute.png │ ├── tick.png │ ├── user.png │ ├── user_comment.png │ ├── user_delete.png │ ├── user_edit.png │ ├── zoom_in.png │ └── zoom_out.png ├── mapMarker.png ├── range.svg ├── rangeLH.svg ├── rangeMG.svg ├── statusMarker │ ├── mark0.png │ ├── mark1.png │ ├── mark10.png │ ├── mark11.png │ ├── mark2.png │ ├── mark3.png │ ├── mark4.png │ ├── mark5.png │ ├── mark6.png │ ├── mark7.png │ ├── mark8.png │ └── mark9.png └── unknownTarget.png ├── js ├── colResizable-1.6.min.js ├── config.json ├── font │ ├── context-menu-icons.eot │ ├── context-menu-icons.ttf │ ├── context-menu-icons.woff │ └── context-menu-icons.woff2 ├── jquery.contextMenu.css ├── jquery.contextMenu.js ├── jquery.min.js ├── jquery.tablesorter.min.js ├── lib │ ├── .gitkeep │ ├── compare-versions.js │ ├── compare-versions.min.js │ ├── dateformat.js │ ├── dateformat.min.js │ └── htmlspecialchars.js ├── loaders.css ├── loaders.css.js ├── spectrum.css ├── spectrum.js ├── svg_param.js └── util.js └── sound ├── beep.mp3 ├── diceRoll.mp3 ├── page.mp3 └── select.mp3 /.gitignore: -------------------------------------------------------------------------------- 1 | .git/ 2 | /*.zip 3 | !.gitkeep 4 | /node_modules/ 5 | !/build/ 6 | /build/* 7 | !/build/js/ 8 | /build/js/* 9 | !/build/js/lib 10 | /build/js/lib/* 11 | /doc/ 12 | !/local/ 13 | /local/* 14 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "src/ddf"] 2 | path = src/ddf 3 | url = https://github.com/op3kitt/ddf 4 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2017 Kitt 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # このプログラムについて 2 | 3 | オンラインセッションツールである「どどんとふ」に接続する目的で作成したクライアントプログラムです。 4 | 5 | * このプログラムは「どどんとふ」とは別個に作成されたものであり、「どどんとふ」の作者および著作権者とは一切の関係はありません。 6 | * このプログラムは開発中のものであり、「どどんとふ」が持つ全ての機能を備えたものではありません。 7 | * 個々の機能の同一性や、将来的に全ての機能が実装されることは保証しておりません。 8 | 9 | このプログラムを使用する場合は、以上のことを自動的に了承されているものとして扱われます。 10 | 11 | このプログラムの最新バージョンについては以下のリポジトリから取得可能です。 12 | 13 | https://github.com/op3kitt/htmlddf.git 14 | 15 | 不具合・改善の要望などに関しては上記リポジトリまたはtwitterアカウントへDMまたはリプライにてご連絡ください。 16 | 17 | [@ttikitt](https://twitter.com/ttikitt) 18 | 19 | セキュリティ上重大な内容に関しては上記の公開場所ではなく、以下のメールアドレスまでご連絡ください。 20 | 21 | [kitt <yosshi1123@gmai.com>](mailto:yosshi1123@gmai.com) 22 | 23 | 「どどんとふ」についての情報は以下を参照してください。 24 | 25 | [どどんとふ@えくすとり〜む](http://www.dodontof.com/) 26 | 27 | # 実行環境 28 | 29 | このプログラムの使用にはインターネットに接続可能なPCおよびウェブブラウザ―が必要です。 30 | また、サーバーに設置された「どどんとふ」が別途必要になります。 31 | 32 | ※開発中のため、Chromeを除くウェブブラウザーは動作の対象外です。 33 | 34 | # 設置方法 35 | 36 | ## あなたの管理しているサーバーに接続する場合 37 | 38 | buildフォルダ以下をDodontoFServer.rbと同階層にアップロードして下さい。 39 | 40 | ## あなたの管理しているサーバーに接続するが、別階層に設置する場合 41 | 42 | 1. サーバーの任意のディレクトリにbuildフォルダ以下をアップロードして下さい。 43 | 2. [build/js/config.json](build/js/config.json)を編集して、DodontoFServer.rbのあるディレクトリを指定してください。 44 | 45 | ## あなたの管理している他のサーバーに接続する場合 46 | 47 | 1. サーバーの任意のディレクトリにbuildフォルダ以下をアップロードして下さい。 48 | 2. [build/js/config.json](build/js/config.json)を編集して、どどんとふの設置されているディレクトリを指定してください。 49 | 3. 設置しているサーバーが以下のヘッダーを返すように設定してください。 50 | Access-Control-Allow-Origin * 51 | Access-Control-Allow-Headers Origin, X-Requested-With, Content-Type, Accept 52 | 53 | ## あなたの管理していないサーバーに接続する場合 54 | 55 | このプログラムは開発中のものであり、接続するサーバーの管理者の許可を得た上でのみ接続してください。 56 | 前記のヘッダーが返されていない場合、そのサーバーは他のクライアントの接続を許可していません。 57 | 58 | # 設定について 59 | 60 | カラーパレットをオリジナルのどどんとふと同一にする場合、以下のファイルを編集してください。 61 | 62 | [build/js/config.json](build/js/config.json) 63 | 64 | # 免責 65 | 66 | 当プログラムは現状のままで提供されるフリーソフトウェアであり、明示的または暗黙的であるかを問わず、動作およびその他の一切を保証するものではありません。 67 | 作者または著作権者は、このプログラムによって、またはこのプログラムを使用することによって発生した一切の請求、損害、その他の義務について何らの責任も負わないものとします。 68 | 69 | # 開発者向け情報 70 | 71 | ## ビルド方法について 72 | 73 | ### コンパイルを行う環境の準備 74 | 75 | リポジトリまたは配布サイトからソースコードを取得します。 76 | 77 | ```Shell 78 | git clone https://github.com/op3kitt/htmlddf.git 79 | ``` 80 | 81 | Node.jsの実行環境をインストールします。 82 | 83 | 通信用ライブラリも同時にビルドする場合、 84 | node\_modules/ddf に src/ddf へのシンボリックリンクを作成してください。 85 | 86 | ```Shell 87 | ln -s src/ddf node_modules/ddf 88 | ``` 89 | 90 | ※Windows環境では管理者権限にて以下のコマンドを実行してください。 91 | 92 | ```Batchfile 93 | MKLINK /D node_modules\ddf ..\src\ddf 94 | ``` 95 | 96 | 依存するライブラリを以下のコマンドでインストールします。 97 | 98 | ```Shell 99 | npm install 100 | ``` 101 | 102 | 以下のライブラリをグローバルにインストールしてください。 103 | 104 | ```Shell 105 | npm install -g browserify 106 | npm install -g gulp 107 | ``` 108 | 109 | ドキュメントの更新を行う場合は以下をインストールする必要があります。 110 | 111 | * JSDoc 112 | 113 | ### コンパイルを行うコマンド 114 | 115 | 上記の手順でコンパイルを行う環境が整います。 116 | 117 | デバッグ用のファイルを作成する場合は以下を実行します。 118 | 119 | ```Shell 120 | gulp watch 121 | ``` 122 | 123 | リリース用のファイルを作成する場合は以下を実行します。 124 | 125 | ```Shell 126 | gulp clean 127 | gulp release 128 | ``` 129 | 130 | # ライセンスについて 131 | 132 | このプログラムはMITライセンスの元での変更・再配布を許可します。 133 | 134 | このプログラムに使用しているライブラリ・画像は別のライセンスである場合があります。 135 | このプログラムに使用されているものの一覧は以下となります。 136 | 137 | * 修正BSDライセンス 138 | * [どどんとふ](http://www.dodontof.com) 139 | * MITライセンス 140 | * browserify 141 | * compare-versions 142 | * Date Format 143 | * del 144 | * gulp 145 | * gulp-cssnano 146 | * gulp-pug 147 | * gulp-rename 148 | * gulp-sass 149 | * jQuery 150 | * jQuery UI 151 | * jQuery contextMenu 152 | * Loaders.css 153 | * msgpack-lite 154 | * store 155 | * spectrum 156 | * tablesorter 157 | * uglifyify 158 | * vinyl-buffer 159 | * watchify 160 | * Apache License 161 | * JSDoc 162 | * minami 163 | * ISCライセンス 164 | * gulp-sourcemaps 165 | * zlibライセンス 166 | * gulp-watchify 167 | * その他のライセンス 168 | * [Mark James](http://www.famfamfam.com/lab/icons/silk/) 169 | * アイコン用画像集 170 | * [Raindropmemory](http://raindropmemory.deviantart.com/) 171 | * アイコン用画像の一部(参照:[http://findicons.com/icon/41229/note](http://findicons.com/icon/41229/note)) 172 | -------------------------------------------------------------------------------- /UPDATE_LOG.txt: -------------------------------------------------------------------------------- 1 | バージョンアップ履歴 2 | v0.1.4 (2018/02/01) 3 | 簡易ファイルアップロードに対応。 4 | 点呼/投票に対応。 5 | 魔法タイマーに対応。 6 | 目覚ましアラーム送信に対応。 7 | ダイスボットテーブルの追加に対応。 8 | イニチアチブ表にステータス更新が適用されていない問題を修正。 9 | 10 | v0.1.3 (2018/01/12) 11 | typoによるバグの修正。 12 | サーバー側の設定の一部を反映するように変更。 13 | フロアタイル編集に対応。 14 | チットに対応。 15 |  マップマーカーに対応。 16 |  魔法範囲(D&D3版)に対応。 17 | 18 | v0.1.2 (2017/12/26) 19 | refresh時にエラーが起きるとデータの更新が停止する問題を修正。 20 | チャット・チャットパレットでEnterで発言可能に。 21 | ダイスロールコマンドが全角でも可能に。 22 | イニシアティブ表の表示を調整。 23 | イニシアティブ表の列幅を手動で変更可能に。(ログアウト時に保存はされない。) 24 | メタリックガーディアン用の攻撃範囲が使用可能に。 25 | セーブ・ロード関係のコマンドが使用可能に。 26 | 27 | v0.1.1 (2017/12/19) 28 | パスワード付きのプレイルームの削除が行えなかった実装漏れを修正。 29 | 30 | v0.1.0 (2017/12/18) 31 | あらかた使用が可能になったと思うのでとりあえずリリース。 -------------------------------------------------------------------------------- /build/js/lib/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/build/js/lib/.gitkeep -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const del = require('del'); 2 | const gulp = require('gulp'); 3 | const sass = require('gulp-sass'); 4 | const pug = require('gulp-pug'); 5 | const plumber = require('gulp-plumber'); 6 | const notify = require('gulp-notify'); 7 | const watchify = require('gulp-watchify'); 8 | const cssnano = require('gulp-cssnano'); 9 | const rename = require('gulp-rename'); 10 | const buffer = require('vinyl-buffer'); 11 | const sourcemaps = require('gulp-sourcemaps'); 12 | const childProcess = require('child_process'); 13 | const fs = require('fs'); 14 | const log = require('fancy-log'); 15 | const zip = require('gulp-zip'); 16 | 17 | gulp.task('clean', function(){ 18 | del(['build/**/*', '!build/js', '!build/js/lib']); 19 | }); 20 | 21 | gulp.task('release', [ 22 | 'build:pug', 23 | 'build:scss', 24 | 'build:asset', 25 | 'build:ddf', 26 | 'release:doc', 27 | 'browserify']); 28 | 29 | gulp.task('release:zip', [], function(){ 30 | const version = require("./package.json").version; 31 | gulp.src('build/**') 32 | .pipe(zip(`htmlDodontoF_${version}.zip`)) 33 | .pipe(gulp.dest('.')); 34 | }); 35 | 36 | gulp.task('default', ['build']); 37 | gulp.task('build', [ 38 | 'build:pug', 39 | 'build:scss', 40 | 'build:asset' 41 | ]); 42 | 43 | gulp.task('build:pug', function(){ 44 | gulp.src('src/pug/**/[!_]*.pug') 45 | .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')})) 46 | .pipe(pug({pretty: true})) 47 | .pipe(gulp.dest('build/')); 48 | return; 49 | }); 50 | 51 | gulp.task('build:scss', function(){ 52 | gulp.src('src/scss/**/*.scss') 53 | .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')})) 54 | .pipe(sass()) 55 | .pipe(sourcemaps.init()) 56 | .pipe(cssnano({zindex: false})) 57 | .pipe(sourcemaps.write('.')) 58 | .pipe(gulp.dest('build/css/')); 59 | }); 60 | 61 | gulp.task('build:asset:local', function(){ 62 | gulp.src(['src/vender/**', 'local/**']) 63 | .pipe(gulp.dest('build')); 64 | }); 65 | gulp.task('build:asset', function(){ 66 | gulp.src(['local/**', 'src/vender/**']) 67 | .pipe(gulp.dest('build')); 68 | }); 69 | gulp.task('release:doc', function(){ 70 | gulp.src(['LICENSE', 'README.md', 'UPDATE_LOG.txt']) 71 | .pipe(gulp.dest('build')); 72 | }); 73 | 74 | watching = false; 75 | gulp.task('enable-watch-mode', function(){watching = true;}); 76 | debugging = false; 77 | gulp.task('enable-debug-mode', function(){debugging = true;}); 78 | gulp.task('browserify', watchify(function(watchify){ 79 | gulp.src('src/js/index.js') 80 | .pipe(sourcemaps.init()) 81 | .pipe(plumber({errorHandler: notify.onError('<%= error.message %>')})) 82 | .pipe(watchify(debugging?{ 83 | watch: watching 84 | }:{ 85 | watch: watching, 86 | transform: ['uglifyify'] 87 | })) 88 | .pipe(buffer()) 89 | .pipe(sourcemaps.write('.maps')) 90 | .pipe(gulp.dest('build/js/')); 91 | }) 92 | ); 93 | 94 | const BUILD_DDF = 'build:ddf'; 95 | gulp.task(BUILD_DDF, [], () => { 96 | const OUT_FILE = 'build/js/lib/ddf.js'; 97 | 98 | try { 99 | childProcess.execSync(`browserify -r ddf -g uglifyify --outfile ${OUT_FILE}`); 100 | } catch (e) { 101 | log.error(`${BUILD_DDF}: execSync: ${e.message}`); 102 | return; 103 | } 104 | 105 | log.info(`${BUILD_DDF}: Browserified ddf`); 106 | 107 | var fd; 108 | try { 109 | // 出力されたファイルを追記モードで開く 110 | fd = fs.openSync(OUT_FILE, 'a'); 111 | } catch (e) { 112 | log.error(`${BUILD_DDF}: openSync: ${e.message}`); 113 | return; 114 | } 115 | 116 | var success = true; 117 | try { 118 | // グローバル変数ddfの定義を追記する 119 | fs.writeSync(fd, '\nvar ddf = require("ddf");\n'); 120 | } catch (e) { 121 | log.error(`${BUILD_DDF}: writeSync: ${e.message}`); 122 | success = false; 123 | } 124 | 125 | try { 126 | fs.closeSync(fd); 127 | } catch (e) { 128 | log.error(`${BUILD_DDF}: closeSync: ${e.message}`); 129 | } 130 | 131 | if (success) { 132 | log.info(`${BUILD_DDF}: Output ${OUT_FILE}`); 133 | } 134 | }); 135 | 136 | gulp.task('watchify', ['enable-watch-mode', 'enable-debug-mode', 'browserify']); 137 | gulp.task('watch', ['build:pug', 'build:scss', 'build:asset:local', 'build:ddf', 'watchify'], function(){ 138 | gulp.watch('src/pug/**/*.pug', ['build:pug']); 139 | gulp.watch('src/scss/**/*.scss', ['build:scss']); 140 | gulp.watch('src/ddf/*.js', ['build:ddf']); 141 | gulp.watch(['local/**', 'src/vender/**'], ['build:asset:local']); 142 | }); 143 | 144 | -------------------------------------------------------------------------------- /local/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/local/.gitkeep -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DodontoF_html5cli", 3 | "version": "0.1.4", 4 | "description": "DodontoF.rb client build package", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/op3kitt/htmlddf.git" 8 | }, 9 | "main": "gulpfile.js", 10 | "dependencies": { 11 | "ddf": "^0.5.7", 12 | "msgpack-lite": "^0.1.26", 13 | "store": "^2.0.12" 14 | }, 15 | "devDependencies": { 16 | "browserify": "^14.4.0", 17 | "del": "^3.0.0", 18 | "fancy-log": "^1.3.2", 19 | "gulp": "^3.9.1", 20 | "gulp-cssnano": "^2.1.2", 21 | "gulp-notify": "^3.2.0", 22 | "gulp-plumber": "^1.1.0", 23 | "gulp-pug": "^3.3.0", 24 | "gulp-rename": "^1.2.2", 25 | "gulp-sass": "^3.1.0", 26 | "gulp-sourcemaps": "^2.6.1", 27 | "gulp-watchify": "^0.7.0", 28 | "gulp-zip": "^4.1.0", 29 | "uglifyify": "^4.0.5", 30 | "vinyl-buffer": "^1.0.0", 31 | "watchify": "^3.9.0" 32 | }, 33 | "scripts": { 34 | "test": "echo \"Error: no test specified\" && exit 1" 35 | }, 36 | "author": "kitt @ttikitt ", 37 | "license": "MIT", 38 | "directories": { 39 | "doc": "doc" 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/js/.option.spectrum.json: -------------------------------------------------------------------------------- 1 | { 2 | clickoutFiresChange: true, 3 | showInput: true, 4 | preferredFormat: "hex", 5 | showPalette: true, 6 | showSelectionPalette: false, 7 | hideAfterPaletteSelect:true, 8 | chooseText: "選択", 9 | cancelText: "キャンセル", 10 | containerClassName: config.originalColorPalette?"originalColorSet":"", 11 | palette: config.originalColorPalette? 12 | [ 13 | ["#000000","#000000","#003300","#006600","#009900","#00CC00","#00FF00","#330000","#333300","#336600","#339900","#33CC00","#33FF00","#660000","#663300","#666600","#669900","#66CC00","#66FF00"], 14 | ["#333333","#000033","#003333","#006633","#009933","#00CC33","#00FF33","#330033","#333333","#336633","#339933","#33CC33","#33FF33","#660033","#663333","#666633","#669933","#66CC33","#66FF33"], 15 | ["#666666","#000066","#003366","#006666","#009966","#00CC66","#00FF66","#330066","#333366","#336666","#339966","#33CC66","#33FF66","#660066","#663366","#666666","#669966","#66CC66","#66FF66"], 16 | ["#999999","#000099","#003399","#006699","#009999","#00CC99","#00FF99","#330099","#333399","#336699","#339999","#33CC99","#33FF99","#660099","#663399","#666699","#669999","#66CC99","#66FF99"], 17 | ["#CCCCCC","#0000CC","#0033CC","#0066CC","#0099CC","#00CCCC","#00FFCC","#3300CC","#3333CC","#3366CC","#3399CC","#33CCCC","#33FFCC","#6600CC","#6633CC","#6666CC","#6699CC","#66CCCC","#66FFCC"], 18 | ["#FFFFFF","#0000FF","#0033FF","#0066FF","#0099FF","#00CCFF","#00FFFF","#3300FF","#3333FF","#3366FF","#3399FF","#33CCFF","#33FFFF","#6600FF","#6633FF","#6666FF","#6699FF","#66CCFF","#66FFFF"], 19 | ["#FF0000","#990000","#993300","#996600","#999900","#99CC00","#99FF00","#CC0000","#CC3300","#CC6600","#CC9900","#CCCC00","#CCFF00","#FF0000","#FF3300","#FF6600","#FF9900","#FFCC00","#FFFF00"], 20 | ["#0000FF","#990033","#993333","#996633","#999933","#99CC33","#99FF33","#CC0033","#CC3333","#CC6633","#CC9933","#CCCC33","#CCFF33","#FF0033","#FF3333","#FF6633","#FF9933","#FFCC33","#FFFF33"], 21 | ["#00FF00","#990066","#993366","#996666","#999966","#99CC66","#99FF66","#CC0066","#CC3366","#CC6666","#CC9966","#CCCC66","#CCFF66","#FF0066","#FF3366","#FF6666","#FF9966","#FFCC66","#FFFF66"], 22 | ["#FF00FF","#990099","#993399","#996699","#999999","#99CC99","#99FF99","#CC0099","#CC3399","#CC6699","#CC9999","#CCCC99","#CCFF99","#FF0099","#FF3399","#FF6699","#FF9999","#FFCC99","#FFFF99"], 23 | ["#00FFFF","#9900CC","#9933CC","#9966CC","#9999CC","#99CCCC","#99FFCC","#CC00CC","#CC33CC","#CC66CC","#CC99CC","#CCCCCC","#CCFFCC","#FF00CC","#FF33CC","#FF66CC","#FF99CC","#FFCCCC","#FFFFCC"], 24 | ["#FFFF00","#9900FF","#9933FF","#9966FF","#9999FF","#99CCFF","#99FFFF","#CC00FF","#CC33FF","#CC66FF","#CC99FF","#CCCCFF","#CCFFFF","#FF00FF","#FF33FF","#FF66FF","#FF99FF","#FFCCFF","#FFFFFF"] 25 | ] 26 | : [ 27 | ["#FFFFFF","#FF2800","#FF2879","#FF9900","#FAF500","#CBF266","#35A16B","#0041FF","#9A28C9","#9A0079","#663300"], 28 | ["#CCCCCC","#991800","#991848","#995B00","#969300","#79913D","#1F6040","#002799","#5C1878","#5C0048","#3D1E00"], 29 | ["#999999","#4C0C00","#4C0C24","#4C2D00","#4B4900","#3C481E","#0F3020","#00134C","#2E0C3C","#2E0024","#1E0F00"], 30 | ["#666666","#FF6050","#FF99A0","#FFD1D1","#FFFF99","#DFFF99","#87E7B0","#66CCFF","#C8B9FA","#E5B2DE","#EDC58F"], 31 | ["#333333","#993930","#995B60","#997D7D","#99995B","#85995B","#518A69","#3D7A99","#786F96","#896A85","#8E7655"], 32 | ["#000000","#4C1C18","#4C2D30","#4C3E3E","#4C4C2D","#424C2D","#284534","#1E3D4C","#3C374B","#443542","#473B2A"] 33 | ] 34 | } -------------------------------------------------------------------------------- /src/js/contextMenu/.loading.js: -------------------------------------------------------------------------------- 1 | $(() => { 2 | require("./map.js"); 3 | require("./chit.js"); 4 | require("./characterData.js"); 5 | require("./mapMask.js"); 6 | require("./mapMarker.js"); 7 | require("./memo.js"); 8 | require("./floorTile.js"); 9 | require("./magicRange.js"); 10 | require("./initiative.js"); 11 | }); -------------------------------------------------------------------------------- /src/js/contextMenu/characterData.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '#mapSurface .characterFrame', 4 | items: { 5 | edit: {name: "キャラクターの変更", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.cmd.addCharacter_show(opt.$trigger.attr("id"), true); 8 | }, 9 | }, 10 | delete: {name: "キャラクターの削除", 11 | callback: function(itemKey, opt, rootMenu, originalEvent) { 12 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 13 | character = ddf.characters[opt.$trigger.attr("id")]; 14 | if(character){ 15 | ddf.cmd.safeDragDestroy(); 16 | character.obj && character.obj.remove(); 17 | character.row && character.row.remove(); 18 | delete ddf.characters[opt.$trigger.attr("id")]; 19 | if(ddf.roomState.ini_characters[opt.$trigger.attr("id")]){ 20 | delete ddf.roomState.ini_characters[opt.$trigger.attr("id")]; 21 | } 22 | $(".draggableObj").draggable(ddf.dragOption); 23 | } 24 | }, 25 | }, 26 | copy: {name: "キャラクターの複製", 27 | callback: function(itemKey, opt, rootMenu, originalEvent) { 28 | character = ddf.characters[opt.$trigger.attr("id")]; 29 | basename = character.data.name.replace(/_\d+$/, ""); 30 | index = 0; 31 | reg = new RegExp(basename+"_(\\d+)"); 32 | for(item in ddf.characters){ 33 | if(v = reg.exec(ddf.characters[item].data.name)){ 34 | index = Math.max(index, parseInt(v[1])) 35 | } 36 | } 37 | data = $.extend(true, {}, character.data); 38 | data.name = basename + "_" + (index + 1); 39 | data.dogTag = index + 1; 40 | data.imgId = 0; 41 | ddf.addCharacter(data).then((r) => { 42 | }); 43 | }, 44 | }, 45 | url: {name: "データ参照先URLを開く", 46 | visible: function(key, opt){ 47 | return opt.$trigger && ddf.characters[opt.$trigger.attr("id")] && ddf.characters[opt.$trigger.attr("id")].data.url != ""; 48 | }, 49 | callback: function(itemKey, opt, rootMenu, originalEvent) { 50 | character = ddf.characters[opt.$trigger.attr("id")]; 51 | window.open(character.data.url); 52 | }, 53 | }, 54 | } 55 | }); -------------------------------------------------------------------------------- /src/js/contextMenu/chit.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '.chitFrame.draggableObj', 4 | items: { 5 | delete: {name: "チットの削除", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 8 | character = ddf.characters[opt.$trigger.attr("id")]; 9 | if(character){ 10 | ddf.cmd.safeDragDestroy(); 11 | character.obj && character.obj.remove(); 12 | delete ddf.characters[opt.$trigger.attr("id")]; 13 | $(".draggableObj").draggable(ddf.dragOption); 14 | } 15 | }, 16 | }, 17 | copy: {name: "チットの複製", 18 | callback: function(itemKey, opt, rootMenu, originalEvent) { 19 | character = ddf.characters[opt.$trigger.attr("id")]; 20 | data = $.extend(true, {}, character.data); 21 | data.imgId = 0; 22 | ddf.addCharacter(data).then((r) => { 23 | }); 24 | }, 25 | } 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /src/js/contextMenu/floorTile.js: -------------------------------------------------------------------------------- 1 | function safeDragDestroy(){ 2 | try{ 3 | $(".floorTileFrame.draggableObj").draggable("destroy"); 4 | }catch(e){} 5 | } 6 | 7 | $.contextMenu({ 8 | zIndex: 150, 9 | selector: '.floorTileEditing .floorTileFrame', 10 | items: { 11 | edit: {name: "タイルの固定/固定解除", 12 | callback: function(itemKey, opt, rootMenu, originalEvent) { 13 | safeDragDestroy(); 14 | character = ddf.characters[opt.$trigger.attr("id")]; 15 | character.data.draggable = !character.data.draggable; 16 | ddf.changeCharacter(character.data); 17 | character.obj.toggleClass("draggableObj"); 18 | $(".floorTileFrame.draggableObj").draggable(ddf.dragOption); 19 | }, 20 | }, 21 | sep1: "---------", 22 | rotationR: {name: "右回転", 23 | callback: function(itemKey, opt, rootMenu, originalEvent) { 24 | character = ddf.characters[opt.$trigger.attr("id")]; 25 | character.data.rotation = character.data.rotation + 90 % 360; 26 | ddf.changeCharacter(character.data).then((r) => { 27 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 28 | }); 29 | }, 30 | }, 31 | rotationF: {name: "180度回転", 32 | callback: function(itemKey, opt, rootMenu, originalEvent) { 33 | character = ddf.characters[opt.$trigger.attr("id")]; 34 | character.data.rotation = character.data.rotation + 180 % 360; 35 | ddf.changeCharacter(character.data).then((r) => { 36 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 37 | }); 38 | }, 39 | }, 40 | rotationL: {name: "左回転", 41 | callback: function(itemKey, opt, rootMenu, originalEvent) { 42 | character = ddf.characters[opt.$trigger.attr("id")]; 43 | character.data.rotation = character.data.rotation + 270 % 360; 44 | ddf.changeCharacter(character.data).then((r) => { 45 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 46 | }); 47 | }, 48 | }, 49 | sep2: "---------", 50 | delete: {name: "フロアタイルの削除", 51 | callback: function(itemKey, opt, rootMenu, originalEvent) { 52 | ddf.removeCharacter(opt.$trigger.attr("id"), false); 53 | character = ddf.characters[opt.$trigger.attr("id")]; 54 | if(character){ 55 | safeDragDestroy(); 56 | character.obj && character.obj.remove(); 57 | delete ddf.characters[opt.$trigger.attr("id")]; 58 | $(".floorTileFrame.draggableObj").draggable(ddf.dragOption); 59 | } 60 | }, 61 | } 62 | } 63 | }); 64 | -------------------------------------------------------------------------------- /src/js/contextMenu/initiative.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 155, 3 | selector: '#initiative tbody tr', 4 | items: { 5 | delete: {name: "対象の削除", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 8 | character = ddf.characters[opt.$trigger.attr("id")]; 9 | if(character){ 10 | ddf.cmd.safeDragDestroy(); 11 | character.obj && character.obj.remove(); 12 | character.row && character.row.remove(); 13 | delete ddf.characters[opt.$trigger.attr("id")]; 14 | delete ddf.roomState.ini_characters[opt.$trigger.attr("id")]; 15 | $(".draggableObj").draggable(ddf.dragOption); 16 | } 17 | }, 18 | }, 19 | edit: {name: "対象の変更", 20 | callback: function(itemKey, opt, rootMenu, originalEvent) { 21 | character = ddf.characters[opt.$trigger.attr("id")]; 22 | if(character){ 23 | switch(character.data.type){ 24 | case "characterData": 25 | ddf.cmd.addCharacter_show(character.data.imgId, true); 26 | break; 27 | case "magicRangeMarker": 28 | ddf.cmd.magicRangeMarker_show(character.data.imgId); 29 | break; 30 | case "magicRangeMarkerDD4th": 31 | ddf.cmd.magicRangeDD4th_show(character.data.imgId); 32 | break; 33 | case "MagicTimer": 34 | ddf.cmd.magicTimer_show(character.data.imgId); 35 | break; 36 | } 37 | } 38 | } 39 | } 40 | } 41 | }); 42 | -------------------------------------------------------------------------------- /src/js/contextMenu/magicRange.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '.magicRangeFrame', 4 | items: { 5 | edit: {name: "魔法範囲の変更", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | character = ddf.characters[opt.$trigger.attr("id")]; 8 | switch(character.data.type){ 9 | case "LogHorizonRange": 10 | ddf.cmd.magicRangeLH_show(opt.$trigger.attr("id")); 11 | break; 12 | case "magicRangeMarker": 13 | ddf.cmd.magicRangeMarker_show(opt.$trigger.attr("id")); 14 | break; 15 | case "magicRangeMarkerDD4th": 16 | ddf.cmd.magicRangeDD4th_show(opt.$trigger.attr("id")); 17 | break; 18 | case "MetallicGuardianDamageRange": 19 | ddf.cmd.magicRangeMG_show(opt.$trigger.attr("id")); 20 | break; 21 | } 22 | }, 23 | }, 24 | delete: {name: "魔法範囲の削除", 25 | callback: function(itemKey, opt, rootMenu, originalEvent) { 26 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 27 | character = ddf.characters[opt.$trigger.attr("id")]; 28 | if(character){ 29 | ddf.cmd.safeDragDestroy(); 30 | character.obj && character.obj.remove(); 31 | delete ddf.characters[opt.$trigger.attr("id")]; 32 | if(ddf.roomState.ini_characters[opt.$trigger.attr("id")]){ 33 | delete ddf.roomState.ini_characters[opt.$trigger.attr("id")]; 34 | } 35 | $(".draggableObj").draggable(ddf.dragOption); 36 | } 37 | }, 38 | }, 39 | rotationR: {name: "右回転", 40 | visible: function(key, opt){ 41 | return opt.$trigger && ddf.characters[opt.$trigger.attr("id")] && ddf.characters[opt.$trigger.attr("id")].data.type == "MetallicGuardianDamageRange"; 42 | }, 43 | callback: function(itemKey, opt, rootMenu, originalEvent) { 44 | character = ddf.characters[opt.$trigger.attr("id")]; 45 | character.data.rotation = character.data.rotation + 90 % 360; 46 | ddf.changeCharacter(character.data).then((r) => { 47 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 48 | }); 49 | }, 50 | }, 51 | rotationL: {name: "左回転", 52 | visible: function(key, opt){ 53 | return opt.$trigger && ddf.characters[opt.$trigger.attr("id")] && ddf.characters[opt.$trigger.attr("id")].data.type == "MetallicGuardianDamageRange"; 54 | }, 55 | callback: function(itemKey, opt, rootMenu, originalEvent) { 56 | character = ddf.characters[opt.$trigger.attr("id")]; 57 | character.data.rotation = character.data.rotation + 270 % 360; 58 | ddf.changeCharacter(character.data).then((r) => { 59 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 60 | }); 61 | }, 62 | } 63 | } 64 | }); 65 | -------------------------------------------------------------------------------- /src/js/contextMenu/map.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '#mapSurface', 4 | items: { 5 | addCharacter: {name: "キャラクター追加", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.cmd.addCharacter_show("0"); 8 | }, 9 | }, 10 | addMagicRangeDD3: {name: "魔法範囲追加(DD3版)", 11 | callback: function(itemKey, opt, rootMenu, originalEvent) { 12 | ddf.cmd.magicRangeMarker_show("0"); 13 | }, 14 | }, 15 | addMagicRangeDD4: {name: "魔法範囲追加(DD4版)", 16 | callback: function(itemKey, opt, rootMenu, originalEvent) { 17 | ddf.cmd.magicRangeDD4th_show("0"); 18 | }, 19 | }, 20 | addMagicRangeLH: {name: "ログホライズン用範囲", 21 | callback: function(itemKey, opt, rootMenu, originalEvent) { 22 | ddf.cmd.magicRangeLH_show("0"); 23 | }, 24 | }, 25 | addMagicRangeMG: {name: "メタリックガーディアン用範囲", 26 | callback: function(itemKey, opt, rootMenu, originalEvent) { 27 | ddf.cmd.magicRangeMG_show("0"); 28 | }, 29 | }, 30 | addMagicTimer: {name: "魔法タイマー追加", 31 | callback: function(itemKey, opt, rootMenu, originalEvent) { 32 | ddf.cmd.magicTimer_show(""); 33 | }, 34 | }, 35 | addMapMask: {name: "マップマスク追加", 36 | callback: function(itemKey, opt, rootMenu, originalEvent) { 37 | ddf.mapMask_show(""); 38 | }, 39 | }, 40 | addMapMarker: {name: "マップマーカー追加", 41 | callback: function(itemKey, opt, rootMenu, originalEvent) { 42 | ddf.cmd.mapMarker_show(""); 43 | }, 44 | }, 45 | sep1: "---------", 46 | addDiceSymbol: {name: "ダイスシンボル追加", 47 | disabled: true, 48 | callback: function(itemKey, opt, rootMenu, originalEvent) { 49 | }, 50 | }, 51 | sep2: "---------", 52 | addCardHolder: {name: "手札置き場の作成", 53 | disabled: true, 54 | callback: function(itemKey, opt, rootMenu, originalEvent) { 55 | }, 56 | }, 57 | addMessageCard: {name: "メッセージカードの追加", 58 | disabled: true, 59 | callback: function(itemKey, opt, rootMenu, originalEvent) { 60 | }, 61 | }, 62 | sep3: "---------", 63 | resetWindow: {name: "ウィンドウ配置初期化", 64 | disabled: true, 65 | callback: function(itemKey, opt, rootMenu, originalEvent) { 66 | }, 67 | } 68 | } 69 | }); -------------------------------------------------------------------------------- /src/js/contextMenu/mapMarker.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '.mapMarkerFrame', 4 | items: { 5 | edit: {name: "マップマーカーの変更", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | character = ddf.characters[opt.$trigger.attr("id")]; 8 | ddf.cmd.mapMarker_show(opt.$trigger.attr("id")); 9 | }, 10 | }, 11 | delete: {name: "マップマーカーの削除", 12 | callback: function(itemKey, opt, rootMenu, originalEvent) { 13 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 14 | character = ddf.characters[opt.$trigger.attr("id")]; 15 | if(character){ 16 | ddf.cmd.safeDragDestroy(); 17 | character.obj && character.obj.remove(); 18 | delete ddf.characters[opt.$trigger.attr("id")]; 19 | if(ddf.roomState.ini_characters[opt.$trigger.attr("id")]){ 20 | delete ddf.roomState.ini_characters[opt.$trigger.attr("id")]; 21 | } 22 | $(".draggableObj").draggable(ddf.dragOption); 23 | } 24 | }, 25 | } 26 | } 27 | }); 28 | -------------------------------------------------------------------------------- /src/js/contextMenu/mapMask.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '.mapMaskFrame.draggableObj', 4 | items: { 5 | edit: {name: "マップマスクの変更", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.mapMask_show(opt.$trigger.attr("id")); 8 | }, 9 | }, 10 | fix: {name: "マップマスクの固定", 11 | callback: function(itemKey, opt, rootMenu, originalEvent) { 12 | ddf.cmd.safeDragDestroy(); 13 | character = ddf.characters[opt.$trigger.attr("id")]; 14 | character.data.draggable = false; 15 | ddf.changeCharacter(character.data); 16 | character.obj.removeClass("draggableObj"); 17 | $(".draggableObj").draggable(ddf.dragOption); 18 | }, 19 | }, 20 | delete: {name: "マップマスクの削除", 21 | callback: function(itemKey, opt, rootMenu, originalEvent) { 22 | ddf.removeCharacter(opt.$trigger.attr("id"), false); 23 | character = ddf.characters[opt.$trigger.attr("id")]; 24 | if(character){ 25 | ddf.cmd.safeDragDestroy(); 26 | character.obj && character.obj.remove(); 27 | delete ddf.characters[opt.$trigger.attr("id")]; 28 | $(".draggableObj").draggable(ddf.dragOption); 29 | } 30 | }, 31 | } 32 | } 33 | }); 34 | 35 | $.contextMenu({ 36 | selector: '.mapMaskFrame:not(.draggableObj)', 37 | items: { 38 | delete: {name: "マップマスクの削除", 39 | callback: function(itemKey, opt, rootMenu, originalEvent) { 40 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 41 | character = ddf.characters[opt.$trigger.attr("id")]; 42 | if(character){ 43 | ddf.cmd.safeDragDestroy(); 44 | character.obj && character.obj.remove(); 45 | delete ddf.characters[opt.$trigger.attr("id")]; 46 | $(".draggableObj").draggable(ddf.dragOption); 47 | } 48 | } 49 | } 50 | } 51 | }); -------------------------------------------------------------------------------- /src/js/contextMenu/memo.js: -------------------------------------------------------------------------------- 1 | $.contextMenu({ 2 | zIndex: 150, 3 | selector: '#list_memo > div', 4 | items: { 5 | edit: {name: "共有メモの変更", 6 | callback: function(itemKey, opt, rootMenu, originalEvent) { 7 | ddf.cmd.openMemo(opt.$trigger.attr("id")); 8 | }, 9 | }, 10 | delete: {name: "共有メモの削除", 11 | callback: function(itemKey, opt, rootMenu, originalEvent) { 12 | ddf.removeCharacter(opt.$trigger.attr("id"), true); 13 | character = ddf.characters[opt.$trigger.attr("id")]; 14 | if(character){ 15 | ddf.cmd.safeDragDestroy(); 16 | character.obj && character.obj.remove(); 17 | delete ddf.characters[opt.$trigger.attr("id")]; 18 | $(".draggableObj").draggable(ddf.dragOption); 19 | } 20 | }, 21 | } 22 | } 23 | }); 24 | -------------------------------------------------------------------------------- /src/js/room_menu.js: -------------------------------------------------------------------------------- 1 | $(() => { 2 | /*プレイルームメニュー*/ 3 | $("#btn_save").on("click", (e) => { 4 | ddf.save().then((r) => { 5 | if(r.result == "OK"){ 6 | obj = $(`.`); 7 | $("body").append(obj); 8 | obj[0].click(); 9 | obj.remove(); 10 | } 11 | }); 12 | }); 13 | /*$("#btn_load").on("click", (e) => { 14 | });*/ 15 | $("#btn_saveall").on("click", (e) => { 16 | data = JSON.stringify({ 17 | saveData: { 18 | tabInfos: tab 19 | }, 20 | saveDataTypeName: "ChatPalette2" 21 | }); 22 | ddf.saveAllData(data).then((r) => { 23 | if(r.result == "OK"){ 24 | obj = $(`.`); 25 | $("body").append(obj); 26 | obj[0].click(); 27 | obj.remove(); 28 | } 29 | }); 30 | }); 31 | /*$("#btn_loadall").on("click", (e) => { 32 | });*/ 33 | /*$("#btn_savechatlog, #btn_saveChatLog2").on("click", (e) => { 34 | });*/ 35 | $("#btn_startrecord").on("click", (e) => { 36 | }); 37 | $("#btn_endrecord").on("click", (e) => { 38 | }); 39 | $("#btn_cancelrecord").on("click", (e) => { 40 | }); 41 | $("#btn_logout, #btn_logout2").on("click", (e) => { 42 | ddf.logout().then((r) => { 43 | ddf.userState.room = -1; 44 | location.href = "index.html" 45 | }); 46 | }); 47 | 48 | $("#btn_displaychat").on("click", (e) => { 49 | ddf.roomState.viewStateInfo.isChatVisible = !ddf.roomState.viewStateInfo.isChatVisible; 50 | $(e.currentTarget).toggleClass("checked"); 51 | 52 | $("#window_chat .inner").toggle(); 53 | }); 54 | $("#btn_displaydice").on("click", (e) => { 55 | ddf.roomState.viewStateInfo.isDiceVisible = !ddf.roomState.viewStateInfo.isDiceVisible; 56 | $(e.currentTarget).toggleClass("checked"); 57 | 58 | $("#diceResult").toggle(); 59 | }); 60 | $("#btn_displayinitiative").on("click", (e) => { 61 | ddf.roomState.viewStateInfo.isInitiativeListVisible = !ddf.roomState.viewStateInfo.isInitiativeListVisible; 62 | $(e.currentTarget).toggleClass("checked"); 63 | $("#initiative").toggle(); 64 | }); 65 | $("#btn_displayresource").on("click", (e) => { 66 | ddf.roomState.viewStateInfo.isResourceWindowVisible = !ddf.roomState.viewStateInfo.isResourceWindowVisible; 67 | $(e.currentTarget).toggleClass("checked"); 68 | 69 | //$("#resource").toggle(); 70 | /*TODO*/ 71 | }); 72 | $("#btn_displaychatpalette").on("click", (e) => { 73 | ddf.roomState.viewStateInfo.isChatPaletteVisible = !ddf.roomState.viewStateInfo.isChatPaletteVisible; 74 | $(e.currentTarget).toggleClass("checked"); 75 | 76 | $("#window_chatPalette").toggle(); 77 | }); 78 | $("#btn_displaycounter").on("click", (e) => { 79 | ddf.roomState.viewStateInfo.isCounterRemoconVisible = !ddf.roomState.viewStateInfo.isCounterRemoconVisible; 80 | $(e.currentTarget).toggleClass("checked"); 81 | 82 | //$("#remocon").toggle(); 83 | /*TODO*/ 84 | }); 85 | $("#btn_displaycharacter").on("click", (e) => { 86 | ddf.roomState.viewStateInfo.isCutInVisible = !ddf.roomState.viewStateInfo.isCutInVisible; 87 | $(e.currentTarget).toggleClass("checked"); 88 | $("#characterCutIn").toggle(); 89 | }); 90 | $("#btn_displaycutin").on("click", (e) => { 91 | ddf.roomState.viewStateInfo.isStandingGraphicVisible = !ddf.roomState.viewStateInfo.isStandingGraphicVisible; 92 | $(e.currentTarget).toggleClass("checked"); 93 | }); 94 | $("#btn_displaygridnum").on("click", (e) => { 95 | ddf.roomState.viewStateInfo.isPositionVisible = !ddf.roomState.viewStateInfo.isPositionVisible; 96 | $(e.currentTarget).toggleClass("checked"); 97 | ddf.cmd.refresh_parseMapData({mapData: ddf.roomState.mapData}); 98 | }); 99 | $("#btn_displaygridline").on("click", (e) => { 100 | ddf.roomState.viewStateInfo.isGridVisible = !ddf.roomState.viewStateInfo.isGridVisible; 101 | $(e.currentTarget).toggleClass("checked"); 102 | ddf.cmd.refresh_parseMapData({mapData: ddf.roomState.mapData}); 103 | }); 104 | $("#btn_gridguide").on("click", (e) => { 105 | ddf.roomState.viewStateInfo.isSnapMovablePiece = !ddf.roomState.viewStateInfo.isSnapMovablePiece; 106 | $(e.currentTarget).toggleClass("checked"); 107 | }); 108 | $("#btn_adjustcharacter").on("click", (e) => { 109 | ddf.roomState.viewStateInfo.isAdjustImageSize = !ddf.roomState.viewStateInfo.isAdjustImageSize; 110 | $(e.currentTarget).toggleClass("checked"); 111 | $("#characterCutIn").toggleClass("adjust"); 112 | }); 113 | $("#btn_chatfont").on("click", (e) => { 114 | }); 115 | $("#btn_resetwindow").on("click", (e) => { 116 | }); 117 | $("#btn_resetdisplay").on("click", (e) => { 118 | if(confirm("ウィンドウ位置等の表示情報を初期化しますか?\n(初期化した場合再ログインが必要です)")){ 119 | ddf.cmd.clearUserState(); 120 | window.onbeforeunload = null; 121 | location.reload(); 122 | } 123 | }); 124 | 125 | /*$("#btn_addCharacter").on("click", (e) => { 126 | });*/ 127 | /*$("#btn_ragedd3").on("click", (e) => { 128 | });*/ 129 | /*$("#btn_rangedd4").on("click", (e) => { 130 | });*/ 131 | /*$("#btn_rangelh").on("click", (e) => { 132 | });*/ 133 | /*$("#btn_rangemg").on("click", (e) => { 134 | });*/ 135 | /*$("#btn_magictimer").on("click", (e) => { 136 | });*/ 137 | $("#btn_createchit").on("click", (e) => { 138 | }); 139 | /*$("#btn_graveyard, #btn_graveyard2").on("click", (e) => { 140 | });*/ 141 | $("#btn_waitroom").on("click", (e) => { 142 | }); 143 | $("#btn_rotate").on("click", (e) => { 144 | ddf.roomState.viewStateInfo.isRotateMarkerVisible = !ddf.roomState.viewStateInfo.isRotateMarkerVisible; 145 | $(e.currentTarget).toggleClass("checked"); 146 | 147 | /*TODO*/ 148 | }); 149 | 150 | $("#btn_cardpickup").on("click", (e) => { 151 | ddf.roomState.viewStateInfo.isCardPickUpVisible = !ddf.roomState.viewStateInfo.isCardPickUpVisible; 152 | $(e.currentTarget).toggleClass("checked"); 153 | }); 154 | $("#btn_cardlog").on("click", (e) => { 155 | ddf.roomState.viewStateInfo.isCardHandleLogVisible = !ddf.roomState.viewStateInfo.isCardHandleLogVisible; 156 | $(e.currentTarget).toggleClass("checked"); 157 | }); 158 | $("#btn_cardchange").on("click", (e) => { 159 | }); 160 | $("#btn_cardreset").on("click", (e) => { 161 | }); 162 | 163 | /*$("#btn_mapchange").on("click", (e) => { 164 | });*/ 165 | /*$("#btn_maptile").on("click", (e) => { 166 | });*/ 167 | /*$("#btn_mapmask").on("click", (e) => { 168 | });*/ 169 | $("#btn_mapmodify").on("click", (e) => { 170 | }); 171 | $("#btn_mapsave").on("click", (e) => { 172 | ddf.saveMap().then((r)=>{ 173 | if(r.result == "OK"){ 174 | a = $(`.`); 175 | $(document.body).append(a); 176 | a[0].click(); 177 | a[0].remove(); 178 | } 179 | }); 180 | }); 181 | /*$("#btn_mapload").on("click", (e) => { 182 | });*/ 183 | 184 | /*$("#btn_imageupload").on("click", (e) => { 185 | });*/ 186 | $("#btn_camera").on("click", (e) => { 187 | }); 188 | $("#btn_imagetagedit").on("click", (e) => { 189 | }); 190 | /*$("#btn_imagedelete").on("click", (e) => { 191 | });*/ 192 | 193 | /*$("#btn_version2").on("click", (e) => { 194 | });*/ 195 | /*$("#btn_manual2").on("click", (e) => { 196 | });*/ 197 | /*$("#btn_tutorial2").on("click", (e) => { 198 | });*/ 199 | /*$("#btn_site2").on("click", (e) => { 200 | });*/ 201 | 202 | 203 | $("#btn_zoomin").on("click", () => { 204 | ddf.cmd.setZoom(0.1); 205 | }); 206 | $("#btn_zoomout").on("click", () => { 207 | ddf.cmd.setZoom(-0.1); 208 | }); 209 | 210 | $("#btn_screenshot").on("click", generate); 211 | }); -------------------------------------------------------------------------------- /src/js/screenshot.js: -------------------------------------------------------------------------------- 1 | (function (exports) { 2 | function urlsToAbsolute(nodeList) { 3 | if (!nodeList.length) { 4 | return []; 5 | } 6 | var attrName = 'href'; 7 | if (nodeList[0].__proto__ === HTMLImageElement.prototype 8 | || nodeList[0].__proto__ === HTMLScriptElement.prototype) { 9 | attrName = 'src'; 10 | } 11 | nodeList = [].map.call(nodeList, function (el, i) { 12 | var attr = el.getAttribute(attrName); 13 | if (!attr) { 14 | return; 15 | } 16 | var absURL = /^(https?|data):/i.test(attr); 17 | if (absURL) { 18 | return el; 19 | } else { 20 | return el; 21 | } 22 | }); 23 | return nodeList; 24 | } 25 | 26 | function screenshotPage() { 27 | urlsToAbsolute(document.images); 28 | urlsToAbsolute(document.querySelectorAll("link[rel='stylesheet']")); 29 | var screenshot = document.documentElement.cloneNode(true); 30 | var b = document.createElement('base'); 31 | b.href = document.location.protocol + '//' + location.host; 32 | var head = screenshot.querySelector('head'); 33 | head.insertBefore(b, head.firstChild); 34 | screenshot.style.pointerEvents = 'none'; 35 | screenshot.style.overflow = 'hidden'; 36 | screenshot.style.webkitUserSelect = 'none'; 37 | screenshot.style.mozUserSelect = 'none'; 38 | screenshot.style.msUserSelect = 'none'; 39 | screenshot.style.oUserSelect = 'none'; 40 | screenshot.style.userSelect = 'none'; 41 | screenshot.dataset.scrollX = window.scrollX; 42 | screenshot.dataset.scrollY = window.scrollY; 43 | var script = document.createElement('script'); 44 | script.textContent = '(' + addOnPageLoad_.toString() + ')();'; 45 | screenshot.querySelector('body').appendChild(script); 46 | var blob = new Blob([screenshot.outerHTML], { 47 | type: 'text/html' 48 | }); 49 | return blob; 50 | } 51 | 52 | function addOnPageLoad_() { 53 | window.addEventListener('DOMContentLoaded', function (e) { 54 | var scrollX = document.documentElement.dataset.scrollX || 0; 55 | var scrollY = document.documentElement.dataset.scrollY || 0; 56 | window.scrollTo(scrollX, scrollY); 57 | }); 58 | } 59 | 60 | function generate() { 61 | window.URL = window.URL || window.webkitURL; 62 | window.open(window.URL.createObjectURL(screenshotPage())); 63 | } 64 | exports.screenshotPage = screenshotPage; 65 | exports.generate = generate; 66 | })(window); -------------------------------------------------------------------------------- /src/js/window/.loading.js: -------------------------------------------------------------------------------- 1 | $(() => { 2 | require("./version.js"); 3 | //require("./createPlayRoom.js"); 4 | require("./loginCheck.js"); 5 | require("./roomDelete.js"); 6 | 7 | require("./saveChatLog.js"); 8 | require("./loadSaveData.js"); 9 | 10 | require("./chatPalette.js"); 11 | require("./graveyard.js"); 12 | 13 | require("./addCharacter.js"); 14 | require("./magicRangeMarker.js"); 15 | require("./magicRangeDD4th.js"); 16 | require("./magicRangeLH.js"); 17 | require("./magicRangeMG.js"); 18 | require("./magicTimer.js"); 19 | require("./chit.js"); 20 | require("./mapMask.js"); 21 | require("./mapMarker.js"); 22 | 23 | require("./mapChange.js"); 24 | require("./floorTile.js"); 25 | 26 | require("./upload.js"); 27 | require("./imageDelete.js"); 28 | 29 | require("./playRoomInfo.js"); 30 | require("./memo.js"); 31 | 32 | require("./initiative.js"); 33 | require("./chat.js"); 34 | 35 | require("./help.js"); 36 | require("./diceBotTable.js"); 37 | require("./chatFont.js"); 38 | require("./vote.js"); 39 | require("./alerm.js"); 40 | require("./characterCutin.js"); 41 | require("./uploadFile.js"); 42 | }); -------------------------------------------------------------------------------- /src/js/window/alerm.js: -------------------------------------------------------------------------------- 1 | $("#btn_alerm").on('click', (e) => { 2 | $("#alerm_name").empty(); 3 | $("#alerm_name").append("") 4 | for(item of ddf.roomState.loginUserInfo){ 5 | $("#alerm_name").append(``); 6 | } 7 | $("#alerm_name").val("(全員)"); 8 | $("#alerm_file").val("./sound/alarm.mp3"); 9 | $("#alerm_second").val(0); 10 | $("#window_alerm").show().css("zIndex", 151); 11 | $(".draggable:not(#window_alerm)").css("zIndex", 150); 12 | }); 13 | 14 | $("#alerm_send").on("click", (e) => { 15 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `[アラーム発生:${$("#alerm_name").val()}]:${$("#alerm_file").val()}${parseInt($("#alerm_second").val())>0?":"+$("#alerm_second").val()+"秒後":""}`, ddf.userState.chatColor); 16 | $("#window_alerm").hide(); 17 | }); 18 | 19 | $("#alerm_close, #alerm_close2").on('click', (e) => { 20 | $("#window_alerm").hide(); 21 | }); 22 | 23 | -------------------------------------------------------------------------------- /src/js/window/chat.js: -------------------------------------------------------------------------------- 1 | 2 | $("#btn_private").on('click', (e) => { 3 | }); 4 | /*$("#btn_help").on('click', (e) => { 5 | });*/ 6 | $("#btn_diceBotTable").on('click', (e) => { 7 | }); 8 | $("#btn_novel").on('click', (e) => { 9 | }); 10 | $("#btn_chatDelete").on('click', (e) => { 11 | if(confirm('チャットログを全て削除します。よろしいですか?') && confirm('削除したログは復旧できませんが、本当によろしいですか?')){ 12 | ddf.deleteChatLog().then((r) => { 13 | ddf.sendChatMessage(0, "どどんとふ\t", "全チャットログ削除が正常に終了しました。", "00aa00", true); 14 | }); 15 | } 16 | }); 17 | $("#btn_chatFont").on('click', (e) => { 18 | }); 19 | $("#btn_mute").on('click', (e) => { 20 | ddf.roomState.playSound = !ddf.roomState.playSound; 21 | if(ddf.roomState.playSound){ 22 | $("#btn_mute img").attr("src", "image/icons/sound.png"); 23 | $("#btn_mute .helptext").text("音再生あり"); 24 | }else{ 25 | $("#btn_mute img").attr("src", "image/icons/sound_mute.png"); 26 | $("#btn_mute .helptext").text("音再生なし"); 27 | } 28 | }); 29 | /*$("#btn_vote").on('click', (e) => { 30 | });*/ 31 | /*$("#btn_alarm").on('click', (e) => { 32 | });*/ 33 | /*$("#btn_characterList").on('click', (e) => { 34 | });*/ 35 | /*$("#btn_easyUpload").on('click', (e) => { 36 | });*/ 37 | $("#btn_talk").on('click', (e) => { 38 | }); 39 | 40 | $("#chattext").on('keydown', (e) => { 41 | if(e.keyCode == 13 && !e.shiftKey){ 42 | $("#btn_chatsend").click(); 43 | return false; 44 | } 45 | }); 46 | 47 | $("#btn_chatsend").on('click', (e) => { 48 | ddf.cmd.sendChatMessage(ddf.userState.channel, $("#chatname").val(), "", $("#dicebot").val(), $("#chattext").val(), ddf.userState.chatColor) 49 | $("#chattext").val(""); 50 | }); -------------------------------------------------------------------------------- /src/js/window/chatFont.js: -------------------------------------------------------------------------------- 1 | $("#btn_chatFont").on('click', (e) => { 2 | $("#chatFont_chatColor").val(ddf.userState.chatColor); 3 | $("#chatFont_chatColor2").spectrum('set', "#"+ddf.userState.chatColor); 4 | $("#chatFont_backgroundColor").val(ddf.userState.backgroundColor); 5 | $("#chatFont_backgroundColor2").spectrum('set', "#"+ddf.userState.backgroundColor); 6 | 7 | $("#chatFont_fontSize").val(ddf.userState.fontSize); 8 | $("#chatFont_showTime").prop("checked", ddf.userState.showTime); 9 | 10 | $("#window_chatFont").show().css("zIndex", 151); 11 | $(".draggable:not(#window_chatFont)").css("zIndex", 150); 12 | }); 13 | 14 | $("#chatFont_close, #chatFont_close2").on('click', (e) => { 15 | $("#window_chatFont").hide(); 16 | }); 17 | 18 | sp_param = require("../.option.spectrum.json"); 19 | sp_param.change = (c) => { 20 | $("#chatFont_chatColor").val(c.toHex()); 21 | }; 22 | $("#chatFont_chatColor2").spectrum(sp_param); 23 | sp_param2 = require("../.option.spectrum.json"); 24 | sp_param2.change = (c) => { 25 | $("#chatFont_backgroundColor").val(c.toHex()); 26 | }; 27 | $("#chatFont_backgroundColor2").spectrum(sp_param2); 28 | 29 | $("#chatFont_send").on('click', (e) => { 30 | ddf.userState.chatColor = $("#chatFont_chatColor").val(); 31 | ddf.userState.backgroundColor = $("#chatFont_backgroundColor").val(); 32 | ddf.userState.fontSize = $("#chatFont_fontSize").val(); 33 | ddf.userState.showTime = $("#chatFont_showTime").prop("checked"); 34 | 35 | ddf.cmd.saveUserState(); 36 | $("#log > div, #chattext").css({ 37 | backgroundColor: "#"+ddf.userState.backgroundColor, 38 | fontSize: ddf.userState.fontSize+"pt" 39 | }); 40 | $("#window_chatFont").hide(); 41 | }); -------------------------------------------------------------------------------- /src/js/window/chit.js: -------------------------------------------------------------------------------- 1 | $("#btn_createchit").on("click", (e) => { 2 | chit_show(""); 3 | }); 4 | 5 | $("#window_chit input").on('change', chit_previewUpdate); 6 | 7 | $(document).on('click', '#chit_imagearea div img', (e) => { 8 | let img = $(e.currentTarget).attr("src"); 9 | $("#chit_imageUrl").val(img.replace(ddf.base_url, "")); 10 | $("#chit_preview .inner").css("backgroundImage", `url(${img})`); 11 | }); 12 | 13 | $("#chit_imageChange").on('click', (e) => { 14 | ddf.getImageTagsAndImageList().then((r) => { 15 | tagList = ["キャラクター画像"]; 16 | ddf.images = r; 17 | for(item of ddf.images.imageList){ 18 | if(ddf.images.tagInfos[item]){ 19 | for(tag of ddf.images.tagInfos[item].tags){ 20 | if(tag == ""){continue;} 21 | tagList.includes(tag) || tagList.push(tag); 22 | } 23 | } 24 | } 25 | tagList.push("(全て)"); 26 | 27 | $("#chit_tagbox").empty(); 28 | for(item of tagList){ 29 | $("#chit_tagbox").append($(``)); 30 | } 31 | $("#chit_tagbox").append($(``)); 32 | chit_setTag(tagList[0]); 33 | }); 34 | 35 | $("#chit_image").hide(); 36 | $("#chit_imageSelect").show(); 37 | }); 38 | 39 | 40 | function chit_setTag(tag){ 41 | $("#chit_imagearea").empty(); 42 | let password = $("#chit_password").val(); 43 | for(item of ddf.images.imageList){ 44 | if(ddf.images.tagInfos[item]){ 45 | if((tag == "(全て)" || ddf.images.tagInfos[item].tags.includes(tag)) && (ddf.images.tagInfos[item].password == "" || ddf.images.tagInfos[item].password == password)){ 46 | $("#chit_imagearea").append($(`
`)); 47 | } 48 | }else if(tag == "(全て)"){ 49 | $("#chit_imagearea").append($(`
`)); 50 | } 51 | } 52 | } 53 | 54 | ddf.cmd.chit_show = chit_show; 55 | function chit_show(imgId){ 56 | $("#window_chit").show().css("zIndex", 151); 57 | $(".draggable:not(#window_chit)").css("zIndex", 150); 58 | $("#chit_image").show(); 59 | $("#chit_imageSelect").hide(); 60 | 61 | var character; 62 | index = 0; 63 | reg = /^(\d+)$/; 64 | for(item in ddf.characters){ 65 | if(v = reg.exec(ddf.characters[item].data.name)){ 66 | index = Math.max(index, parseInt(v[1])); 67 | } 68 | } 69 | 70 | character = { 71 | type: "chit", 72 | width: 1, 73 | height: 1, 74 | imgId: "", 75 | draggable: true, 76 | imageUrl: "./image/defaultImageSet/pawn/pawnBlack.png", 77 | rotation: 0, 78 | info: "", 79 | x: 0, 80 | y: 0 81 | }; 82 | 83 | $("#chit_imgId").val(character.imgId); 84 | 85 | $("#chit_width").val(character.width); 86 | $("#chit_height").val(character.height); 87 | $("#chit_info").val(character.info); 88 | $("#chit_imageUrl").val(character.imageUrl); 89 | 90 | chit_previewUpdate(); 91 | } 92 | 93 | $("#chit_btnpassword").on('click', (e) => { 94 | $("#chit_btnpassword").hide(); 95 | $("#chit_password").show().focus(); 96 | }); 97 | 98 | $("#chit_password").on('focusout', (e) => { 99 | $("#chit_btnpassword").show(); 100 | $("#chit_password").hide(); 101 | chit_setTag($("#chit_tagbox").val()); 102 | }).on('keydown', (e) => { 103 | if(e.keyCode == 13){ 104 | $("#chit_password").blur(); 105 | } 106 | }); 107 | 108 | $("#chit_tagbox").on('change', (e) => { 109 | chit_setTag($("#chit_tagbox").val()); 110 | }); 111 | 112 | function chit_previewUpdate(){ 113 | zoom = Math.min(1, 1 / $("#chit_width").val(), 1 / $("#chit_height").val()); 114 | $("#chit_preview").css({ 115 | width: $("#chit_width").val() * 50, 116 | height: $("#chit_height").val() * 50, 117 | transform: `scale(${zoom})` 118 | }); 119 | $("#chit_preview .inner").css({ 120 | backgroundImage: "url("+ddf.base_url+$("#chit_imageUrl").val()+")" 121 | }); 122 | } 123 | 124 | $("#chit_close, #chit_close2").on("click", (e) => { 125 | $("#window_chit").hide(); 126 | }); 127 | 128 | var click = { 129 | x:0, 130 | y:0 131 | }; 132 | 133 | $("#chit_preview").draggable({ 134 | start: (event) => { 135 | click.x = event.clientX; 136 | click.y = event.clientY; 137 | }, 138 | helper: () => { 139 | let obj = $("#chit_preview").clone(); 140 | obj.addClass("chitFrame"); 141 | obj.css("transform", ""); 142 | obj.appendTo("#mapSurface"); 143 | return obj; 144 | }, 145 | drag: (event, ui) => { 146 | // This is the parameter for scale() 147 | var zoom = ddf.roomState.zoom; 148 | 149 | var original = ui.originalPosition; 150 | 151 | // jQuery will simply use the same object we alter here 152 | ui.position = { 153 | left: (event.clientX - click.x + original.left) / zoom, 154 | top: (event.clientY - click.y + original.top ) / zoom 155 | }; 156 | if(ddf.roomState.viewStateInfo.isSnapMovablePiece){ 157 | if(ddf.roomState.mapData.isAlternately && ddf.roomState.mapData.gridInterval % 2 == 1){ 158 | if((Math.floor(ui.position.top / 50 / ddf.roomState.mapData.gridInterval) & 1)){ 159 | ui.position = { 160 | left: ((Math.floor(ui.position.left / 25) | 1) ^ 1) * 25, 161 | top: Math.floor(ui.position.top / 50) * 50 162 | }; 163 | }else{ 164 | ui.position = { 165 | left: (Math.floor(ui.position.left / 25) | 1) * 25, 166 | top: Math.floor(ui.position.top / 50) * 50 167 | }; 168 | } 169 | }else{ 170 | ui.position = { 171 | left: Math.floor(ui.position.left / 50) * 50, 172 | top: Math.floor(ui.position.top / 50) * 50 173 | }; 174 | } 175 | } 176 | }, 177 | stop: (event, ui) => { 178 | character = { 179 | type: "chit", 180 | width: $("#chit_width").val(), 181 | height: $("#chit_height").val(), 182 | info: $("#chit_info").val(), 183 | imageUrl: $("#chit_imageUrl").val(), 184 | imgId: "", 185 | rotation: 0, 186 | info: $("#chit_info").val(), 187 | x: ui.position.left / 50, 188 | y: ui.position.top / 50 189 | }; 190 | ddf.addCharacter(character); 191 | $("#window_chit").hide(); 192 | }, 193 | }); 194 | -------------------------------------------------------------------------------- /src/js/window/floorTile.js: -------------------------------------------------------------------------------- 1 | function safeDragDestroy(){ 2 | try{ 3 | $(".floorTileFrame.draggableObj").draggable("destroy"); 4 | }catch(e){} 5 | } 6 | 7 | $("#btn_maptile").on("click", (e) => { 8 | floorTile_show(""); 9 | }); 10 | $("#window_floorTile input").on('change', floorTile_previewUpdate); 11 | 12 | $(document).on('click', '#floorTile_imagearea div img', (e) => { 13 | let img = $(e.currentTarget).attr("src"); 14 | $("#floorTile_imageUrl").val(img.replace(ddf.base_url, "")); 15 | $("#floorTile_preview .inner").css("backgroundImage", `url(${img})`); 16 | }); 17 | 18 | $("#floorTile_imageChange").on('click', (e) => { 19 | ddf.getImageTagsAndImageList().then((r) => { 20 | tagList = ["フロアタイル画像"]; 21 | ddf.images = r; 22 | for(item of ddf.images.imageList){ 23 | if(ddf.images.tagInfos[item]){ 24 | for(tag of ddf.images.tagInfos[item].tags){ 25 | if(tag == ""){continue;} 26 | tagList.includes(tag) || tagList.push(tag); 27 | } 28 | } 29 | } 30 | tagList.push("(全て)"); 31 | 32 | $("#floorTile_tagbox").empty(); 33 | for(item of tagList){ 34 | $("#floorTile_tagbox").append($(``)); 35 | } 36 | $("#floorTile_tagbox").append($(``)); 37 | floorTile_setTag(tagList[0]); 38 | }); 39 | 40 | $("#floorTile_image").hide(); 41 | $("#floorTile_imageSelect").show(); 42 | }); 43 | 44 | 45 | function floorTile_setTag(tag){ 46 | $("#floorTile_imagearea").empty(); 47 | let password = $("#floorTile_password").val(); 48 | for(item of ddf.images.imageList){ 49 | if(ddf.images.tagInfos[item]){ 50 | if((tag == "(全て)" || ddf.images.tagInfos[item].tags.includes(tag)) && (ddf.images.tagInfos[item].password == "" || ddf.images.tagInfos[item].password == password)){ 51 | $("#floorTile_imagearea").append($(`
`)); 52 | } 53 | }else if(tag == "(全て)"){ 54 | $("#floorTile_imagearea").append($(`
`)); 55 | } 56 | } 57 | } 58 | 59 | ddf.cmd.floorTile_show = floorTile_show; 60 | function floorTile_show(imgId){ 61 | $("#map").addClass("floorTileEditing"); 62 | $(".floorTileFrame.dragprev").removeClass("dragprev"); 63 | $(".floorTileFrame.draggableObj").draggable(ddf.dragOption); 64 | $("#window_floorTile").show().css("zIndex", 151); 65 | $(".draggable:not(#window_floorTile)").css("zIndex", 150); 66 | $("#floorTile_image").show(); 67 | $("#floorTile_imageSelect").hide(); 68 | 69 | var character; 70 | index = 0; 71 | reg = /^(\d+)$/; 72 | for(item in ddf.characters){ 73 | if(v = reg.exec(ddf.characters[item].data.name)){ 74 | index = Math.max(index, parseInt(v[1])); 75 | } 76 | } 77 | 78 | character = { 79 | type: "floorTile", 80 | width: 10, 81 | height: 10, 82 | imgId: "", 83 | draggable: true, 84 | imageUrl: "./image/defaultImageSet/floorTiles/floorTile_001.jpg", 85 | rotation: 0, 86 | x: 0, 87 | y: 0 88 | }; 89 | 90 | $("#floorTile_imgId").val(character.imgId); 91 | 92 | $("#floorTile_width").val(character.width); 93 | $("#floorTile_height").val(character.height); 94 | $("#floorTile_imageUrl").val(character.imageUrl); 95 | 96 | floorTile_previewUpdate(); 97 | } 98 | 99 | $("#floorTile_btnpassword").on('click', (e) => { 100 | $("#floorTile_btnpassword").hide(); 101 | $("#floorTile_password").show().focus(); 102 | }); 103 | 104 | $("#floorTile_password").on('focusout', (e) => { 105 | $("#floorTile_btnpassword").show(); 106 | $("#floorTile_password").hide(); 107 | floorTile_setTag($("#floorTile_tagbox").val()); 108 | }).on('keydown', (e) => { 109 | if(e.keyCode == 13){ 110 | $("#floorTile_password").blur(); 111 | } 112 | }); 113 | 114 | $("#floorTile_tagbox").on('change', (e) => { 115 | floorTile_setTag($("#floorTile_tagbox").val()); 116 | }); 117 | 118 | function floorTile_previewUpdate(){ 119 | zoom = Math.min(1, 3 / $("#floorTile_width").val(), 3 / $("#floorTile_height").val()); 120 | $("#floorTile_preview").css({ 121 | width: $("#floorTile_width").val() * 50, 122 | height: $("#floorTile_height").val() * 50, 123 | transform: `scale(${zoom})` 124 | }); 125 | $("#floorTile_preview .inner").css({ 126 | backgroundImage: "url("+ddf.base_url+$("#floorTile_imageUrl").val()+")" 127 | }); 128 | } 129 | 130 | $("#floorTile_close, #floorTile_close2").on("click", (e) => { 131 | $("#window_floorTile").hide(); 132 | $(".floorTileFrame").addClass("dragprev"); 133 | safeDragDestroy(); 134 | ddf.cmd.safeDragDestroy(); 135 | $(".draggableObj").draggable(ddf.dragOption); 136 | $("#map").removeClass("floorTileEditing"); 137 | }); 138 | 139 | var click = { 140 | x:0, 141 | y:0 142 | }; 143 | 144 | $("#floorTile_preview").draggable({ 145 | start: (event) => { 146 | click.x = event.clientX; 147 | click.y = event.clientY; 148 | }, 149 | helper: () => { 150 | let obj = $("#floorTile_preview").clone(); 151 | obj.addClass("floorTileFrame draggableObj"); 152 | obj.css("transform", ""); 153 | obj.appendTo("#mapSurface"); 154 | return obj; 155 | }, 156 | drag: (event, ui) => { 157 | // This is the parameter for scale() 158 | var zoom = ddf.roomState.zoom; 159 | 160 | var original = ui.originalPosition; 161 | 162 | // jQuery will simply use the same object we alter here 163 | ui.position = { 164 | left: (event.clientX - click.x + original.left) / zoom, 165 | top: (event.clientY - click.y + original.top ) / zoom 166 | }; 167 | if(ddf.roomState.viewStateInfo.isSnapMovablePiece){ 168 | if(ddf.roomState.mapData.isAlternately && ddf.roomState.mapData.gridInterval % 2 == 1){ 169 | if((Math.floor(ui.position.top / 50 / ddf.roomState.mapData.gridInterval) & 1)){ 170 | ui.position = { 171 | left: ((Math.floor(ui.position.left / 25) | 1) ^ 1) * 25, 172 | top: Math.floor(ui.position.top / 50) * 50 173 | }; 174 | }else{ 175 | ui.position = { 176 | left: (Math.floor(ui.position.left / 25) | 1) * 25, 177 | top: Math.floor(ui.position.top / 50) * 50 178 | }; 179 | } 180 | }else{ 181 | ui.position = { 182 | left: Math.floor(ui.position.left / 50) * 50, 183 | top: Math.floor(ui.position.top / 50) * 50 184 | }; 185 | } 186 | } 187 | }, 188 | stop: (event, ui) => { 189 | character = { 190 | type: "floorTile", 191 | width: $("#floorTile_width").val(), 192 | height: $("#floorTile_height").val(), 193 | imageUrl: $("#floorTile_imageUrl").val(), 194 | imgId: "", 195 | draggable: true, 196 | rotation: 0, 197 | x: ui.position.left / 50, 198 | y: ui.position.top / 50 199 | }; 200 | ddf.addCharacter(character); 201 | }, 202 | }); 203 | -------------------------------------------------------------------------------- /src/js/window/graveyard.js: -------------------------------------------------------------------------------- 1 | $("#btn_graveyard, #btn_graveyard2").on("click", (e) => { 2 | getGraveyardCharacterData(); 3 | $("#window_graveyard").show().css("zIndex", 151); 4 | $(".draggable:not(#window_graveyard)").css("zIndex", 150); 5 | }); 6 | 7 | $("#graveyard_close, #graveyard_close2").on("click", (e) => { 8 | $("#window_graveyard").hide(); 9 | }); 10 | $("#graveyard_resurrect").on("click", (e) => { 11 | ddf.resurrectCharacter($("#graveyard_characters").val()); 12 | $("#graveyard_characters")[0].remove($("#graveyard_characters")[0].selectedIndex); 13 | }); 14 | $("#graveyard_clear").on("click", (e) => { 15 | ddf.clearGraveyard().then((r) => { 16 | getGraveyardCharacterData(); 17 | }); 18 | }); 19 | $("#graveyard_reload").on("click", (e) => { 20 | getGraveyardCharacterData(); 21 | }); 22 | 23 | 24 | function getGraveyardCharacterData(){ 25 | return ddf.getGraveyardCharacterData().then((r) => { 26 | $("#graveyard_characters").empty(); 27 | 28 | for(item of r){ 29 | type = item.type; 30 | name = item.name; 31 | switch(item.type){ 32 | case "mapMask": 33 | type = "マップマスク"; 34 | break; 35 | case "Card": 36 | type = "カード"; 37 | break; 38 | case "CardZone": 39 | type = "カード置き場"; 40 | break; 41 | case "characterData": 42 | type = "キャラクター"; 43 | break; 44 | case "magicRangeMarker": 45 | type = "魔法範囲"; 46 | break; 47 | case "LogHorizonRange": 48 | type = "ログホライズン攻撃範囲"; 49 | break; 50 | case "MetallicGuardianDamageRange": 51 | type = "メタリックガーディアン攻撃範囲"; 52 | break; 53 | case "MagicTimer": 54 | type = "魔法タイマー"; 55 | break; 56 | case "mapMarker": 57 | name = "" 58 | type = "マップマーカー"; 59 | break; 60 | case "floorTile": 61 | name = "" 62 | type = "フロアタイル"; 63 | break; 64 | case "chit": 65 | name = "" 66 | type = "チット"; 67 | break; 68 | case "Memo": 69 | type = "共有メモ"; 70 | name = item.message.split("\r")[0]; 71 | break; 72 | case "diceSymbol": 73 | type = "ダイスシンボル"; 74 | name = `[${item.ownerName}]のダイス`; 75 | break; 76 | case "magicRangeMarkerDD4th": 77 | type = "魔法範囲D&D4版"; 78 | break; 79 | } 80 | $("#graveyard_characters").append($(``)); 81 | } 82 | }); 83 | } -------------------------------------------------------------------------------- /src/js/window/help.js: -------------------------------------------------------------------------------- 1 | 2 | $("#btn_help").on('click', (e) => { 3 | dicebot = ddf.info.diceBotInfos.find((item) => {return item.gameType == $("#dicebot").val()}); 4 | baseDicebot = ddf.info.diceBotInfos.find((item) => {return item.gameType == "BaseDiceBot"}); 5 | $("#help_text").text(`${baseDicebot.info}\n==【${dicebot.name}専用】=======================\n${dicebot.info}`); 6 | $("#window_help").show().css("zIndex", 151); 7 | $(".draggable:not(#window_help)").css("zIndex", 150); 8 | }); 9 | 10 | $("#help_close").on('click', (e) => { 11 | $("#window_help").hide(); 12 | }); -------------------------------------------------------------------------------- /src/js/window/imageDelete.js: -------------------------------------------------------------------------------- 1 | $("#btn_imagedelete").on('click', (e) => { 2 | $("#window_imageDelete").show().css("zIndex", 151); 3 | $(".draggable:not(#window_imageDelete)").css("zIndex", 150); 4 | 5 | ddf.getImageTagsAndImageList().then((r) => { 6 | tagList = ["(全て)"]; 7 | ddf.images = r; 8 | for(item of ddf.images.imageList){ 9 | if(ddf.images.tagInfos[item]){ 10 | for(tag of ddf.images.tagInfos[item].tags){ 11 | if(tag == ""){continue;} 12 | tagList.includes(tag) || tagList.push(tag); 13 | } 14 | } 15 | } 16 | 17 | $("#imageDelete_tagbox").empty(); 18 | for(item of tagList){ 19 | $("#imageDelete_tagbox").append($(``)); 20 | } 21 | imageDelete_setTag(tagList[0]); 22 | }); 23 | }); 24 | 25 | $("#imageDelete_tagbox").on('change', (e) => { 26 | imageDelete_setTag($("#imageDelete_tagbox").val()); 27 | }); 28 | 29 | $("#imageDelete_close, #imageDelete_close2").on('click', (e) => { 30 | $("#window_imageDelete").hide(); 31 | $("#imageDelete_password").val(""); 32 | }); 33 | 34 | function imageDelete_setTag(tag){ 35 | $("#imageDelete_imagearea").empty(); 36 | let password = $("#imageDelete_password").val(); 37 | for(item of ddf.images.imageList){ 38 | if(ddf.images.tagInfos[item]){ 39 | if((tag == "(全て)" || ddf.images.tagInfos[item].tags.includes(tag)) && (ddf.images.tagInfos[item].password == "" || ddf.images.tagInfos[item].password == password)){ 40 | $("#imageDelete_imagearea").append($(`
`)); 41 | } 42 | }else if(tag == "(全て)"){ 43 | $("#imageDelete_imagearea").append($(`
`)); 44 | } 45 | } 46 | } 47 | 48 | $("#imageDelete_btnpassword").on('click', (e) => { 49 | $("#imageDelete_btnpassword").hide(); 50 | $("#imageDelete_password").show().focus(); 51 | }); 52 | 53 | $("#imageDelete_password").on('focusout', (e) => { 54 | $("#imageDelete_btnpassword").show(); 55 | $("#imageDelete_password").hide(); 56 | imageDelete_setTag($("#imageDelete_tagbox").val()); 57 | }).on('keydown', (e) => { 58 | if(e.keyCode == 13){ 59 | $("#imageDelete_password").blur(); 60 | } 61 | }); 62 | 63 | $("button#imageDelete_delete").on('click', (e) => { 64 | imageList = []; 65 | for(obj of $("#imageDelete_imagearea :checked")){ 66 | imageList.push(obj.value); 67 | ddf.images.imageList.splice(ddf.images.imageList.indexOf(obj.value), 1); 68 | } 69 | ddf.deleteImage(imageList).then((r) => { 70 | imageDelete_setTag($("#imageDelete_tagbox").val()); 71 | $("#imageDelete_result").text(r.resultText); 72 | }); 73 | }); -------------------------------------------------------------------------------- /src/js/window/initiative.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/js/window/initiative.js -------------------------------------------------------------------------------- /src/js/window/loadSaveData.js: -------------------------------------------------------------------------------- 1 | $("#btn_load").on('click', (e) => { 2 | $("#window_loadSaveData [name=\"datatype\"][value=\"all\"]").prop("checked", true); 3 | $("#window_loadSaveData [type=\"checkbox\"]").prop("checked", false).prop("disabled", true); 4 | 5 | $("#window_loadSaveData").show().css("zIndex", "151"); 6 | $(".draggable:not(#window_loadSaveData)").css("zIndex", "150"); 7 | $("#window_loadSaveData_import").hide(); 8 | }); 9 | 10 | $("#window_loadSaveData [name=\"datatype\"]").on('click', (e) => { 11 | if($("#window_loadSaveData [name=\"datatype\"]:checked").val() == "all"){ 12 | $("#window_loadSaveData [type=\"checkbox\"]").prop("disabled", true); 13 | }else{ 14 | $("#window_loadSaveData [type=\"checkbox\"]").prop("disabled", false); 15 | } 16 | }); 17 | 18 | $("#loadSaveData_close, #loadSaveData_close2").on('click', (e) => { 19 | $("#window_loadSaveData").hide(); 20 | }); 21 | 22 | $("#loadSaveData_import_close").on('click', (e) => { 23 | $("#window_loadSaveData_import").hide(); 24 | }); 25 | 26 | $("#loadSaveData_send").on('click', (e) => { 27 | $("#window_loadSaveData").hide(); 28 | 29 | if($("#window_loadSaveData [name=\"datatype\"]:checked").val() == "all"){ 30 | $("#loadSaveData_import_target").val("all"); 31 | }else{ 32 | $("#loadSaveData_import_target").val($("#window_loadSaveData [type=\"checkbox\"]:checked").map((k,v)=>{return v.value;}).toArray().join()); 33 | } 34 | 35 | $("#window_loadSaveData_import").show().css("zIndex", "151"); 36 | $(".draggable:not(#window_loadSaveData_import)").css("zIndex", "150"); 37 | }); 38 | 39 | $("#btn_loadall").on('click', (e) => { 40 | $("#loadSaveData_import_target").val("allData"); 41 | 42 | $("#window_loadSaveData_import").show().css("zIndex", "151"); 43 | $(".draggable:not(#window_loadSaveData_import)").css("zIndex", "150"); 44 | $("#window_loadSaveData").hide(); 45 | }); 46 | 47 | $("#window_loadSaveData_import :file").on('change', (e) => { 48 | arr = []; 49 | for(item of $("#window_loadSaveData_import :file")[0].files){ 50 | arr.push(item); 51 | } 52 | loadSaveData_import_uploadfiles(arr); 53 | }); 54 | 55 | 56 | let $form = $("#loadSaveData_import_droparea"); 57 | 58 | (($form) => { 59 | $("#loadSaveData_import_droparea ~ .overwrap").on('dragenter', () => { 60 | $form.addClass('is-dragover'); 61 | }); 62 | 63 | $form.on('drag dragstart dragend dragover dragenter dragleave drop', (e) => { 64 | e.preventDefault(); 65 | e.stopPropagation(); 66 | }) 67 | .on('dragover dragenter', () => { 68 | $form.addClass('is-dragover'); 69 | }) 70 | .on('dragleave dragend drop', () => { 71 | $form.removeClass('is-dragover'); 72 | }) 73 | .on('drop', (e) => { 74 | droppedFiles = e.originalEvent.dataTransfer.files; 75 | 76 | if($("#loadSaveData_import_target").val() == "allData"){ 77 | if(/application\/x-gzip/.test(file.type)){ 78 | loadSaveData_import_uploadfiles(droppedFiles); 79 | } 80 | }else if($("#loadSaveData_import_target").val() == "mapData"){ 81 | if(/\.msv$/.test(file.name)){ 82 | loadSaveData_import_uploadfiles(droppedFiles); 83 | } 84 | }else{ 85 | if(/\.sav$/.test(file.name)){ 86 | loadSaveData_import_uploadfiles(droppedFiles); 87 | } 88 | } 89 | }); 90 | })($form); 91 | 92 | function loadSaveData_import_uploadfiles(droppedFiles){ 93 | for(file of droppedFiles){ 94 | new Promise((success, error)=>{ 95 | let fr = new FileReader(); 96 | 97 | fr.onload = success; 98 | 99 | fr.readAsArrayBuffer(file); 100 | }).then((r) => { 101 | console.log(r); 102 | console.log(file); 103 | let data = new Uint8Array(r.target.result); 104 | if($("#loadSaveData_import_target").val() == "allData"){ 105 | ddf.loadAllSaveData(file.name, data).then((r) => { 106 | $("#window_loadSaveData_import").hide(); 107 | }); 108 | }else if($("#loadSaveData_import_target").val() == "all"){ 109 | ddf.load(file.name, data).then((r) => { 110 | $("#window_loadSaveData_import").hide(); 111 | }); 112 | }else if($("#loadSaveData_import_target").val() == "mapData"){ 113 | ddf.load(file.name, data, ["map", "mapMask", "mapMarker"]).then((r) => { 114 | $("#window_loadSaveData_import").hide(); 115 | }); 116 | }else{ 117 | ddf.load(file.name, data, $("#loadSaveData_import_target").val().split(",")).then((r) => { 118 | $("#window_loadSaveData_import").hide(); 119 | }); 120 | } 121 | }); 122 | } 123 | $("#window_loadSaveData_import").hide(); 124 | } 125 | 126 | $("#window_loadSaveData_import .overwrap a").on('click', (e) => { 127 | if($("#loadSaveData_import_target").val() == "allData"){ 128 | $("#window_loadSaveData_import .overwrap :file").attr("accept", ".tar.gz"); 129 | }else if($("#loadSaveData_import_target").val() == "mapData"){ 130 | $("#window_loadSaveData_import .overwrap :file").attr("accept", ".msv"); 131 | }else{ 132 | $("#window_loadSaveData_import .overwrap :file").attr("accept", ".sav"); 133 | } 134 | $("#window_loadSaveData_import .overwrap :file").click(); 135 | return false; 136 | }); 137 | 138 | 139 | $("#btn_mapload").on('click', (e) => { 140 | $("#loadSaveData_import_target").val("mapData"); 141 | 142 | $("#window_loadSaveData_import").show().css("zIndex", "151"); 143 | $(".draggable:not(#window_loadSaveData_import)").css("zIndex", "150"); 144 | $("#window_loadSaveData").hide(); 145 | }); -------------------------------------------------------------------------------- /src/js/window/loginCheck.js: -------------------------------------------------------------------------------- 1 | $("#loginCheck_close, #loginCheck_close2").on('click', (e) => { 2 | $("#window_loginCheck").hide(); 3 | }); 4 | 5 | ddf.cmd.loginCheck_show = loginCheck_show; 6 | function loginCheck_show(roomNumber){ 7 | room = ddf.roomInfos[roomNumber] 8 | 9 | $("#loginCheck_roomNumber").val(roomNumber); 10 | $("#loginCheck_playRoomName").text(room.playRoomName); 11 | if(room.canVisit){ 12 | $("#loginCheck_canVisit").show(); 13 | }else{ 14 | $("#loginCheck_canVisit").hide(); 15 | } 16 | if(room.passwordLockState){ 17 | $("#loginCheck_passwordLockState").show(); 18 | }else{ 19 | $("#loginCheck_passwordLockState").hide(); 20 | } 21 | $("[name=isVisit][value=0]").prop("checked"); 22 | $("#loginCheck_password").val(""); 23 | 24 | $("#window_loginCheck").show().css("zIndex", 151); 25 | $(".draggable:not(#window_loginCheck)").css("zIndex", 150); 26 | } 27 | 28 | $("#loginCheck_send").on('click', (e) => { 29 | roomNumber = parseInt($("#loginCheck_roomNumber").val()); 30 | ddf.loginPassword(roomNumber, $("#loginCheck_password").val(), $("[name=isVisit]:checked").val()==1).then((r) => { 31 | if(r.resultText == "OK"){ 32 | ddf.cmd.checkRoomStatus(parseInt($("#loginCheck_roomNumber").val()),$("[name=isVisit]:checked").val()==1,$("#loginCheck_password").val()); 33 | }else{ 34 | alert("パスワードが違います。"); 35 | } 36 | }); 37 | }); -------------------------------------------------------------------------------- /src/js/window/magicRangeDD4th.js: -------------------------------------------------------------------------------- 1 | $("#btn_rangedd4").on("click", (e) => { 2 | ddf.cmd.magicRangeDD4th_show(""); 3 | }); 4 | 5 | $("#magicRangeDD4th_close, #magicRangeDD4th_close2").on('click', (e) => { 6 | $("#window_magicRangeDD4th").hide(); 7 | }); 8 | 9 | sp_param = require("../.option.spectrum.json"); 10 | sp_param.change = (c) => { 11 | $("#magicRangeDD4th_color").val(c.toHex()); 12 | }; 13 | $("#magicRangeDD4th_color2").spectrum(sp_param); 14 | 15 | ddf.cmd.magicRangeDD4th_show = magicRangeDD4th_show 16 | function magicRangeDD4th_show(imgId, x = 0, y = 0){ 17 | if(character = ddf.characters[imgId]){ 18 | character = character.data; 19 | $("#window_magicRangeDD4th .title").text("魔法範囲変更(D&D4版)"); 20 | $("#magicRangeDD4th_send").text("変更"); 21 | }else{ 22 | index = 0; 23 | reg = /^(\d+)$/; 24 | for(item in ddf.characters){ 25 | if(v = reg.exec(ddf.characters[item].data.name)){ 26 | index = Math.max(index, parseInt(v[1])) 27 | } 28 | } 29 | character = { 30 | type: "magicRangeMarkerDD4th", 31 | name: index + 1, 32 | rangeType: "closeBurstDD4th", 33 | feets: 15, 34 | color: 0, 35 | timeRange: 1, 36 | info: "", 37 | isHide: false, 38 | size: 0, 39 | x: x, 40 | y: y, 41 | counters: {}, 42 | statusAlias: {}, 43 | createRound: ddf.roomState.roundTimeData.round, 44 | draggable: true, 45 | imageName: "", 46 | imgId: "0", 47 | initiative: ddf.roomState.roundTimeData.initiative, 48 | rotation: 0, 49 | size: 0 50 | }; 51 | $("#window_magicRangeDD4th .title").text("魔法範囲作成(D&D4版)"); 52 | $("#magicRangeDD4th_send").text("追加"); 53 | } 54 | $("#magicRangeDD4th_imgId").val(character.imgId); 55 | $("#magicRangeDD4th_name").val(character.name); 56 | $("#magicRangeDD4th_rangeType").val(character.rangeType); 57 | $("#magicRangeDD4th_feets").val(character.feets / 5); 58 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 59 | $("#magicRangeDD4th_color").val(color); 60 | $("#magicRangeDD4th_color2").spectrum("set", "#"+color); 61 | $("#magicRangeDD4th_timeRange").val(character.timeRange); 62 | $("#magicRangeDD4th_info").val(character.info); 63 | $("#magicRangeDD4th_isHide").prop("checked", !character.isHide); 64 | 65 | $("#window_magicRangeDD4th").show().css("zIndex", 151); 66 | $(".draggable:not(#window_magicRangeDD4th)").css("zIndex", 150); 67 | } 68 | 69 | $("#magicRangeDD4th_send").on('click', (e) => { 70 | if(character = ddf.characters[$("#magicRangeDD4th_imgId").val()]){ 71 | 72 | character.data.name = $("#magicRangeDD4th_name").val(); 73 | character.data.rangeType = $("#magicRangeDD4th_rangeType").val(); 74 | character.data.feets = $("#magicRangeDD4th_feets").val() * 5; 75 | character.data.color = parseInt("0x"+$("#magicRangeDD4th_color").val()); 76 | character.data.timeRange = $("#magicRangeDD4th_timeRange").val(); 77 | character.data.info = $("#magicRangeDD4th_info").val(); 78 | character.data.isHide = !$("#magicRangeDD4th_isHide").prop("checked"); 79 | 80 | ddf.changeCharacter(character.data).then((r) => { 81 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 82 | $("#window_magicRangeDD4th").hide(); 83 | }); 84 | }else{ 85 | 86 | character = { 87 | type: "magicRangeMarkerDD4th", 88 | /*name: index + 1, 89 | rangeType: "closeBurstDD4th", 90 | feets: 15, 91 | color: 0, 92 | timeRange: 1, 93 | info: "", 94 | isHide: false,*/ 95 | size: 0, 96 | x: 1, 97 | y: 1, 98 | counters: {}, 99 | statusAlias: {}, 100 | createRound: ddf.roomState.roundTimeData.round, 101 | draggable: true, 102 | imageName: "", 103 | imgId: "0", 104 | initiative: ddf.roomState.roundTimeData.initiative, 105 | rotation: 0, 106 | size: 0 107 | }; 108 | character.name = $("#magicRangeDD4th_name").val(); 109 | character.rangeType = $("#magicRangeDD4th_rangeType").val(); 110 | character.feets = $("#magicRangeDD4th_feets").val() * 5; 111 | character.color = parseInt("0x"+$("#magicRangeDD4th_color").val()); 112 | character.timeRange = $("#magicRangeDD4th_timeRange").val(); 113 | character.info = $("#magicRangeDD4th_info").val(); 114 | character.isHide = !$("#magicRangeDD4th_isHide").prop("checked"); 115 | 116 | ddf.addCharacter(character).then((r) => { 117 | $("#window_magicRangeDD4th").hide(); 118 | ddf.cmd.initiative_sort(true); 119 | }); 120 | } 121 | }); 122 | -------------------------------------------------------------------------------- /src/js/window/magicRangeLH.js: -------------------------------------------------------------------------------- 1 | $("#btn_rangelh").on("click", (e) => { 2 | ddf.cmd.magicRangeLH_show("0"); 3 | }); 4 | 5 | $("#magicRangeLH_close, #magicRangeLH_close2").on('click', (e) => { 6 | $("#window_magicRangeLH").hide(); 7 | }); 8 | 9 | sp_param = require("../.option.spectrum.json"); 10 | sp_param.change = (c) => { 11 | $("#magicRangeLH_color").val(c.toHex()); 12 | }; 13 | $("#magicRangeLH_color2").spectrum(sp_param); 14 | 15 | ddf.cmd.magicRangeLH_show = magicRangeLH_show; 16 | function magicRangeLH_show(imgId, x = 0, y = 0){ 17 | if(character = ddf.characters[imgId]){ 18 | character = character.data; 19 | $("#window_magicRangeLH .title").text("攻撃範囲変更"); 20 | $("#magicRangeLH_send").text("変更"); 21 | }else{ 22 | index = 0; 23 | reg = /^(\d+)$/; 24 | for(item in ddf.characters){ 25 | if(v = reg.exec(ddf.characters[item].data.name)){ 26 | index = Math.max(index, parseInt(v[1])) 27 | } 28 | } 29 | character = { 30 | type: "LogHorizonRange", 31 | name: index + 1, 32 | range: 1, 33 | color: 0, 34 | size: 0, 35 | x: x, 36 | y: y, 37 | draggable: true, 38 | imageName: "", 39 | imgId: "0", 40 | rotation: 0, 41 | size: 0 42 | }; 43 | $("#window_magicRangeLH .title").text("攻撃範囲追加"); 44 | $("#magicRangeLH_send").text("追加"); 45 | } 46 | $("#magicRangeLH_imgId").val(character.imgId); 47 | $("#magicRangeLH_name").val(character.name); 48 | $("#magicRangeLH_range").val(character.range); 49 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 50 | $("#magicRangeLH_color").val(color); 51 | $("#magicRangeLH_color2").spectrum("set", "#"+color); 52 | 53 | $("#window_magicRangeLH").show().css("zIndex", 151); 54 | $(".draggable:not(#window_magicRangeLH)").css("zIndex", 150); 55 | } 56 | 57 | $("#magicRangeLH_send").on('click', (e) => { 58 | if(character = ddf.characters[$("#magicRangeLH_imgId").val()]){ 59 | 60 | character.data.name = $("#magicRangeLH_name").val(); 61 | character.data.range = $("#magicRangeLH_range").val(); 62 | character.data.color = parseInt("0x"+$("#magicRangeLH_color").val()); 63 | 64 | ddf.changeCharacter(character.data).then((r) => { 65 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 66 | $("#window_magicRangeLH").hide(); 67 | }); 68 | }else{ 69 | 70 | character = { 71 | type: "LogHorizonRange", 72 | size: 0, 73 | x: 1, 74 | y: 1, 75 | draggable: true, 76 | imageName: "", 77 | imgId: "0", 78 | rotation: 0, 79 | size: 0 80 | }; 81 | character.name = $("#magicRangeLH_name").val(); 82 | character.range = $("#magicRangeLH_range").val(); 83 | character.color = parseInt("0x"+$("#magicRangeLH_color").val()); 84 | 85 | ddf.addCharacter(character).then((r) => { 86 | $("#window_magicRangeLH").hide(); 87 | }); 88 | } 89 | }); 90 | -------------------------------------------------------------------------------- /src/js/window/magicRangeMG.js: -------------------------------------------------------------------------------- 1 | $("#btn_rangemg").on("click", (e) => { 2 | ddf.cmd.magicRangeMG_show("0"); 3 | }); 4 | 5 | $("#magicRangeMG_close, #magicRangeMG_close2").on('click', (e) => { 6 | $("#window_magicRangeMG").hide(); 7 | }); 8 | 9 | sp_param = require("../.option.spectrum.json"); 10 | sp_param.change = (c) => { 11 | $("#magicRangeMG_color").val(c.toHex()); 12 | }; 13 | $("#magicRangeMG_color2").spectrum(sp_param); 14 | 15 | ddf.cmd.magicRangeMG_show = magicRangeMG_show; 16 | function magicRangeMG_show(imgId, x = 0, y = 0){ 17 | if(character = ddf.characters[imgId]){ 18 | character = character.data; 19 | $("#window_magicRangeMG .title").text("攻撃範囲変更"); 20 | $("#magicRangeMG_send").text("変更"); 21 | }else{ 22 | index = 0; 23 | reg = /^(\d+)$/; 24 | for(item in ddf.characters){ 25 | if(v = reg.exec(ddf.characters[item].data.name)){ 26 | index = Math.max(index, parseInt(v[1])) 27 | } 28 | } 29 | character = { 30 | type: "MetallicGuardianDamageRange", 31 | name: index + 1, 32 | maxRange: 1, 33 | minRange: 0, 34 | color: 0, 35 | size: 0, 36 | x: x, 37 | y: y, 38 | draggable: true, 39 | imageName: "", 40 | imgId: "0", 41 | rotation: 0 42 | }; 43 | $("#window_magicRangeMG .title").text("攻撃範囲追加"); 44 | $("#magicRangeMG_send").text("追加"); 45 | } 46 | $("#magicRangeMG_imgId").val(character.imgId); 47 | $("#magicRangeMG_name").val(character.name); 48 | $("#magicRangeMG_maxRange").val(character.maxRange); 49 | $("#magicRangeMG_minRange").val(character.minRange); 50 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 51 | $("#magicRangeMG_color").val(color); 52 | $("#magicRangeMG_color2").spectrum("set", "#"+color); 53 | 54 | $("#window_magicRangeMG").show().css("zIndex", 151); 55 | $(".draggable:not(#window_magicRangeMG)").css("zIndex", 150); 56 | } 57 | 58 | $("#magicRangeMG_send").on('click', (e) => { 59 | if(character = ddf.characters[$("#magicRangeMG_imgId").val()]){ 60 | 61 | character.data.name = $("#magicRangeMG_name").val(); 62 | character.data.maxRange = $("#magicRangeMG_maxRange").val(); 63 | character.data.minRange = $("#magicRangeMG_minRange").val(); 64 | character.data.color = parseInt("0x"+$("#magicRangeMG_color").val()); 65 | 66 | ddf.changeCharacter(character.data).then((r) => { 67 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 68 | $("#window_magicRangeMG").hide(); 69 | }); 70 | }else{ 71 | 72 | character = { 73 | type: "MetallicGuardianDamageRange", 74 | minRange: 0, 75 | maxRange: 0, 76 | x: 1, 77 | y: 1, 78 | draggable: true, 79 | imageName: "", 80 | imgId: "0", 81 | rotation: 0 82 | }; 83 | character.name = $("#magicRangeMG_name").val(); 84 | character.maxRange = $("#magicRangeMG_maxRange").val(); 85 | character.minRange = $("#magicRangeMG_minRange").val(); 86 | character.color = parseInt("0x"+$("#magicRangeMG_color").val()); 87 | 88 | ddf.addCharacter(character).then((r) => { 89 | $("#window_magicRangeMG").hide(); 90 | }); 91 | } 92 | }); 93 | -------------------------------------------------------------------------------- /src/js/window/magicRangeMarker.js: -------------------------------------------------------------------------------- 1 | $("#btn_rangedd3").on("click", (e) => { 2 | ddf.cmd.magicRangeMarker_show(""); 3 | }); 4 | 5 | $("#magicRangeMarker_close, #magicRangeMarker_close2").on('click', (e) => { 6 | $("#window_magicRangeMarker").hide(); 7 | }); 8 | 9 | sp_param = require("../.option.spectrum.json"); 10 | sp_param.change = (c) => { 11 | $("#magicRangeMarker_color").val(c.toHex()); 12 | }; 13 | $("#magicRangeMarker_color2").spectrum(sp_param); 14 | 15 | ddf.cmd.magicRangeMarker_show = magicRangeMarker_show 16 | function magicRangeMarker_show(imgId, x = 0, y = 0){ 17 | if(character = ddf.characters[imgId]){ 18 | character = character.data; 19 | $("#window_magicRangeMarker .title").text("魔法範囲変更"); 20 | $("#magicRangeMarker_send").text("変更"); 21 | }else{ 22 | index = 0; 23 | reg = /^(\d+)$/; 24 | for(item in ddf.characters){ 25 | if(v = reg.exec(ddf.characters[item].data.name)){ 26 | index = Math.max(index, parseInt(v[1])) 27 | } 28 | } 29 | character = { 30 | type: "magicRangeMarker", 31 | name: index + 1, 32 | rangeType: "circle", 33 | feets: 5, 34 | color: 0, 35 | timeRange: 1, 36 | info: "", 37 | isHide: false, 38 | size: 0, 39 | x: x, 40 | y: y, 41 | counters: {}, 42 | statusAlias: {}, 43 | createRound: ddf.roomState.roundTimeData.round, 44 | draggable: true, 45 | imageName: "", 46 | imgId: "0", 47 | initiative: ddf.roomState.roundTimeData.initiative, 48 | rotation: 0, 49 | size: 0 50 | }; 51 | $("#window_magicRangeMarker .title").text("魔法範囲作成"); 52 | $("#magicRangeMarker_send").text("追加"); 53 | } 54 | $("#magicRangeMarker_imgId").val(character.imgId); 55 | $("#magicRangeMarker_name").val(character.name); 56 | $("#magicRangeMarker_rangeType").val(character.rangeType); 57 | $("#magicRangeMarker_feets").val(character.feets); 58 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 59 | $("#magicRangeMarker_color").val(color); 60 | $("#magicRangeMarker_color2").spectrum("set", "#"+color); 61 | $("#magicRangeMarker_timeRange").val(character.timeRange); 62 | $("#magicRangeMarker_info").val(character.info); 63 | $("#magicRangeMarker_isHide").prop("checked", !character.isHide); 64 | 65 | $("#window_magicRangeMarker").show().css("zIndex", 151); 66 | $(".draggable:not(#window_magicRangeMarker)").css("zIndex", 150); 67 | } 68 | 69 | $("#magicRangeMarker_send").on('click', (e) => { 70 | if(character = ddf.characters[$("#magicRangeMarker_imgId").val()]){ 71 | 72 | character.data.name = $("#magicRangeMarker_name").val(); 73 | character.data.rangeType = $("#magicRangeMarker_rangeType").val(); 74 | character.data.feets = $("#magicRangeMarker_feets").val(); 75 | character.data.color = parseInt("0x"+$("#magicRangeMarker_color").val()); 76 | character.data.timeRange = $("#magicRangeMarker_timeRange").val(); 77 | character.data.info = $("#magicRangeMarker_info").val(); 78 | character.data.isHide = !$("#magicRangeMarker_isHide").prop("checked"); 79 | 80 | ddf.changeCharacter(character.data).then((r) => { 81 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 82 | $("#window_magicRangeMarker").hide(); 83 | }); 84 | }else{ 85 | 86 | character = { 87 | type: "magicRangeMarker", 88 | /*name: index + 1, 89 | rangeType: "closeBurstDD4th", 90 | feets: 15, 91 | color: 0, 92 | timeRange: 1, 93 | info: "", 94 | isHide: false,*/ 95 | size: 0, 96 | x: 1, 97 | y: 1, 98 | counters: {}, 99 | statusAlias: {}, 100 | createRound: ddf.roomState.roundTimeData.round, 101 | draggable: true, 102 | imageName: "", 103 | imgId: "0", 104 | initiative: ddf.roomState.roundTimeData.initiative, 105 | rotation: 0, 106 | size: 0 107 | }; 108 | character.name = $("#magicRangeMarker_name").val(); 109 | character.rangeType = $("#magicRangeMarker_rangeType").val(); 110 | character.feets = $("#magicRangeMarker_feets").val(); 111 | character.color = parseInt("0x"+$("#magicRangeMarker_color").val()); 112 | character.timeRange = $("#magicRangeMarker_timeRange").val(); 113 | character.info = $("#magicRangeMarker_info").val(); 114 | character.isHide = !$("#magicRangeMarker_isHide").prop("checked"); 115 | 116 | ddf.addCharacter(character).then((r) => { 117 | $("#window_magicRangeMarker").hide(); 118 | ddf.cmd.initiative_sort(true); 119 | }); 120 | } 121 | }); 122 | -------------------------------------------------------------------------------- /src/js/window/magicTimer.js: -------------------------------------------------------------------------------- 1 | $("#btn_magictimer").on("click", (e) => { 2 | ddf.cmd.magicTimer_show(""); 3 | }); 4 | 5 | $("#magicTimer_close, #magicTimer_close2").on('click', (e) => { 6 | $("#window_magicTimer").hide(); 7 | }); 8 | 9 | ddf.cmd.magicTimer_show = magicTimer_show 10 | function magicTimer_show(imgId){ 11 | if(character = ddf.characters[imgId]){ 12 | character = character.data; 13 | $("#window_magicTimer .title").text("魔法タイマー変更"); 14 | $("#magicTimer_send").text("変更"); 15 | }else{ 16 | index = 0; 17 | reg = /^(\d+)$/; 18 | for(item in ddf.characters){ 19 | if(v = reg.exec(ddf.characters[item].data.name)){ 20 | index = Math.max(index, parseInt(v[1])) 21 | } 22 | } 23 | character = { 24 | type: "MagicTimer", 25 | name: index + 1, 26 | createRound: ddf.roomState.roundTimeData.round, 27 | timeRange: 1, 28 | initiative: ddf.roomState.roundTimeData.initiative, 29 | info: "", 30 | counters: {}, 31 | statusAlias: {}, 32 | imgId: "0", 33 | rotation: 0 34 | }; 35 | $("#window_magicTimer .title").text("魔法タイマー作成"); 36 | $("#magicTimer_send").text("追加"); 37 | } 38 | $("#magicTimer_imgId").val(character.imgId); 39 | $("#magicTimer_name").val(character.name); 40 | $("#magicTimer_timeRange").val(character.timeRange); 41 | $("#magicTimer_createRound").val(character.createRound); 42 | $("#magicTimer_initiative").val(character.initiative); 43 | $("#magicTimer_info").val(character.info); 44 | 45 | $("#window_magicTimer").show().css("zIndex", 151); 46 | $(".draggable:not(#window_magicTimer)").css("zIndex", 150); 47 | } 48 | 49 | $("#magicTimer_send").on('click', (e) => { 50 | if(character = ddf.characters[$("#magicTimer_imgId").val()]){ 51 | 52 | character.data.name = $("#magicTimer_name").val(); 53 | character.data.timeRange = $("#magicTimer_timeRange").val(); 54 | character.data.createRound = $("#magicTimer_createRound").val(); 55 | character.data.initiative = $("#magicTimer_initiative").val(); 56 | character.data.info = $("#magicTimer_info").val(); 57 | 58 | ddf.changeCharacter(character.data).then((r) => { 59 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character.data], "dummy\t"]]}); 60 | $("#window_magicTimer").hide(); 61 | }); 62 | }else{ 63 | 64 | character = { 65 | type: "MagicTimer", 66 | counters: {}, 67 | statusAlias: {}, 68 | imgId: "0" 69 | }; 70 | character.name = $("#magicTimer_name").val(); 71 | character.timeRange = $("#magicTimer_timeRange").val(); 72 | character.createRound = $("#magicTimer_createRound").val(); 73 | character.initiative = $("#magicTimer_initiative").val(); 74 | character.info = $("#magicTimer_info").val(); 75 | 76 | ddf.addCharacter(character).then((r) => { 77 | $("#window_magicTimer").hide(); 78 | ddf.cmd.initiative_sort(true); 79 | }); 80 | } 81 | }); 82 | -------------------------------------------------------------------------------- /src/js/window/mapChange.js: -------------------------------------------------------------------------------- 1 | $("#btn_mapchange").on("click", (e) => { 2 | mapChange_show(); 3 | }); 4 | 5 | $("#window_mapChange input").on('change', mapChange_previewUpdate); 6 | sp_param = require("../.option.spectrum.json"); 7 | sp_param.change = (c) => { 8 | $("#mapChange_color").val(c.toHex()); 9 | mapChange_previewUpdate(); 10 | }; 11 | $("#mapChange_color2").spectrum(sp_param); 12 | 13 | function mapChange_show(){ 14 | $("#window_mapChange").show().css("zIndex", 151); 15 | $(".draggable:not(#window_mapChange)").css("zIndex", 150); 16 | 17 | color = new tinycolor("rgb("+[ddf.roomState.mapData.gridColor / 65536 & 0xFF,ddf.roomState.mapData.gridColor / 256 & 0xFF,ddf.roomState.mapData.gridColor & 0xFF]+")").toHex(); 18 | $("#mapChange_width").val(ddf.roomState.mapData.xMax); 19 | $("#mapChange_height").val(ddf.roomState.mapData.yMax); 20 | $("#mapChange_isAlternately").prop("checked", ddf.roomState.mapData.isAlternately); 21 | //ddf.roomState.mapData.mirrored 22 | $("#mapChange_gridInterval").val(ddf.roomState.mapData.gridInterval); 23 | $("#mapChange_color").val(color); 24 | $("#mapChange_color2").spectrum("set", "#"+color); 25 | switch(ddf.roomState.mapData.mapType){ 26 | case "imageGraphic": 27 | $("#mapChange_imageSource").val(ddf.roomState.mapData.imageSource); 28 | if($("#mapChange_imageSource").val() == "image/whiteBack.png"){ 29 | $("#mapChange_blank").prop("checked", true); 30 | }else{ 31 | $("#mapChange_blank").prop("checked", false); 32 | } 33 | $("#mapChange_mirrored").prop("checked", ddf.roomState.mapData.mirrored); 34 | } 35 | 36 | mapChange_previewUpdate(); 37 | } 38 | 39 | function mapChange_previewUpdate(){ 40 | param = { 41 | x: $("#mapChange_width").val(), 42 | y: $("#mapChange_height").val(), 43 | border: true, 44 | alt: $("#mapChange_isAlternately").prop("checked"), 45 | num: true, 46 | size: $("#mapChange_gridInterval").val(), 47 | color: "#"+$("#mapChange_color").val() 48 | }; 49 | zoom = Math.min(1, 7.26 / param.y,8 / param.x); 50 | $("#mapChange_preview").css("transform", `scale(${zoom})`); 51 | $("#mapChange_grid, #mapChange_map").css({width: param.x * 50, height: param.y * 50}); 52 | $("#mapChange_grid").attr("data", "img/grid.svg?"+$.map(param, (v,k) => {return k+"="+v;}).join("&")); 53 | $("#mapChange_map").attr("src", ddf.base_url + ($("#mapChange_blank").prop("checked")?"image/whiteBack.png":$("#mapChange_imageSource").val())); 54 | if($("#mapChange_mirrored").prop("checked")){ 55 | $("#mapChange_map").addClass("mirrored"); 56 | }else{ 57 | $("#mapChange_map").removeClass("mirrored"); 58 | } 59 | } 60 | 61 | $("#mapChange_close, #mapChange_close2").on("click", (e) => { 62 | $("#mapChange_image").show(); 63 | $("#mapChange_imageSelect").hide(); 64 | $("#window_mapChange").hide(); 65 | }); 66 | 67 | $("#mapChange_imageChange").on('click', (e) => { 68 | $("#mapChange_image").hide(); 69 | $("#mapChange_imageSelect").show(); 70 | 71 | 72 | ddf.getImageTagsAndImageList().then((r) => { 73 | tagList = ["(全て)"]; 74 | ddf.images = r; 75 | for(item of ddf.images.imageList){ 76 | if(ddf.images.tagInfos[item]){ 77 | for(tag of ddf.images.tagInfos[item].tags){ 78 | if(tag == ""){continue;} 79 | tagList.includes(tag) || tagList.push(tag); 80 | } 81 | } 82 | } 83 | 84 | $("#mapChange_tagbox").empty(); 85 | for(item of tagList){ 86 | $("#mapChange_tagbox").append($(``)); 87 | } 88 | mapChange_setTag(tagList[0]); 89 | }); 90 | }); 91 | 92 | $("#mapChange_tagbox").on('change', (e) => { 93 | mapChange_setTag($("#mapChange_tagbox").val()); 94 | }); 95 | 96 | function mapChange_setTag(tag){ 97 | $("#mapChange_imagearea").empty(); 98 | let password = $("#mapChange_password").val(); 99 | for(item of ddf.images.imageList){ 100 | if(ddf.images.tagInfos[item]){ 101 | if((tag == "(全て)" || ddf.images.tagInfos[item].tags.includes(tag)) && (ddf.images.tagInfos[item].password == "" || ddf.images.tagInfos[item].password == password)){ 102 | $("#mapChange_imagearea").append($(`
`)); 103 | } 104 | }else if(tag == "(全て)"){ 105 | $("#mapChange_imagearea").append($(`
`)); 106 | } 107 | } 108 | } 109 | $(document).on('click', '#mapChange_imagearea div img', (e) => { 110 | let img = $(e.currentTarget).attr("src"); 111 | let tag = ddf.images.tagInfos[img.replace(ddf.base_url, "")].tags.join(" "); 112 | if(match = /縦(\d+)横(\d+)/.exec(tag)){ 113 | $("#mapChange_height").val(match[1]); 114 | $("#mapChange_width").val(match[2]); 115 | } 116 | $("#mapChange_imageSource").val(img.replace(ddf.base_url, "")); 117 | $("#mapChange_blank").prop("checked", false); 118 | $("#mapChange_mirrored").prop("checked", $("#mapChange_mirrored2").prop("checked")); 119 | mapChange_previewUpdate(); 120 | }); 121 | 122 | $("#mapChange_btnpassword").on('click', (e) => { 123 | $("#mapChange_btnpassword").hide(); 124 | $("#mapChange_password").show().focus(); 125 | }); 126 | 127 | $("#mapChange_password").on('focusout', (e) => { 128 | $("#mapChange_btnpassword").show(); 129 | $("#mapChange_password").hide(); 130 | mapChange_setTag($("#mapChange_tagbox").val()); 131 | }).on('keydown', (e) => { 132 | if(e.keyCode == 13){ 133 | $("#mapChange_password").blur(); 134 | } 135 | }); 136 | 137 | $("#mapChange_send").on('click', (e) => { 138 | ddf.changeMap( 139 | "imageGraphic", 140 | $("#mapChange_blank").prop("checked")?"image/whiteBack.png":$("#mapChange_imageSource").val(), 141 | $("#mapChange_width").val(), 142 | $("#mapChange_height").val(), 143 | $("#mapChange_gridInterval").val(), 144 | $("#mapChange_isAlternately").prop("checked"), 145 | $("#mapChange_mirrored").prop("checked"), 146 | parseInt("0x"+$("#mapChange_color").val()), 147 | ddf.roomState.mapData.mapMarksAlpha, 148 | ddf.roomState.mapData.mapMarks).then((r) => { 149 | $("#mapChange_image").show(); 150 | $("#mapChange_imageSelect").hide(); 151 | $("#window_mapChange").hide(); 152 | }); 153 | }); -------------------------------------------------------------------------------- /src/js/window/mapMarker.js: -------------------------------------------------------------------------------- 1 | $("#btn_mapMarker").on("click", (e) => { 2 | ddf.mapMarker_show(""); 3 | }); 4 | 5 | $("#window_mapMarker .slider").slider({min: 0,max: 1, step:0.05, stop: (e, ui) => { 6 | $("#mapMarker_alpha").val(ui.value); 7 | mapMarker_previewUpdate(); 8 | } 9 | }); 10 | 11 | $("#window_mapMarker input").on('change', mapMarker_previewUpdate); 12 | sp_param = require("../.option.spectrum.json"); 13 | sp_param.change = (c) => { 14 | $("#mapMarker_color").val(c.toHex()); 15 | mapMarker_previewUpdate(); 16 | }; 17 | $("#mapMarker_color2").spectrum(sp_param); 18 | 19 | ddf.cmd.mapMarker_show = mapMarker_show; 20 | function mapMarker_show(imgId){ 21 | $("#window_mapMarker").show().css("zIndex", 151); 22 | $(".draggable:not(#window_mapMarker)").css("zIndex", 150); 23 | 24 | var character; 25 | if(ddf.characters[imgId] != null){ 26 | character = ddf.characters[imgId].data; 27 | $("#mapMarker_change").show(); 28 | $("#mapMarker_create").hide(); 29 | $("#mapMarker_preview").addClass("edit"); 30 | $("#mapMarker_title").text("マップマーカー変更"); 31 | }else{ 32 | index = 0; 33 | reg = /^(\d+)$/; 34 | for(item in ddf.characters){ 35 | if(v = reg.exec(ddf.characters[item].data.name)){ 36 | index = Math.max(index, parseInt(v[1])) 37 | } 38 | } 39 | 40 | character = { 41 | type: "mapMarker", 42 | name: index + 1, 43 | width: 1, 44 | height: 1, 45 | color: 0, 46 | imgId: "", 47 | isPaint: false, 48 | draggable: true, 49 | rotation: 0, 50 | message: "", 51 | x: 0, 52 | y: 0 53 | } 54 | 55 | $("#mapMarker_change").hide(); 56 | $("#mapMarker_create").show(); 57 | $("#mapMarker_preview").removeClass("edit"); 58 | $("#mapMarker_title").text("マップマーカー作成"); 59 | } 60 | 61 | $("#mapMarker_imgId").val(character.imgId); 62 | 63 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 64 | $("#mapMarker_width").val(character.width); 65 | $("#mapMarker_height").val(character.height); 66 | $("#mapMarker_color").val(color); 67 | $("#mapMarker_color2").spectrum("set", "#"+color); 68 | $("#mapMarker_message").val(character.message); 69 | $("#mapMarker_isPaint").prop("checked", character.isPaint); 70 | $("#mapMarker_draggable").prop("checked", !character.draggable); 71 | 72 | mapMarker_previewUpdate(); 73 | } 74 | 75 | function mapMarker_previewUpdate(){ 76 | zoom = Math.min(1, 4.6 / $("#mapMarker_width").val(),4.8 / $("#mapMarker_height").val()); 77 | $("#mapMarker_preview").css("transform", `scale(${zoom})`); 78 | $("#mapMarker_preview").css({ 79 | width: $("#mapMarker_width").val() * 50, 80 | height: $("#mapMarker_height").val() * 50, 81 | backgroundColor: $("#mapMarker_isPaint").prop("checked")?"#"+$("#mapMarker_color").val():"" 82 | }); 83 | color = parseInt("0x" + $("#mapMarker_color").val()); 84 | refColor = [255 - (color / 65536 & 0xFF), 255 - (color / 256 & 0xFF), 255 - (color & 0xFF)]; 85 | $("#mapMarker_preview .message").text($("#mapMarker_message").val()); 86 | $("#mapMarker_preview .message").css({ 87 | color: "rgb("+refColor+")" 88 | }); 89 | } 90 | 91 | $("#mapMarker_close, #mapMarker_close2").on("click", (e) => { 92 | $("#window_mapMarker").hide(); 93 | }); 94 | 95 | var click = { 96 | x:0, 97 | y:0 98 | }; 99 | 100 | $("#mapMarker_preview").draggable({ 101 | start: (event) => { 102 | click.x = event.clientX; 103 | click.y = event.clientY; 104 | }, 105 | helper: () => { 106 | let obj = $("#mapMarker_preview").clone(); 107 | obj.appendTo("#mapSurface"); 108 | return obj; 109 | }, 110 | drag: (event, ui) => { 111 | // This is the parameter for scale() 112 | var zoom = ddf.roomState.zoom; 113 | 114 | var original = ui.originalPosition; 115 | 116 | // jQuery will simply use the same object we alter here 117 | ui.position = { 118 | left: (event.clientX - click.x + original.left) / zoom, 119 | top: (event.clientY - click.y + original.top ) / zoom 120 | }; 121 | if(ddf.roomState.viewStateInfo.isSnapMovablePiece){ 122 | if(ddf.roomState.mapData.isAlternately && ddf.roomState.mapData.gridInterval % 2 == 1){ 123 | if((Math.floor(ui.position.top / 50 / ddf.roomState.mapData.gridInterval) & 1)){ 124 | ui.position = { 125 | left: ((Math.floor(ui.position.left / 25) | 1) ^ 1) * 25, 126 | top: Math.floor(ui.position.top / 50) * 50 127 | }; 128 | }else{ 129 | ui.position = { 130 | left: (Math.floor(ui.position.left / 25) | 1) * 25, 131 | top: Math.floor(ui.position.top / 50) * 50 132 | }; 133 | } 134 | }else{ 135 | ui.position = { 136 | left: Math.floor(ui.position.left / 50) * 50, 137 | top: Math.floor(ui.position.top / 50) * 50 138 | }; 139 | } 140 | } 141 | }, 142 | stop: (event, ui) => { 143 | character = { 144 | type: "mapMarker", 145 | width: $("#mapMarker_width").val(), 146 | height: $("#mapMarker_height").val(), 147 | color: parseInt("0x"+$("#mapMarker_color").val()), 148 | message: $("#mapMarker_message").val(), 149 | isPaint: $("#mapMarker_isPaint").prop("checked"), 150 | imgId: "", 151 | draggable: !$("#mapMarker_draggable").prop("checked"), 152 | rotation: 0, 153 | x: ui.position.left / 50, 154 | y: ui.position.top / 50 155 | }; 156 | ddf.addCharacter(character); 157 | if(!$("#mapMarker_multiple").prop("checked")){ 158 | $("#window_mapMarker").hide(); 159 | } 160 | }, 161 | cancel: ".edit" 162 | }); 163 | 164 | 165 | $("#mapMarker_send").on('click', (e) => { 166 | imgId = $("#mapMarker_imgId").val(); 167 | character = ddf.characters[imgId].data; 168 | 169 | character.color = parseInt("0x"+$("#mapMarker_color").val()); 170 | character.width = $("#mapMarker_width").val(); 171 | character.height = $("#mapMarker_height").val(); 172 | character.message = $("#mapMarker_message").val(); 173 | character.isPaint = $("#mapMarker_isPaint").prop("checked"); 174 | character.draggable = !$("#mapMarker_draggable").prop("checked"); 175 | 176 | ddf.changeCharacter(character).then((r) => { 177 | ddf.characters[imgId].data = character; 178 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character], "dummy\t"]]}); 179 | $("#window_mapMarker").hide(); 180 | }); 181 | }); -------------------------------------------------------------------------------- /src/js/window/mapMask.js: -------------------------------------------------------------------------------- 1 | $("#btn_mapmask").on("click", (e) => { 2 | ddf.mapMask_show(""); 3 | }); 4 | 5 | $("#window_mapMask .slider").slider({min: 0,max: 1, step:0.05, stop: (e, ui) => { 6 | $("#mapMask_alpha").val(ui.value); 7 | mapMask_previewUpdate(); 8 | } 9 | }); 10 | 11 | $("#window_mapMask input").on('change', mapMask_previewUpdate); 12 | sp_param = require("../.option.spectrum.json"); 13 | sp_param.change = (c) => { 14 | $("#mapMask_color").val(c.toHex()); 15 | mapMask_previewUpdate(); 16 | }; 17 | $("#mapMask_color2").spectrum(sp_param); 18 | 19 | ddf.mapMask_show = (imageId) => { 20 | $("#window_mapMask").show().css("zIndex", 151); 21 | $(".draggable:not(#window_mapMask)").css("zIndex", 150); 22 | 23 | var character; 24 | if(ddf.characters[imageId] != null){ 25 | character = ddf.characters[imageId].data; 26 | $("#mapMask_change").show(); 27 | $("#mapMask_create").hide(); 28 | $("#mapMask_preview").addClass("edit"); 29 | $("#mapMask_title").text("マスク変更"); 30 | }else{ 31 | index = 0; 32 | reg = /^(\d+)$/; 33 | for(item in ddf.characters){ 34 | if(v = reg.exec(ddf.characters[item].data.name)){ 35 | index = Math.max(index, parseInt(v[1])) 36 | } 37 | } 38 | 39 | character = { 40 | type: "mapMask", 41 | name: index + 1, 42 | width: 3, 43 | height: 3, 44 | color: 0, 45 | alpha: 1, 46 | imgId: "", 47 | draggable: true, 48 | rotation: 0, 49 | x: 0, 50 | y: 0 51 | } 52 | 53 | $("#mapMask_change").hide(); 54 | $("#mapMask_create").show(); 55 | $("#mapMask_preview").removeClass("edit"); 56 | $("#mapMask_title").text("マスク作成"); 57 | } 58 | 59 | $("#mapMask_alpha").val(character.alpha); 60 | $("#window_mapMask .slider").slider("value", character.alpha); 61 | $("#mapMask_imageId").val(character.imgId); 62 | $("#mapMask_name").val(character.name); 63 | 64 | color = new tinycolor("rgb("+[character.color / 65536 & 0xFF,character.color / 256 & 0xFF,character.color & 0xFF]+")").toHex(); 65 | $("#mapMask_width").val(character.width); 66 | $("#mapMask_height").val(character.height); 67 | $("#mapMask_color").val(color); 68 | $("#mapMask_color2").spectrum("set", "#"+color); 69 | 70 | mapMask_previewUpdate(); 71 | } 72 | 73 | function mapMask_previewUpdate(){ 74 | zoom = Math.min(1, 4.6 / $("#mapMask_width").val(),4.8 / $("#mapMask_height").val()); 75 | $("#mapMask_preview").css("transform", `scale(${zoom})`); 76 | $("#mapMask_preview").css({ 77 | width: $("#mapMask_width").val() * 50, 78 | height: $("#mapMask_height").val() * 50, 79 | opacity: $("#mapMask_alpha").val(), 80 | backgroundColor: "#"+$("#mapMask_color").val() 81 | }); 82 | } 83 | 84 | $("#mapMask_close, #mapMask_close2").on("click", (e) => { 85 | $("#window_mapMask").hide(); 86 | }); 87 | 88 | var click = { 89 | x:0, 90 | y:0 91 | }; 92 | 93 | $("#mapMask_preview").draggable({ 94 | start: (event) => { 95 | click.x = event.clientX; 96 | click.y = event.clientY; 97 | }, 98 | helper: () => { 99 | let obj = $("#mapMask_preview").clone(); 100 | obj.appendTo("#mapSurface"); 101 | return obj; 102 | }, 103 | drag: (event, ui) => { 104 | // This is the parameter for scale() 105 | var zoom = ddf.roomState.zoom; 106 | 107 | var original = ui.originalPosition; 108 | 109 | // jQuery will simply use the same object we alter here 110 | ui.position = { 111 | left: (event.clientX - click.x + original.left) / zoom, 112 | top: (event.clientY - click.y + original.top ) / zoom 113 | }; 114 | if(ddf.roomState.viewStateInfo.isSnapMovablePiece){ 115 | if(ddf.roomState.mapData.isAlternately && ddf.roomState.mapData.gridInterval % 2 == 1){ 116 | if((Math.floor(ui.position.top / 50 / ddf.roomState.mapData.gridInterval) & 1)){ 117 | ui.position = { 118 | left: ((Math.floor(ui.position.left / 25) | 1) ^ 1) * 25, 119 | top: Math.floor(ui.position.top / 50) * 50 120 | }; 121 | }else{ 122 | ui.position = { 123 | left: (Math.floor(ui.position.left / 25) | 1) * 25, 124 | top: Math.floor(ui.position.top / 50) * 50 125 | }; 126 | } 127 | }else{ 128 | ui.position = { 129 | left: Math.floor(ui.position.left / 50) * 50, 130 | top: Math.floor(ui.position.top / 50) * 50 131 | }; 132 | } 133 | } 134 | }, 135 | stop: (event, ui) => { 136 | character = { 137 | type: "mapMask", 138 | name: $("#mapMask_name").val(), 139 | width: $("#mapMask_width").val(), 140 | height: $("#mapMask_height").val(), 141 | color: parseInt("0x"+$("#mapMask_color").val()), 142 | alpha: $("#mapMask_alpha").val(), 143 | imgId: "", 144 | draggable: true, 145 | rotation: 0, 146 | x: ui.position.left / 50, 147 | y: ui.position.top / 50 148 | }; 149 | ddf.addCharacter(character); 150 | if($("#mapMask_multiple").prop("checked")){ 151 | $("#mapMask_name").val(parseInt($("#mapMask_name").val()) + 1) 152 | }else{ 153 | $("#window_mapMask").hide(); 154 | } 155 | }, 156 | cancel: ".edit" 157 | }); 158 | 159 | 160 | $("#mapMask_send").on('click', (e) => { 161 | imageId = $("#mapMask_imageId").val(); 162 | character = ddf.characters[imageId].data; 163 | 164 | character.name = $("#mapMask_name").val(); 165 | character.color = parseInt("0x"+$("#mapMask_color").val()); 166 | character.width = $("#mapMask_width").val(); 167 | character.height = $("#mapMask_height").val(); 168 | character.alpha = $("#mapMask_alpha").val(); 169 | 170 | ddf.changeCharacter(character).then((r) => { 171 | ddf.characters[imageId].data = character; 172 | ddf.cmd.refresh_parseRecordData({record: [[0, "changeCharacter", [character], "dummy\t"]]}); 173 | $("#window_mapMask").hide(); 174 | }); 175 | }); -------------------------------------------------------------------------------- /src/js/window/memo.js: -------------------------------------------------------------------------------- 1 | 2 | $("#btn_memo").on('click', (e) => { 3 | ddf.cmd.openMemo(""); 4 | }); 5 | 6 | $("#memo_close, #memo_close2").on('click', (e) => { 7 | $("#window_memo").hide(); 8 | }); 9 | 10 | ddf.cmd.openMemo = openMemo; 11 | function openMemo(imgId){ 12 | $("#memo_imgId").val(imgId); 13 | if(!(character = ddf.characters[$("#memo_imgId").val()])){ 14 | character = { 15 | color: 0xFFFFFF, 16 | draggable: true, 17 | height: 1, 18 | width: 1, 19 | rotation: 0, 20 | x: 0, 21 | y: 0, 22 | type: "Memo", 23 | isPaint: true, 24 | imgId: "", 25 | message: "" 26 | }; 27 | $("#window_memo .title").text("共有メモ"); 28 | $("#memo_send").text("追加"); 29 | }else{ 30 | character = character.data; 31 | $("#window_memo .title").text("共有メモ変更"); 32 | $("#memo_send").text("変更"); 33 | } 34 | 35 | $("#memo_tab, #memo_edit").empty(); 36 | count = 0; 37 | for(item of character.message.split("\t|\t")){ 38 | tab = $(`
${encode(item.split("\r")[0])}
`); 39 | obj = $(``); 40 | del = $(``); 41 | del.on('click', ((tab, obj)=>{return (e)=>{ 42 | tab.remove(); 43 | obj.remove(); 44 | }})(tab, obj)); 45 | tab.append(del); 46 | tab.on('click', ((obj) => {return (e) => { 47 | if(!$(this).hasClass("active")){ 48 | $("#memo_tab .active, #memo_edit .active").removeClass("active"); 49 | $(obj).addClass("active"); 50 | $(this).addClass("active"); 51 | } 52 | }})(obj)); 53 | $("#memo_tab").append(tab); 54 | $("#memo_edit").append(obj); 55 | count++; 56 | } 57 | $("#memo_tab .tab:eq(0), #memo_edit textarea:eq(0)").addClass("active"); 58 | $("#window_memo").show().css("zIndex", 151); 59 | $(".draggable:not(#window_memo)").css("zIndex", 150); 60 | } 61 | 62 | $("#memo_send").on('click', (e) => { 63 | arr = $.map($("#memo_edit textarea"),(v)=>{return $(v).val().replace("\n","\r");}); 64 | message = arr.join("\t|\t") 65 | if(character = ddf.characters[$("#memo_imgId").val()]){ 66 | character.data.message = message; 67 | ddf.changeCharacter(character.data).then((r) => { 68 | title = character.data.message.split("\r")[0]; 69 | ar = character.data.message.split(/\t\|\t/); 70 | if(ar.length > 1){ 71 | body = ar.map((v)=>{return `[${v.split("\r")[0]}]`}).join("
") 72 | }else{ 73 | body = character.data.message.replace("\r", "
"); 74 | } 75 | character.obj.html(`${encode(title)}
${encode(body)}
`); 76 | }); 77 | }else{ 78 | character = { 79 | color: 0xFFFFFF, 80 | draggable: true, 81 | height: 1, 82 | width: 1, 83 | rotation: 0, 84 | x: 0, 85 | y: 0, 86 | type: "Memo", 87 | isPaint: true, 88 | imgId: "0", 89 | message: message 90 | } 91 | ddf.addCharacter(character); 92 | } 93 | $("#window_memo").hide(); 94 | }); 95 | 96 | $("#memo_addTab").on('click', (e) => { 97 | count = $("#memo_tab .tab").length; 98 | tab = $(`
${count + 1}
`); 99 | obj = $(``); 100 | del = $(``); 101 | del.on('click', ((tab, obj)=>{return (e)=>{ 102 | tab.remove(); 103 | obj.remove(); 104 | }})(tab, obj)); 105 | tab.append(del); 106 | tab.on('click', ((obj) => {return (e) => { 107 | if(!$(this).hasClass("active")){ 108 | $("#memo_tab .active, #memo_edit .active").removeClass("active"); 109 | $(obj).addClass("active"); 110 | $(this).addClass("active"); 111 | } 112 | }})(obj)); 113 | $("#memo_tab .active, #memo_edit .active").removeClass("active"); 114 | $("#memo_tab").append(tab); 115 | $("#memo_edit").append(obj); 116 | }); 117 | 118 | $(document).on('keyup', "#memo_edit textarea", (e) => { 119 | $("#memo_tab .active").text(encode($("#memo_edit .active").val().split("\n")[0])); 120 | }); -------------------------------------------------------------------------------- /src/js/window/playRoomInfo.js: -------------------------------------------------------------------------------- 1 | 2 | $("#btn_member").on('click', (e) => { 3 | playRoomInfo_show(); 4 | }); 5 | 6 | $("#playRoomInfo_close, #playRoomInfo_close2").on('click', (e) => { 7 | $("#window_playRoomInfo").hide(); 8 | }); 9 | 10 | playRoomInfo_show = () => { 11 | text = `【${ddf.roomState.playRoomName}】\n\nログイン中メンバー一覧\n`; 12 | 13 | text += ddf.roomState.loginUserInfo.map((v)=>{return `${v.userName}(ユーザーID:${v.userId.split("\t")[0]})`}).join("\n"); 14 | 15 | $("#playRoomInfo_main").html(text.replace(/\n/g, "
")); 16 | $("#window_playRoomInfo").show(); 17 | }; 18 | -------------------------------------------------------------------------------- /src/js/window/roomDelete.js: -------------------------------------------------------------------------------- 1 | 2 | ddf.cmd.roomDelete_show = roomDelete_show; 3 | function roomDelete_show(roomNumber) { 4 | $("#roomDelete_roomNumber").val(roomNumber); 5 | $("#roomDelete_Number").text(roomNumber); 6 | $("#roomDelete_password").val(""); 7 | 8 | $("#window_roomDelete").show().css("zIndex", 151); 9 | $(".draggable:not(#window_roomDelete)").css("zIndex", 150); 10 | } 11 | 12 | $("#roomDelete_close, #roomDelete_close2").on('click', (e) => { 13 | $("#window_roomDelete").hide(); 14 | }); 15 | 16 | $("#roomDelete_send, #roomDelete_close2").on('click', (e) => { 17 | ddf.removePlayRoom( 18 | $("#roomDelete_roomNumber").val(), 19 | true, 20 | $("#roomDelete_password").val() 21 | ).then((r) => { 22 | if(r.deletedRoomNumbers.length > 0){ 23 | $("#window_roomDelete").hide(); 24 | $("#playRoomInfos tbody").empty(); 25 | ddf.cmd.getPlayRoomInfo(); 26 | }else{ 27 | alert("パスワードが違います。"); 28 | } 29 | }); 30 | }); -------------------------------------------------------------------------------- /src/js/window/saveChatLog.js: -------------------------------------------------------------------------------- 1 | $("#btn_savechatlog, #btn_savelog2").on("click", (e) => { 2 | saveChatLog_show(); 3 | }); 4 | 5 | $("#saveChatLog_close, #saveChatLog_close2").on("click", (e) => { 6 | $("#window_saveChatLog").hide(); 7 | }); 8 | 9 | $("[name=saveChatLog_mode]").on('click', (e) => { 10 | if($("[name=saveChatLog_mode]:checked").val()=="HTML"){ 11 | $("#saveChatLog_fontSize").prop('disabled', false); 12 | $("#saveChatLog_lineHeight").prop('disabled', false); 13 | }else{ 14 | $("#saveChatLog_fontSize").prop('disabled', true); 15 | $("#saveChatLog_lineHeight").prop('disabled', true); 16 | } 17 | }); 18 | 19 | function saveChatLog_show(){ 20 | $("#saveChatLog_channel").empty(); 21 | 22 | index = 0; 23 | for(item of ddf.roomState.chatChannelNames){ 24 | obj = $(``); 25 | obj.on('click', ((channel)=>{return (e)=>{saveChatLog(channel);}})(index++)); 26 | $("#saveChatLog_channel").append(obj); 27 | } 28 | 29 | $("#window_saveChatLog").show().css("zIndex", "151"); 30 | $(".draggable:not(#window_saveChatLog)").css("zIndex", "150"); 31 | } 32 | 33 | $("#saveChatLog_saveAll").on('click', (e) => {saveChatLog()}); 34 | 35 | function saveChatLog(channel = 'all'){ 36 | if(channel != 'all'){ 37 | list = chatlog.filter((v)=>{return v[0]==channel}); 38 | }else{ 39 | list = chatlog.filter((v)=>{return v[1]!=null}); 40 | } 41 | if($("[name=saveChatLog_mode]:checked").val()=="HTML"){ 42 | style = ` 43 | #container * { 44 | font-size: ${$("#saveChatLog_fontSize").val()}; 45 | line-height: ${$("#saveChatLog_lineHeight").val()}; 46 | } 47 | 48 | #container dt { 49 | display: inline-block; 50 | } 51 | 52 | #container dd { 53 | margin-left: 0; 54 | display: inline; 55 | vertical-align:top; 56 | } 57 | 58 | #container dd:after { 59 | content:''; 60 | display:block; 61 | } 62 | `; 63 | body = list.map((v)=>{return `
[${encode(v[1])}]${ddf.userState.showTime?dateFormat(new Date(v[2]*1000), "HH:MM")+":":""}
${encode(v[4])}:${encode(v[5]).replace(/\n/g,"
")}
`}).join("\n"); 64 | output = ` 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 |
73 |
74 | ${body} 75 |
76 |
77 | 78 | 79 | `; 80 | let buffer = new Buffer(output); 81 | let filename = `chatlog_${dateFormat(new Date, "yymmdd_HHMMss")}.html`; 82 | a = $(`.`); 83 | $(document.body).append(a); 84 | a[0].click(); 85 | a.remove(); 86 | }else{ 87 | output = list.map((v)=>{return `[${v[1]}]${ddf.userState.showTime?dateFormat(new Date(v[2]*1000), "HH:MM")+":":""}${v[4]}:${v[5]}`}).join("\n"); 88 | 89 | let buffer = new Buffer(output); 90 | let filename = `chatlog_${dateFormat(new Date, "yymmdd_HHMMss")}.txt`; 91 | a = $(`.`); 92 | $(document.body).append(a); 93 | a[0].click(); 94 | a.remove(); 95 | } 96 | } -------------------------------------------------------------------------------- /src/js/window/upload.js: -------------------------------------------------------------------------------- 1 | 2 | $("#btn_imageupload").on("click", (e) => { 3 | $("#window_upload").show().css("zIndex", 151); 4 | $(".draggable:not(#window_upload)").css("zIndex", 150); 5 | }); 6 | 7 | var upload_uploadlist = []; 8 | 9 | let $form = $("#upload_droparea"); 10 | 11 | $("#upload_droparea ~ .overwrap").on('dragenter', () => { 12 | $form.addClass('is-dragover'); 13 | }); 14 | 15 | $form.on('drag dragstart dragend dragover dragenter dragleave drop', (e) => { 16 | e.preventDefault(); 17 | e.stopPropagation(); 18 | }) 19 | .on('dragover dragenter', () => { 20 | $form.addClass('is-dragover'); 21 | }) 22 | .on('dragleave dragend drop', () => { 23 | $form.removeClass('is-dragover'); 24 | }) 25 | .on('drop', (e) => { 26 | droppedFiles = e.originalEvent.dataTransfer.files; 27 | 28 | upload_uploadfiles(droppedFiles); 29 | }); 30 | 31 | $("#window_upload :file").on('change', (e) => { 32 | arr = []; 33 | for(item of $("#window_upload :file")[0].files){ 34 | arr.push(item); 35 | } 36 | upload_uploadfiles(arr); 37 | }); 38 | 39 | function upload_uploadfiles(droppedFiles){ 40 | upload_uploadlist = []; 41 | $("#upload_droparea").empty(); 42 | for(file of droppedFiles){ 43 | new Promise((success, error)=>{ 44 | let fr = new FileReader(); 45 | 46 | fr.onload = success; 47 | 48 | if(/image\/(gif|png|jpeg)/.test(file.type)){ 49 | fr.readAsArrayBuffer(file); 50 | } 51 | }).then(((file) => {return (r)=>{ 52 | let data = new Uint8Array(r.target.result); 53 | 54 | if(upload_uploadlist.length == 0){ 55 | $("#upload_droparea").empty(); 56 | } 57 | upload_uploadlist.push([file, data]); 58 | url = `data:${file.type};base64,${btoa(Array.from(data, e => String.fromCharCode(e)).join(""))}`; 59 | $("#upload_droparea").append(`
`); 60 | };})(file)); 61 | } 62 | } 63 | 64 | $("#upload_send").on('click', (e)=>{ 65 | $("#upload_result").text(""); 66 | for(file of upload_uploadlist){ 67 | ddf.uploadImageData( 68 | file[0].name, 69 | file[1], 70 | $("#upload_password").val(), 71 | $("#upload_tag").val().split(/[  ]/), 72 | $("#upload_private").val()=="1"?null:ddf.userState.room 73 | ).then(((name) => {return (r)=>{ 74 | $("#upload_result").text($("#upload_result").text() + name + ":" + r.resultText + "  "); 75 | };})(file[0].name)); 76 | } 77 | upload_uploadlist = []; 78 | }); 79 | 80 | $("#upload_tagbox").on('change', (e)=>{ 81 | $("#upload_tag").val($("#upload_tagbox").val()+" "); 82 | }); 83 | 84 | $("#upload_close, #upload_close2").on('click', (e)=>{ 85 | $("#window_upload").hide(); 86 | $("#upload_droparea").empty(); 87 | $("#upload_password").val(); 88 | $("#upload_btnpassword").text("パスワードなし"); 89 | }); 90 | 91 | $("#upload_btnpassword").on('click', (e) => { 92 | $("#upload_btnpassword").hide(); 93 | $("#upload_password").show().focus(); 94 | }); 95 | 96 | $("#upload_password").on('focusout', (e) => { 97 | $("#upload_btnpassword").show().text($("#upload_password").val()==""?"パスワードなし":"パスワードあり"); 98 | $("#upload_password").hide(); 99 | }).on('keydown', (e) => { 100 | if(e.keyCode == 13){ 101 | $("#upload_password").blur(); 102 | } 103 | }); 104 | 105 | $("#window_upload .overwrap a").on('click', (e) => { 106 | $("#window_upload .overwrap :file").click(); 107 | return false; 108 | }); 109 | -------------------------------------------------------------------------------- /src/js/window/uploadFile.js: -------------------------------------------------------------------------------- 1 | $("#btn_easyUpload").on('click', (e) => { 2 | 3 | $("#window_uploadFile").show().css("zIndex", "151"); 4 | $(".draggable:not(#window_uploadFile)").css("zIndex", "150"); 5 | }); 6 | 7 | $("#uploadFile_close, #uploadFile_close2").on('click', (e) => { 8 | $("#window_uploadFile").hide(); 9 | }); 10 | 11 | $("#window_uploadFile :file").on('change', (e) => { 12 | arr = []; 13 | for(item of $("#window_uploadFile :file")[0].files){ 14 | arr.push(item); 15 | } 16 | uploadFile_uploadfiles(arr); 17 | }); 18 | 19 | let $form = $("#uploadFile_droparea"); 20 | 21 | (($form) => { 22 | $("#uploadFile_droparea ~ .overwrap").on('dragenter', () => { 23 | $form.addClass('is-dragover'); 24 | }); 25 | 26 | $form.on('drag dragstart dragend dragover dragenter dragleave drop', (e) => { 27 | e.preventDefault(); 28 | e.stopPropagation(); 29 | }) 30 | .on('dragover dragenter', () => { 31 | $form.addClass('is-dragover'); 32 | }) 33 | .on('dragleave dragend drop', () => { 34 | $form.removeClass('is-dragover'); 35 | }) 36 | .on('drop', (e) => { 37 | droppedFiles = e.originalEvent.dataTransfer.files; 38 | 39 | uploadFile_uploadfiles(droppedFiles); 40 | }); 41 | })($form); 42 | 43 | function uploadFile_uploadfiles(droppedFiles){ 44 | for(file of droppedFiles){ 45 | new Promise((success, error)=>{ 46 | let fr = new FileReader(); 47 | 48 | fr.onload = success; 49 | 50 | fr.readAsArrayBuffer(file); 51 | }).then(((file) => {return (r) => { 52 | ddf.uploadFile(file.name, ddf.base_url, new Uint8Array(r.target.result)).then((r) => { 53 | if(r.resultText == "OK"){ 54 | ddf.sendChatMessage(0, "どどんとふ\t", `${ddf.userState.name}がファイルをアップロードしました \n ファイル名:${r.uploadFileInfo.fileName}\n URL:${r.uploadFileInfo.fileUploadUrl}`, "00aa00", true); 55 | }else{ 56 | console.log(r.resultText); 57 | } 58 | }); 59 | };})(file)); 60 | } 61 | $("#window_uploadFile").hide(); 62 | } 63 | 64 | $("#window_uploadFile .overwrap a").on('click', (e) => { 65 | $("#window_uploadFile .overwrap :file").click(); 66 | return false; 67 | }); 68 | 69 | -------------------------------------------------------------------------------- /src/js/window/version.js: -------------------------------------------------------------------------------- 1 | 2 | var version = require('../../../package.json').version; 3 | $("#btn_version, #btn_version2").on('click', (e) => { 4 | $("#version_DodontoF").text(ddf.info.version); 5 | $("#version_ddfjs").text(ddf.version); 6 | $("#version_ddfcli").text(version); 7 | $("#window_version").show().css("zIndex", 151); 8 | $(".draggable:not(#window_version)").css("zIndex", 150); 9 | }); 10 | 11 | $("#version_close").on('click', (e) => { 12 | $("#window_version").hide(); 13 | }); -------------------------------------------------------------------------------- /src/js/window/vote.js: -------------------------------------------------------------------------------- 1 | $("#btn_vote").on('click', (e) => { 2 | $("#vote_requiredCount").val(1); 3 | $("#vote_alerm").prop("checked", true); 4 | $("#vote_isSelect").hide(); 5 | $("#vote_number").text(ddf.roomState.loginUserInfo.length - 1); 6 | $("#vote_question").val(""); 7 | $("#window_vote").show().css("zIndex", 151); 8 | $(".draggable:not(#window_vote)").css("zIndex", 150); 9 | }); 10 | 11 | $("#window_vote [name=vote]").on("click", (e) => { 12 | if($("#vote_alerm").prop("checked")){ 13 | $("#vote_isSelect").hide(); 14 | }else{ 15 | $("#vote_isSelect").show(); 16 | } 17 | }); 18 | 19 | $("#vote_send").on("click", (e) => { 20 | if($("#vote_alerm").prop("checked")){ 21 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `###vote###{"question":"","isCallTheRoll":true,"callerId":"${ddf.info.uniqueId}","requiredCount":${$("#vote_requiredCount").val()}}`, ddf.userState.chatColor); 22 | }else{ 23 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `###vote###{"question":"${$("#vote_question").val()}","isCallTheRoll":false,"callerId":"${ddf.info.uniqueId}","requiredCount":${$("#vote_requiredCount").val()}}`, ddf.userState.chatColor); 24 | } 25 | $("#window_vote").hide(); 26 | }); 27 | 28 | $("#vote_close, #vote_close2").on('click', (e) => { 29 | $("#window_vote").hide(); 30 | }); 31 | 32 | ddf.cmd.vote_alerm_show = vote_alerm_show; 33 | function vote_alerm_show(){ 34 | $("#window_vote_alerm").show().css("zIndex", 151); 35 | $(".draggable:not(#window_vote_alerm)").css("zIndex", 150); 36 | } 37 | 38 | ddf.cmd.vote_select_show = vote_select_show; 39 | function vote_select_show(question){ 40 | $("#vote_select_text").text(question); 41 | $("#window_vote_select").show().css("zIndex", 151); 42 | $(".draggable:not(#window_vote_select)").css("zIndex", 150); 43 | } 44 | 45 | $("#vote_alerm_ok").on("click", (e) => { 46 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `###vote_replay_readyOK###{"voteReplay":4,"isCallTheRoll":true}`, ddf.userState.chatColor); 47 | $("#window_vote_alerm").hide(); 48 | }); 49 | $("#vote_select_agree").on("click", (e) => { 50 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `###vote_replay_readyOK###{"voteReplay":1,"isCallTheRoll":false}`, ddf.userState.chatColor); 51 | $("#window_vote_select").hide(); 52 | }); 53 | $("#vote_select_disagree").on("click", (e) => { 54 | ddf.sendChatMessage(0, ddf.userState.name+"\t", `###vote_replay_readyOK###{"voteReplay":2,"isCallTheRoll":false}`, ddf.userState.chatColor); 55 | $("#window_vote_select").hide(); 56 | }); -------------------------------------------------------------------------------- /src/pug/_lobby.pug: -------------------------------------------------------------------------------- 1 | #main 2 | include window/_createPlayRoom 3 | include window/_loginCheck 4 | include window/_loginNumber 5 | include window/_roomDelete 6 | #loginMessage_wrap 7 | #loginMessage 8 | #playRoomInfos 9 | table.sortable 10 | thead 11 | tr 12 | th No. 13 | th プレイルーム名 14 | th ゲームシステム 15 | th 入室人数 16 | th パスワード 17 | th 見学 18 | th 最終更新時刻 19 | th 削除 20 | tbody 21 | #command 22 | .row 23 | .i(style="width:33%;") 24 | .i あなたのお名前: 25 | .i 26 | input#login_name(value="ななしさん") 27 | .i(style="width:45%;") 28 | .i 現在のログイン状況: 29 | .i 30 | button#btn_loginNumber 31 | .i(style="width:20%;text-align:right;") 32 | .dropdown ヘルプ 33 | .dropdown-content 34 | button#btn_version バージョン 35 | button#btn_manual マニュアル 36 | button#btn_tutorial(disabled) チュートリアル動画 37 | button#btn_site オフィシャルサイトへ 38 | .row 39 | .i(style="width:33%;") 40 | .i 41 | button#btn_createPlayRoom 新規プレイルーム作成 42 | .i 43 | button#btn_removePlayRoom 指定プレイルームを削除 44 | .i(style="width:45%;") 45 | .i プレイルームNo. 46 | .i 47 | input#playRoomNo(value="0") 48 | .i 49 | button#btn_login ログイン 50 | .i(style="width:20%;text-align:right;") 51 | .i 52 | button#btn_extend(disabled) >>拡張機能 53 | -------------------------------------------------------------------------------- /src/pug/_playRoom.pug: -------------------------------------------------------------------------------- 1 | #main2 2 | include _playRoom_menu.pug 3 | #map.draggabletail 4 | #mapSurface 5 | object#mapGrid(type="image/svg+xml",data="img/grid.svg",style="pointer-events: none") 6 | img#mapDraw 7 | object#drawsPanel(type="image/svg+xml",data="img/draw.svg") 8 | img#mapimg 9 | #list_memo 10 | include window/_chat.pug 11 | include window/_initiative.pug 12 | include window/_mapChange.pug 13 | include window/_floorTile.pug 14 | include window/_graveyard.pug 15 | include window/_upload.pug 16 | include window/_uploadFile.pug 17 | include window/_mapMask.pug 18 | include window/_mapMarker.pug 19 | include window/_imageDelete.pug 20 | include window/_memo.pug 21 | include window/_help.pug 22 | include window/_magicRangeMarker.pug 23 | include window/_magicRangeDD4th.pug 24 | include window/_magicRangeLH.pug 25 | include window/_magicRangeMG.pug 26 | include window/_magicTimer.pug 27 | include window/_chit.pug 28 | include window/_saveChatLog.pug 29 | include window/_addCharacter.pug 30 | include window/_playRoomInfo.pug 31 | include window/_characterCutin.pug 32 | include window/_chatFont.pug 33 | include window/_chatPalette.pug 34 | include window/_loadSaveData.pug 35 | include window/_vote.pug 36 | include window/_alerm.pug 37 | include window/_diceBotTable.pug -------------------------------------------------------------------------------- /src/pug/_playRoom_menu.pug: -------------------------------------------------------------------------------- 1 | #menu 2 | .menuarea 3 | .dropdown ファイル 4 | .dropdown-content 5 | button#btn_save セーブ 6 | button#btn_load ロード 7 | hr 8 | button#btn_saveall 全データセーブ 9 | button#btn_loadall 全データロード(旧:シナリオデータ読み込み) 10 | hr 11 | button#btn_savechatlog チャットログ保存 12 | hr 13 | button#btn_startrecord(disabled) 録画開始 14 | button#btn_endrecord(disabled) 録画終了 15 | button#btn_cancelrecord(disabled) 録画キャンセル 16 | hr 17 | button#btn_logout ログアウト 18 | .dropdown 表示 19 | .dropdown-content 20 | .dropdown2 ウィンドウ 21 | .dropdown-content2 22 | button#btn_displaychat チャット表示 23 | button#btn_displaydice ダイス表示 24 | button#btn_displayinitiative イニシアティブ表示 25 | button#btn_displayresource(disabled) リソース表示 26 | hr 27 | button#btn_displaychatpalette チャットパレット表示 28 | button#btn_displaycounter(disabled) カウンターリモコン表示 29 | hr 30 | button#btn_displaycharacter 立絵表示 31 | button#btn_displaycutin(disabled) カットイン表示 32 | hr 33 | button#btn_displaygridnum 座標表示 34 | button#btn_displaygridline マス目表示 35 | hr 36 | button#btn_gridguide マス目にキャラクターを合わせる 37 | button#btn_adjustcharacter 立絵のサイズを自動調整する 38 | hr 39 | button#btn_changefont(disabled) フォントサイズ変更 40 | hr 41 | button#btn_resetwindow(disabled) ウィンドウ配置初期化 42 | button#btn_resetdisplay 表示状態初期化 43 | .dropdown コマ 44 | .dropdown-content 45 | button#btn_createcharacter キャラクター追加 46 | .dropdown2 範囲追加 47 | .dropdown-content2 48 | button#btn_rangedd3 魔法範囲追加(D&D3版) 49 | button#btn_rangedd4 魔法範囲追加(D&D4版) 50 | button#btn_rangelh ログホライズン用範囲 51 | button#btn_rangemg 攻撃範囲(メタリックガーディアン) 52 | button#btn_magictimer 魔法タイマー追加 53 | hr 54 | button#btn_createchit チット作成 55 | hr 56 | button#btn_graveyard 墓場 57 | button#btn_waitroom(disabled) キャラクター待合室 58 | hr 59 | button#btn_rotate(disabled) 回転マーカーを表示する 60 | .dropdown カード 61 | .dropdown-content 62 | button#btn_cardpickup(disabled) カードピックアップウィンドウ表示 63 | button#btn_cardlog(disabled) カード操作ログ表示 64 | hr 65 | button#btn_cardchange(disabled) カード配置の初期化 66 | hr 67 | button#btn_cardreset(disabled) カードの全削除 68 | .dropdown マップ 69 | .dropdown-content 70 | button#btn_mapchange マップ変更 71 | button#btn_maptile フロアタイル変更モード 72 | button#btn_mapmask マップマスク追加 73 | button#btn_mapmodify(disabled) 簡易マップ作成 74 | hr 75 | button#btn_mapsave マップ状態保存 76 | button#btn_mapload マップ切り替え 77 | .dropdown 画像 78 | .dropdown-content 79 | button#btn_imageupload ファイルアップローダー 80 | button#btn_camera(disabled) WEBカメラ撮影 81 | hr 82 | button#btn_imagetagedit(disabled) タグ編集 83 | button#btn_imagedelete 画像削除 84 | .dropdown ヘルプ 85 | .dropdown-content 86 | button#btn_version2 バージョン 87 | button#btn_manual2 マニュアル 88 | button#btn_tutorial2(disabled) チュートリアル動画 89 | button#btn_site2 オフィシャルサイトへ 90 | img#btn_zoomin(src="img/icons/zoom_in.png") 91 | img#btn_zoomout(src="img/icons/zoom_out.png") 92 | button#btn_member ルームNo.X:0名 93 | button#btn_memo 共有メモ 94 | button#btn_draw(disabled) 95 | img(src="img/icons/pencil.gif") 96 | | 手書き 97 | button#btn_graveyard2 墓場 98 | button#btn_logout2.pull-right 99 | img(src="img/icons/door_out.png") 100 | | ログアウト 101 | button#btn_screenshot(disabled).pull-right 102 | img(src="img/icons/camera.png") -------------------------------------------------------------------------------- /src/pug/index.pug: -------------------------------------------------------------------------------- 1 | doctype html 2 | html(lang='ja') 3 | head 4 | meta(charset='utf-8') 5 | meta(http-equiv="Content-Type",content="text/html; charset=UTF-8") 6 | meta(http-equiv="Pragma",content="no-cache") 7 | meta(http-equiv="Cache-Control",content="no-cache") 8 | meta(http-equiv="Expires",content="0") 9 | title どどんとふ 10 | script(src='js/jquery.min.js') 11 | script(src='js/loaders.css.js') 12 | script(src='https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js') 13 | script(src='js/jquery.tablesorter.min.js') 14 | script(src='js/jquery.contextMenu.js') 15 | script(src='js/colResizable-1.6.min.js') 16 | script(src='js/spectrum.js') 17 | script(src='js/lib/htmlspecialchars.js') 18 | script(src='js/lib/dateformat.min.js') 19 | script(src='js/lib/compare-versions.min.js') 20 | script(src='js/util.js') 21 | script(src='js/config.json') 22 | link(rel='stylesheet',href='js/loaders.css') 23 | link(rel='stylesheet',href='https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css') 24 | link(rel='stylesheet',href='js/jquery.contextMenu.css') 25 | link(rel='stylesheet',href='js/spectrum.css') 26 | link(rel='stylesheet',href='css/style.css') 27 | script(src='js/lib/ddf.js') 28 | script(src='js/index.js') 29 | body 30 | #container 31 | include _lobby.pug 32 | include _playRoom.pug 33 | include window/_version 34 | -------------------------------------------------------------------------------- /src/pug/window/_addCharacter.pug: -------------------------------------------------------------------------------- 1 | #window_addCharacter.draggable 2 | .bg 3 | div 4 | span.title キャラクター変更 5 | .pull-right#addCharacter_close2 × 6 | .body.dragprev 7 | .r.clearfix 8 | input(type="hidden")#addCharacter_imgId 9 | #addCharacter_preview 10 | input(type="hidden")#addCharacter_imageName 11 | #addCharacter_image 12 | #addCharacter_imageSelect 13 | .r 14 | #addCharacter_imagearea 15 | .r 16 | | 検索タグ 17 | select#addCharacter_tagbox 18 | button#addCharacter_btnpassword 隠し画像 19 | input#addCharacter_password 20 | input(type="checkbox")#addCharacter_mirrored 21 | |左右反転 22 | .r 23 | button(disabled) 画像切替設定 24 | .r 25 | table#addCharacter_counters 26 | .r 27 | .left-block 28 | .r 29 | label 名前: 30 | input#addCharacter_name 31 | .r 32 | label ドッグタグ: 33 | input#addCharacter_dogTag 34 | .r 35 | label サイズ: 36 | input(type="number",min=1,max=10,required)#addCharacter_size 37 | |   38 | input(type="checkbox")#addCharacter_isHide 39 | | マップマスクの下へ隠す 40 | .r 41 | label(style="position:relative") 参照URL: 42 | .helptext 設定するとコマの右クリックからURLを開けるようになります。 43 | input#addCharacter_url 44 | .right-block 45 | .r 46 | label その他: 47 | .pull-right(style="position:relative") 48 | button#addCharacter_alias ■ 49 | .helptext カウンターのチェック欄に名前を付ける 50 | .r 51 | textarea#addCharacter_info 52 | .r.center 53 | button#addCharacter_send 追加 54 | button#addCharacter_close キャンセル 55 | #window_addCharacter_sub.draggable 56 | .bg 57 | div 58 | span.title キャラクター置き場 59 | .pull-right#addCharacter_sub_close × 60 | .body.center 61 | .r 62 | #addCharacter_sub_name 63 | .r(style="position: relative") 64 | .characterFrame(style="position: relative;height: 50px;") 65 | .inner#addCharacter_sub_character 66 | .r 67 | input(type="checkbox")#addCharacter_sub_multiple 68 | | 連続作成 69 | -------------------------------------------------------------------------------- /src/pug/window/_alerm.pug: -------------------------------------------------------------------------------- 1 | #window_alerm.draggable 2 | .bg 3 | div 4 | span.title 目覚ましアラーム送信 5 | .pull-right#alerm_close2 × 6 | .body.dragprev 7 | .r 8 | label 送信先: 9 | select#alerm_name 10 | .r 11 | label 効果音: 12 | input#alerm_file 13 | .r 14 | label 発動は: 15 | input(type="number",min=0,max=86400,required)#alerm_second 16 | | 秒後 17 | .r.center 18 | button#alerm_send 実行 19 | button#alerm_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_characterCutin.pug: -------------------------------------------------------------------------------- 1 | #window_characterCutin.draggable 2 | .bg 3 | div 4 | span.title 立ち絵設定 5 | .pull-right#characterCutin_close2 × 6 | .body.dragprev 7 | .r 8 | button#characterCutin_create 追加 9 | button.pull-right#characterCutin_close 閉じる 10 | .r 11 | .table_wrap 12 | table 13 | tbody 14 | tr 15 | th 変更 16 | th 名前 17 | th 状態 18 | th 位置 19 | th ファイル 20 | th 削除 21 | #window_characterCutin_create.draggable 22 | .bg 23 | div 24 | span.title 立ち絵追加 25 | .pull-right#characterCutin_create_close2 × 26 | .body.dragprev 27 | input(type="hidden")#characterCutin_create_effectId 28 | .r.clearfix 29 | #characterCutin_create_preview 30 | input(type="hidden")#characterCutin_create_imageName 31 | #characterCutin_create_image 32 | #characterCutin_create_imageSelect 33 | .r 34 | #characterCutin_create_imagearea 35 | .r 36 | | 検索タグ 37 | select#characterCutin_create_tagbox 38 | button#characterCutin_create_btnpassword 隠し画像 39 | input#characterCutin_create_password 40 | input(type="checkbox")#characterCutin_create_mirrored 41 | |左右反転 42 | .r.center 43 | | 下記で設定した「キャラクター名」「状態」でチャットで発言すると立絵が表示されます。 44 | .r 45 | label キャラクター名: 46 | input#characterCutin_create_name 47 | .r 48 | label 状態: 49 | input#characterCutin_create_state 50 | .r 51 | label 表示位置(1:左端、12:右端): 52 | input(type="hidden")#characterCutin_create_leftIndex 53 | .slider 54 | select#characterCutin_create_motion 55 | option(value="") エフェクト無し 56 | option(value="zoom") 拡大・縮小 57 | option(value="shake") 車両 58 | option(value="walk") 歩行 59 | .r.center 60 | button#characterCutin_create_send 追加 61 | button.pull-right#characterCutin_create_close 閉じる -------------------------------------------------------------------------------- /src/pug/window/_chat.pug: -------------------------------------------------------------------------------- 1 | #window_chat.draggable.resizable 2 | .inner 3 | .bg チャット 4 | .wrap 5 | .body 6 | #tab.dragprev 7 | #log.dragprev 8 | .body2.dragprev 9 | .r 10 | | 名前 11 | input#chatname 12 | button.img#btn_private.disabled 13 | img(src="img/icons/key.png") 14 | .helptext 秘話機能有効化 15 | select#dicebot 16 | button.img#btn_help 17 | img(src="img/icons/icon_help.png") 18 | .helptext ダイスボットのヘルプを別ウィンドウで表示します。 19 | button.img#btn_diceBotTable 20 | img(src="img/icons/page_white_gear.png") 21 | .helptext ダイスボット表追加・変更・削除 22 | button.img#btn_novel.disabled 23 | img(src="img/icons/book_open.png") 24 | .helptext ログ表示をノベルゲーム風表示へ切り替える 25 | button.img#btn_chatDelete 26 | img(src="img/icons/page_white_delete.png") 27 | .helptext チャットログ全削除 28 | button.img#btn_chatFont 29 | img(src="img/icons/font.png") 30 | .helptext チャット文字設定 31 | button.img#btn_mute 32 | img(src="img/icons/sound.png") 33 | .helptext 音再生あり 34 | button.img#btn_vote 35 | img(src="img/icons/user_comment.png") 36 | .helptext 点呼/投票 37 | button.img#btn_alerm 38 | img(src="img/icons/bell.png") 39 | .helptext 目覚ましアラーム送信 40 | button.img#btn_cutinList.disabled 41 | img(src="img/icons/film.png") 42 | .helptext カットイン設定 43 | button.img#btn_characterList 44 | img(src="img/icons/user_edit.png") 45 | .helptext 立絵設定 46 | button.img#btn_easyUpload 47 | img(src="img/icons/page_white_get.png") 48 | .helptext 簡易ファイルアップローダー 49 | button.img#btn_talk.disabled 50 | img(src="img/icons/emoticon_smile.png") 51 | .helptext テキスト読み上げなし 52 | .r 53 | | 発言 54 | textarea#chattext 55 | div.btn_area 56 | button#btn_chatsend.fix 送信 57 | button#btn_savelog2.fix ログ保存 58 | include _diceResult.pug -------------------------------------------------------------------------------- /src/pug/window/_chatFont.pug: -------------------------------------------------------------------------------- 1 | #window_chatFont.draggable 2 | .bg 3 | div 4 | span.title チャット文字設定 5 | .pull-right#chatFont_close2 × 6 | .body.dragprev 7 | .row 8 | label 文字色: 9 | input(type="hidden")#chatFont_chatColor 10 | input#chatFont_chatColor2.colorpicker 11 | .row 12 | label 背景色: 13 | input(type="hidden")#chatFont_backgroundColor 14 | input#chatFont_backgroundColor2.colorpicker 15 | .row 16 | label 文字サイズ: 17 | input(type="number",min=8,max=72)#chatFont_fontSize 18 | .row 19 | label フォーマット: 20 | input(type="checkbox")#chatFont_showTime 21 | | 時刻表示 22 | .row 23 | label 別タブメッセージ: 24 | input(type="checkbox",disabled)#chatFont_showOtherTab 25 | | 表示する 26 | .row 27 | label タブの色: 28 | input(type="checkbox",disabled)#chatFont_tabColor 29 | | 色分けする 30 | .row.center 31 | button#chatFont_send 設定 32 | button#chatFont_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_chatPalette.pug: -------------------------------------------------------------------------------- 1 | #window_chatPalette.draggable.resizable 2 | .bg 3 | div 4 | span.title チャットパレット 5 | .body.dragprev 6 | .r 7 | #chatPalette_tabs.clearfix 8 | .r.left 9 | | 名前: 10 | input#chatPalette_senderName 11 | input(type="hidden")#chatPalette_color 12 | input#chatPalette_color2.colorpicker 13 | input.pull-right#chatPalette_tabName 14 | span.pull-right タブ名: 15 | .r 16 | input#chatPalette_chattext 17 | button#chatPalette_send 送信 18 | .r 19 | .wrap 20 | #chatPalette_main 21 | textarea#chatPalette_text 22 | .r.left 23 | button#chatPalette_edit 編集 24 | button#chatPalette_save セーブ 25 | button#chatPalette_load ロード 26 | button.pull-right#chatPalette_tabEdit タブ削除 27 | button.pull-right#chatPalette_tabAdd タブ追加 28 | #window_chatPalette_import.draggable 29 | .bg 30 | div 31 | span.title チャットパレットインポート 32 | .pull-right#chatPalette_import_close × 33 | .body.dragprev 34 | #chatPalette_import_droparea 35 | .overwrap 36 | input(type="file",multiple,accept="plain/text,application/json").hide 37 | a(href="#") ファイルを選択 38 | br 39 | |  または  40 | br 41 | | ファイルをドラッグアンドドロップ -------------------------------------------------------------------------------- /src/pug/window/_chit.pug: -------------------------------------------------------------------------------- 1 | #window_chit.draggable 2 | .bg 3 | div 4 | span#chit_title チット作成 5 | .pull-right#chit_close2 × 6 | .body.dragprev 7 | .r 8 | label 高さ: 9 | input(type="number",min="1",max="100",required)#chit_height.spinner 10 | label 幅: 11 | input(type="number",min="1",max="100",required)#chit_width.spinner 12 | label 説明: 13 | input#chit_info 14 | .r 15 | input(type="hidden")#chit_imageUrl 16 | #chit_preview.chitFrame 17 | .inner 18 | #chit_image 19 | .r.center 20 | button#chit_imageChange 画像変更 21 | #chit_imageSelect 22 | .r 23 | #chit_imagearea 24 | .r 25 | | 検索タグ 26 | select#chit_tagbox 27 | button#chit_btnpassword 隠し画像 28 | input#chit_password 29 | -------------------------------------------------------------------------------- /src/pug/window/_createPlayRoom.pug: -------------------------------------------------------------------------------- 1 | #window_createPlayRoom.draggable 2 | .bg 新規プレイルーム作成 3 | .body 4 | .r 5 | .i4 プレイルーム名: 6 | .i6 7 | input#playRoomName(value="仮プレイルーム(削除可能)").dragprev 8 | .r 9 | .i4 パスワード(空ならパスワード無し): 10 | .i6 11 | input#playRoomPassword(type="password").dragprev 12 | .r 13 | .i4 ゲームシステム: 14 | .i6 15 | select#playRoomGameType.dragprev 16 | .r 17 | button#createPlayRoom_extend(disabled).dragprev >>拡張機能 18 | .c 19 | .i 20 | #createPlayRoom_create.btn.dragprev 作成 21 | .i 22 | #createPlayRoom_close.btn.dragprev 閉じる -------------------------------------------------------------------------------- /src/pug/window/_diceBotTable.pug: -------------------------------------------------------------------------------- 1 | #window_diceBotTable.draggable 2 | .bg 3 | div 4 | span.title ダイスボット用表管理 5 | .pull-right#diceBotTable_close2 × 6 | .body.dragprev 7 | .r 8 | button#diceBotTable_create 新規作成 9 | button.pull-right#diceBotTable_close 閉じる 10 | .r 11 | .table_wrap 12 | table 13 | thead 14 | tr 15 | th 変更 16 | th コピー 17 | th ゲームシステム 18 | th コマンド名 19 | th 表タイトル 20 | th 削除 21 | tbody 22 | #window_diceBotTable_edit.draggable 23 | .bg 24 | div 25 | span#diceBotTable_edit_title ダイスボット表編集 26 | .pull-right#diceBotTable_edit_close2 × 27 | .body.dragprev 28 | .r 29 | label コマンド名: 30 | input#diceBotTable_edit_command 31 | label ダイス: 32 | input#diceBotTable_edit_dice 33 | label 表タイトル: 34 | input#diceBotTable_edit_titletext 35 | input(type="hidden")#diceBotTable_edit_originalCommand 36 | input(type="hidden")#diceBotTable_edit_originalGameType 37 | input(type="hidden")#diceBotTable_edit_copy 38 | .r 39 | select#diceBotTable_edit_gameType.pull-right 40 | label.pull-right ゲームシステム 41 | label 表内容: 42 | textarea#diceBotTable_edit_table 43 | .r 44 | button#diceBotTable_edit_send 作成 45 | button#diceBotTable_edit_close キャンセル 46 | button#diceBotTable_edit_sample.pull-right サンプル表示 -------------------------------------------------------------------------------- /src/pug/window/_diceResult.pug: -------------------------------------------------------------------------------- 1 | #characterCutIn 2 | #diceResult -------------------------------------------------------------------------------- /src/pug/window/_floorTile.pug: -------------------------------------------------------------------------------- 1 | #window_floorTile.draggable 2 | .bg 3 | div 4 | span#floorTile_title フロアタイル作成 5 | .pull-right#floorTile_close2 × 6 | .body.dragprev 7 | .r 8 | label 高さ: 9 | input(type="number",min="1",max="100",required)#floorTile_height.spinner 10 | label 幅: 11 | input(type="number",min="1",max="100",required)#floorTile_width.spinner 12 | .r 13 | input(type="hidden")#floorTile_imageUrl 14 | #floorTile_preview.floorTileFrame 15 | .inner 16 | #floorTile_image 17 | .r.center 18 | button#floorTile_imageChange 画像変更 19 | #floorTile_imageSelect 20 | .r 21 | #floorTile_imagearea 22 | .r 23 | | 検索タグ 24 | select#floorTile_tagbox 25 | button#floorTile_btnpassword 隠し画像 26 | input#floorTile_password 27 | -------------------------------------------------------------------------------- /src/pug/window/_graveyard.pug: -------------------------------------------------------------------------------- 1 | #window_graveyard.draggable 2 | .bg 3 | div 4 | span.title 墓場 5 | .pull-right#graveyard_close2 × 6 | .body.dragprev 7 | .row 8 | |名前 9 | select#graveyard_characters 10 | button#graveyard_reload 再読込 11 | .row 12 | button#graveyard_resurrect 復活 13 | button#graveyard_close キャンセル 14 | button#graveyard_clear 墓地を空にする -------------------------------------------------------------------------------- /src/pug/window/_help.pug: -------------------------------------------------------------------------------- 1 | #window_help.draggable 2 | .bg 3 | div 4 | span.title ダイスボット解説 5 | .pull-right#help_close × 6 | .body.dragprev 7 | .r 8 | pre#help_text -------------------------------------------------------------------------------- /src/pug/window/_imageDelete.pug: -------------------------------------------------------------------------------- 1 | #window_imageDelete.draggable 2 | .bg 3 | div 画像削除 4 | .pull-right#imageDelete_close2 × 5 | .body.dragprev 6 | .r 7 | #imageDelete_imagearea 8 | .r 9 | | 検索タグ 10 | select#imageDelete_tagbox 11 | button#imageDelete_btnpassword 隠し画像 12 | input#imageDelete_password 13 | .r 14 | button#imageDelete_delete 選択した画像を削除 15 | button#imageDelete_close キャンセル 16 | .r 17 | |結果 18 | #imageDelete_result 19 | -------------------------------------------------------------------------------- /src/pug/window/_initiative.pug: -------------------------------------------------------------------------------- 1 | #initiative.draggable.resizable 2 | #initiative_bg 3 | .row 4 | .i ラウンド: 5 | .i#round 0 6 | .i /イニシアティブ: 7 | .i#now_ini 0 8 | .row.dragprev 9 | button#initiative_prev 戻る 10 | button#initiative_next 次へ 11 | button#initiative_reset 戦闘開始 12 | button#initiative_change 設定 13 | div#wrap.dragprev 14 | div.tableSorter 15 | table 16 | thead 17 | tr 18 | tbody 19 | #window_initiative_edit.draggable 20 | .bg 21 | div 22 | span.title イニシアティブ表設定 23 | .pull-right#initiative_edit_close2 × 24 | .body.dragprev 25 | .row 26 | p カウンターに使用するパラメータ名をスペース区切りで入力してください。 27 | br 28 | | 戦闘に * (全角・半角どちらでも可)を付けて記述するとチェック欄になります。 29 | br 30 | | (注)この設定は同一プレイルームの全員に影響します。 31 | .row 32 | label カウンター名一覧: 33 | input#initiative_edit_value 34 | .hr 35 | .row.center 36 | button#initiative_edit_send 実行 37 | button#initiative_edit_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_loadSaveData.pug: -------------------------------------------------------------------------------- 1 | #window_loadSaveData.draggable 2 | .bg 3 | div 4 | span.title ロード 5 | .pull-right#loadSaveData_close2 × 6 | .body.dragprev 7 | .row 8 | input(type="radio",name="datatype",value="all") 9 | | 全データをロードする(現在のデータはすべて破棄されます) 10 | .row 11 | input(type="radio",name="datatype",value="part") 12 | | 一部データのみをロードする。 13 | .row 14 | input(type="checkbox",value="map") 15 | | マップを変更する 16 | .row 17 | | 以下は現状に該当データを追加します(現在のデータは保持されます) 18 | .row 19 | input(type="checkbox",value="floorTile") 20 | | フロアタイル 21 | .row 22 | input(type="checkbox",value="mapMask") 23 | | マップマスク 24 | .row 25 | input(type="checkbox",value="mapMarker") 26 | | マップマーカー 27 | .row 28 | input(type="checkbox",value="characterData") 29 | | キャラクター 30 | .row 31 | input(type="checkbox",value="characterWaitingRoom") 32 | | キャラクター待合室 33 | .row 34 | input(type="checkbox",value="magicRangeMarker,magicRangeMarkerDD4th") 35 | | 魔法範囲 36 | .row 37 | input(type="checkbox",value="Memo") 38 | | 共有メモ 39 | .row 40 | input(type="checkbox",value="standingGraphicInfos") 41 | | 立ち絵 42 | .row 43 | input(type="checkbox",value="cutIn") 44 | | カットイン 45 | .row 46 | input(type="checkbox",value="Card") 47 | | カード 48 | .row 49 | input(type="checkbox",value="initiative") 50 | | イニシアティブ表 51 | .row 52 | input(type="checkbox",value="resource") 53 | | リソース 54 | .row 55 | input(type="checkbox",value="diceBotTable") 56 | | ダイスボット表 57 | .row.center 58 | button#loadSaveData_send 実行 59 | button#loadSaveData_close キャンセル 60 | #window_loadSaveData_import.draggable 61 | .bg 62 | div 63 | span.title ロード 64 | .pull-right#loadSaveData_import_close × 65 | .body.dragprev 66 | input(type="hidden")#loadSaveData_import_target 67 | #loadSaveData_import_droparea 68 | .overwrap 69 | input(type="file",accept="").hide 70 | a(href="#") ファイルを選択 71 | br 72 | |  または  73 | br 74 | | ファイルをドラッグアンドドロップ -------------------------------------------------------------------------------- /src/pug/window/_loginCheck.pug: -------------------------------------------------------------------------------- 1 | #window_loginCheck.draggable 2 | .bg 3 | div 4 | span.title ログインチェック 5 | .pull-right#loginCheck_close2 × 6 | .body.dragprev 7 | input(type="hidden")#loginCheck_roomNumber 8 | .row 9 | label プレイルーム名: 10 | span#loginCheck_playRoomName 11 | .row#loginCheck_canVisit 12 | label 参加者ですか?見学者ですか?: 13 | input(type="radio",checked,name="isVisit",value="0") 14 | | 参加者  15 | input(type="radio",name="isVisit",value="1") 16 | | 見学者 17 | .row#loginCheck_passwordLockState 18 | label ログインパスワード: 19 | input(type="password")#loginCheck_password 20 | .row.center 21 | button#loginCheck_send 実行 22 | button#loginCheck_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_loginNumber.pug: -------------------------------------------------------------------------------- 1 | #window_loginNumber.draggable 2 | .bg ログイン状況 3 | .wrap 4 | .body 5 | .btn OK -------------------------------------------------------------------------------- /src/pug/window/_loginUser.pug: -------------------------------------------------------------------------------- 1 | #window_help.draggable 2 | .bg 3 | div 4 | span.title ダイスボット解説 5 | .pull-right#help_close × 6 | .body.dragprev 7 | .r 8 | pre#help_text -------------------------------------------------------------------------------- /src/pug/window/_magicRangeDD4th.pug: -------------------------------------------------------------------------------- 1 | #window_magicRangeDD4th.draggable 2 | .bg 3 | div 4 | span.title 魔法範囲作成(D&D4版) 5 | .pull-right#magicRangeDD4th_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#magicRangeDD4th_imgId 9 | label 名前: 10 | input#magicRangeDD4th_name 11 | .r 12 | label 範囲種別: 13 | select#magicRangeDD4th_rangeType 14 | option(value="closeBurstDD4th") 爆発 15 | option(value="blastDD4th") 噴射 16 | .r 17 | label 範囲(マス): 18 | input(type="number",min=1,max=100,required)#magicRangeDD4th_feets 19 | .r 20 | label 色: 21 | input(type="hidden")#magicRangeDD4th_color 22 | input#magicRangeDD4th_color2 23 | .r 24 | label 持続時間: 25 | input(type="number",min=1,max=99,required)#magicRangeDD4th_timeRange 26 | .r 27 | label その他: 28 | input#magicRangeDD4th_info 29 | .r 30 | input(type="checkbox",checked)#magicRangeDD4th_isHide 31 | |イニシアティブ表に表示する 32 | .r.center 33 | button#magicRangeDD4th_send 変更 34 | button#magicRangeDD4th_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_magicRangeLH.pug: -------------------------------------------------------------------------------- 1 | #window_magicRangeLH.draggable 2 | .bg 3 | div 4 | span.title 攻撃範囲追加 5 | .pull-right#magicRangeLH_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#magicRangeLH_imgId 9 | label 名前: 10 | input#magicRangeLH_name 11 | .r 12 | label 射程: 13 | input(type="number",min=0,max=100,required)#magicRangeLH_range 14 | .r 15 | label 色: 16 | input(type="hidden")#magicRangeLH_color 17 | input#magicRangeLH_color2 18 | .r.center 19 | button#magicRangeLH_send 追加 20 | button#magicRangeLH_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_magicRangeMG.pug: -------------------------------------------------------------------------------- 1 | #window_magicRangeMG.draggable 2 | .bg 3 | div 4 | span.title 攻撃範囲追加 5 | .pull-right#magicRangeMG_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#magicRangeMG_imgId 9 | label 名前: 10 | input#magicRangeMG_name 11 | .r 12 | label 最大射程: 13 | input(type="number",min=0,max=100,required)#magicRangeMG_maxRange 14 | .r 15 | label 最小射程: 16 | input(type="number",min=0,max=100,required)#magicRangeMG_minRange 17 | .r 18 | label 色: 19 | input(type="hidden")#magicRangeMG_color 20 | input#magicRangeMG_color2 21 | .r.center 22 | button#magicRangeMG_send 追加 23 | button#magicRangeMG_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_magicRangeMarker.pug: -------------------------------------------------------------------------------- 1 | #window_magicRangeMarker.draggable 2 | .bg 3 | div 4 | span.title 魔法範囲作成 5 | .pull-right#magicRangeMarker_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#magicRangeMarker_imgId 9 | label 名前: 10 | input#magicRangeMarker_name 11 | .r 12 | label 半径(5ft.単位): 13 | input(type="number",min=5,max=100,step=5,required)#magicRangeMarker_feets 14 | .r 15 | label 範囲種別: 16 | select#magicRangeMarker_rangeType 17 | option(value="circle") 円 18 | option(value="corn1") 円錐型(右上) 19 | option(value="corn2") 円錐型(右) 20 | option(value="corn3") 円錐型(右下) 21 | option(value="corn4") 円錐型(下) 22 | option(value="corn5") 円錐型(左下) 23 | option(value="corn6") 円錐型(左) 24 | option(value="corn7") 円錐型(左上) 25 | option(value="corn8") 円錐型(上) 26 | .r 27 | label 色: 28 | input(type="hidden")#magicRangeMarker_color 29 | input#magicRangeMarker_color2 30 | .r 31 | label 持続時間: 32 | input(type="number",min=1,max=99,required)#magicRangeMarker_timeRange 33 | .r 34 | label その他: 35 | input#magicRangeMarker_info 36 | .r 37 | input(type="checkbox",checked)#magicRangeMarker_isHide 38 | |イニシアティブ表に表示する 39 | .r.center 40 | button#magicRangeMarker_send 変更 41 | button#magicRangeMarker_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_magicTimer.pug: -------------------------------------------------------------------------------- 1 | #window_magicTimer.draggable 2 | .bg 3 | div 4 | span.title 魔法タイマー作成 5 | .pull-right#magicTimer_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#magicTimer_imgId 9 | label 名前: 10 | input#magicTimer_name 11 | .r 12 | label 持続時間: 13 | input(type="number",min=1,max=99,required)#magicTimer_timeRange 14 | | ラウンド 15 | .r 16 | label 効果開始ラウンド: 17 | input(type="number",min=1,max=99,required)#magicTimer_createRound 18 | .r 19 | label 効果開始イニシアティブ: 20 | input(type="number",min=1,max=99,step=0.01,required)#magicTimer_initiative 21 | .r 22 | label その他: 23 | input#magicTimer_info 24 | .r.center 25 | button#magicTimer_send 変更 26 | button#magicTimer_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_mapChange.pug: -------------------------------------------------------------------------------- 1 | #window_mapChange.draggable 2 | .bg 3 | div マップ変更 4 | .pull-right#mapChange_close2 × 5 | .body.dragprev 6 | .r.clearfix 7 | #mapChange_preview 8 | input(type="hidden")#mapChange_imageSource 9 | img#mapChange_map 10 | object(type="image/svg+xml",data="img/grid.svg")#mapChange_grid 11 | #mapChange_image 12 | .r 13 | button#mapChange_imageChange 画像変更 14 | #mapChange_imageSelect 15 | .r 16 | #mapChange_imagearea 17 | .r 18 | | 検索タグ 19 | select#mapChange_tagbox 20 | button#mapChange_btnpassword 隠し画像 21 | input#mapChange_password 22 | input(type="checkbox")#mapChange_mirrored2 23 | |左右反転 24 | .r 25 | input(type="checkbox")#mapChange_blank 26 | |白地図にする  27 | |縦: 28 | input(type="number",min=1,max=150,required)#mapChange_height 29 | | 横: 30 | input(type="number",min=1,max=150,required)#mapChange_width 31 | | マス目・座標文字の色: 32 | input(type="hidden")#mapChange_color.colorpicker 33 | input#mapChange_color2.colorpicker 34 | | マス目間隔: 35 | input(type="number",min=1,max=100,required)#mapChange_gridInterval 36 | |  37 | input(type="checkbox")#mapChange_isAlternately 38 | |マスを交互に 39 | input(type="checkbox",class="hide")#mapChange_mirrored 40 | .r.center 41 | button#mapChange_send 設定 42 | button#mapChange_close キャンセル 43 | -------------------------------------------------------------------------------- /src/pug/window/_mapMarker.pug: -------------------------------------------------------------------------------- 1 | #window_mapMarker.draggable 2 | .bg 3 | div 4 | span#mapMarker_title マップマーカー作成 5 | .pull-right#mapMarker_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#mapMarker_imgId 9 | label 高さ: 10 | input(type="number",min="1",max="100",required)#mapMarker_height.spinner 11 | label 幅: 12 | input(type="number",min="1",max="100",required)#mapMarker_width.spinner 13 | .r 14 | label 色: 15 | input(type="hidden")#mapMarker_color 16 | input#mapMarker_color2.colorpalette 17 | .r 18 | input(type="checkbox")#mapMarker_isPaint 19 | |塗り潰す 20 | input(type="checkbox")#mapMarker_draggable 21 | |マーカー固定 22 | .r 23 | label メッセージ: 24 | textarea#mapMarker_message 25 | .r#mapMarker_create 26 | input(type="checkbox")#mapMarker_multiple 27 | |複数作成 28 | .r#mapMarker_change 29 | button#mapMarker_send 変更 30 | button#mapMarker_close キャンセル 31 | .body2.dragprev 32 | #mapMarker_preview 33 | .message 34 | -------------------------------------------------------------------------------- /src/pug/window/_mapMask.pug: -------------------------------------------------------------------------------- 1 | #window_mapMask.draggable 2 | .bg 3 | div 4 | span#mapMask_title マスク作成 5 | .pull-right#mapMask_close2 × 6 | .body.dragprev 7 | .r 8 | input(type="hidden")#mapMask_imageId 9 | label 名前: 10 | input#mapMask_name 11 | .r 12 | label 色: 13 | input(type="hidden")#mapMask_color 14 | input#mapMask_color2.colorpalette 15 | .r 16 | label 高さ: 17 | input(type="number",min="1",max="100",required)#mapMask_height.spinner 18 | .r 19 | label 幅: 20 | input(type="number",min="1",max="100",required)#mapMask_width.spinner 21 | .r 22 | label 透過度 23 | input(type="hidden")#mapMask_alpha 24 | .slider 25 | .r#mapMask_create 26 | input(type="checkbox")#mapMask_multiple 27 | |複数作成 28 | .r#mapMask_change 29 | button#mapMask_send 変更 30 | button#mapMask_close キャンセル 31 | .body2.dragprev 32 | #mapMask_preview 33 | -------------------------------------------------------------------------------- /src/pug/window/_memo.pug: -------------------------------------------------------------------------------- 1 | #window_memo.draggable 2 | .bg 3 | div 4 | span.title 共有メモ 5 | .pull-right#memo_close2 × 6 | .body.dragprev 7 | .r#memo_listTab.clearfix 8 | input(type="hidden")#memo_imgId 9 | #memo_tab 10 | .r#memo_edit 11 | .r 12 | button#memo_send 追加 13 | button#memo_close キャンセル 14 | button#memo_addTab.pull-right タブ追加 -------------------------------------------------------------------------------- /src/pug/window/_playRoomInfo.pug: -------------------------------------------------------------------------------- 1 | #window_playRoomInfo.draggable 2 | .bg 3 | div 4 | span.title プレイルーム情報表示 5 | .pull-right#playRoomInfo_close2 × 6 | .body 7 | .r#playRoomInfo_main 8 | .r.right 9 | button(disabled)#playRoomInfo_changeRoomInfo プレイルーム情報変更 10 | .r.center 11 | button#playRoomInfo_close 閉じる -------------------------------------------------------------------------------- /src/pug/window/_roomDelete.pug: -------------------------------------------------------------------------------- 1 | #window_roomDelete.draggable 2 | .bg 3 | div 4 | span.title 部屋削除 5 | .pull-right#roomDelete_close2 × 6 | .body.dragprev 7 | input(type="hidden")#roomDelete_roomNumber 8 | .row 9 | | 部屋 [ No. 10 | span#roomDelete_Number 11 | | ] を削除します。パスワードを入力してください。 12 | .row 13 | label パスワード入力: 14 | input(type="password")#roomDelete_password 15 | .row.center 16 | button#roomDelete_send 実行 17 | button#roomDelete_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_saveChatLog.pug: -------------------------------------------------------------------------------- 1 | #window_saveChatLog.draggable 2 | .bg 3 | div 4 | span.title チャットログ保存 5 | .pull-right#saveChatLog_close2 × 6 | .body.dragprev 7 | .r.center 8 | input(type="radio",value="HTML",name="saveChatLog_mode",checked) 9 | | HTMLとして保存  10 | input(type="radio",value="Text",name="saveChatLog_mode") 11 | | テキストとして保存 12 | .r 13 | | フォントサイズ: 14 | select#saveChatLog_fontSize 15 | option(value="8pt") 8pt 16 | option(value="10pt") 10pt 17 | option(value="12pt",selected) 12pt 18 | option(value="14pt") 14pt 19 | |  行間の高さ: 20 | select#saveChatLog_lineHeight 21 | option(value="1.0") 100% 22 | option(value="1.2") 120% 23 | option(value="1.4",selected) 140% 24 | option(value="1.6") 160%t 25 | hr 26 | .r.center 27 | button#saveChatLog_saveAll 全タブ 28 | .r#saveChatLog_channel 29 | hr 30 | .r.center 31 | button#saveChatLog_close キャンセル -------------------------------------------------------------------------------- /src/pug/window/_upload.pug: -------------------------------------------------------------------------------- 1 | #window_upload.draggable 2 | .bg 3 | div 4 | span.title 画像アップローダ 5 | .pull-right#upload_close2 × 6 | .body.dragprev 7 | .r 8 | #upload_droparea 9 | .overwrap 10 | input(type="file",multiple,accept="image/png,image/jpeg,image/gif") 11 | a(href="#") ファイルを選択 12 | br 13 | |  または  14 | br 15 | | ファイルをドラッグアンドドロップ 16 | .r 17 | | 対応画像:JPEG/GIF/PNG 18 | select#upload_public 19 | option(value="") 専用 20 | option(value="1") 全体 21 | button#upload_btnpassword パスワードなし 22 | input#upload_password 23 | .r 24 | | 付与するタグ(半角・全角スペースで区切り) 25 | input#upload_tag(value="キャラクター画像 ") 26 | select#upload_tagbox 27 | option キャラクター画像 28 | option フロアタイル画像 29 | option マップ画像 30 | option モンスター 31 | option 立ち絵 32 | .r 33 | button#upload_send アップロード 34 | button#upload_close キャンセル 35 | .r 36 | |結果 37 | #upload_result -------------------------------------------------------------------------------- /src/pug/window/_uploadFile.pug: -------------------------------------------------------------------------------- 1 | #window_uploadFile.draggable 2 | .bg 3 | div 4 | span.title 簡易ファイルアップローダー 5 | .pull-right#uploadFile_close × 6 | .body.dragprev 7 | .row.left 8 | p 9 | | ファイルをアップロードできます。 10 | br 11 | | アップロードされたファイルのURLはチャットに発言され、 12 | br 13 | | ダウンロードする事ができます。 14 | br 15 | | (アップロードされたファイルは1時間で自動的に削除されます。) 16 | #uploadFile_droparea 17 | .overwrap 18 | input(type="file",accept="").hide 19 | a(href="#") ファイルを選択 20 | br 21 | |  または  22 | br 23 | | ファイルをドラッグアンドドロップ -------------------------------------------------------------------------------- /src/pug/window/_version.pug: -------------------------------------------------------------------------------- 1 | #window_version.draggable 2 | .bg バージョン 3 | .wrap 4 | .body 5 | .r 6 | .i どどんとふ: 7 | .i#version_DodontoF 8 | .r 9 | .i ddf.js: 10 | .i#version_ddfjs 11 | .r 12 | .i ddfHTML5Client: 13 | .i#version_ddfcli 14 | #version_close.btn 閉じる -------------------------------------------------------------------------------- /src/pug/window/_vote.pug: -------------------------------------------------------------------------------- 1 | #window_vote.draggable 2 | .bg 3 | div 4 | span.title 点呼/投票画面 5 | .pull-right#vote_close2 × 6 | .body.dragprev 7 | .r 8 | label 対象人数: 9 | input(type="number",min="1")#vote_requiredCount 10 | | / 11 | span#vote_number 12 | |    13 | input(type="radio",checked,name="vote")#vote_alerm 14 | | 点呼 15 | input(type="radio",name="vote")#vote_select 16 | | 投票 17 | .r#vote_isSelect 18 | label 質問: 19 | input#vote_question 20 | .r.center 21 | button#vote_send 実行 22 | button#vote_close キャンセル 23 | #window_vote_alerm.draggable 24 | .bg 25 | div 26 | span.title 点呼 27 | .body.dragprev 28 | .r 29 | | 準備が出来たらOKを押してください 30 | .r.center 31 | button#vote_alerm_ok OK 32 | #window_vote_select.draggable 33 | .bg 34 | div 35 | span.title 投票 36 | .body.dragprev 37 | .r 38 | p#vote_select_text 39 | .r.center 40 | button#vote_select_agree Yes 41 | button#vote_select_disagree No 42 | -------------------------------------------------------------------------------- /src/vender/img/centerMarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/centerMarker.png -------------------------------------------------------------------------------- /src/vender/img/cursor/cur_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/cursor/cur_horizontal.png -------------------------------------------------------------------------------- /src/vender/img/cursor/cur_left_oblique.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/cursor/cur_left_oblique.png -------------------------------------------------------------------------------- /src/vender/img/cursor/cur_right_oblique.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/cursor/cur_right_oblique.png -------------------------------------------------------------------------------- /src/vender/img/cursor/cur_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/cursor/cur_vertical.png -------------------------------------------------------------------------------- /src/vender/img/cursor/yajirusi_a13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/cursor/yajirusi_a13.png -------------------------------------------------------------------------------- /src/vender/img/draw.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /src/vender/img/grid.svg: -------------------------------------------------------------------------------- 1 | 2 | 14 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | -------------------------------------------------------------------------------- /src/vender/img/icons/arrow_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/arrow_redo.png -------------------------------------------------------------------------------- /src/vender/img/icons/arrow_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/arrow_undo.png -------------------------------------------------------------------------------- /src/vender/img/icons/bell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/bell.png -------------------------------------------------------------------------------- /src/vender/img/icons/book_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/book_open.png -------------------------------------------------------------------------------- /src/vender/img/icons/camera.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/camera.png -------------------------------------------------------------------------------- /src/vender/img/icons/cancel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/cancel.png -------------------------------------------------------------------------------- /src/vender/img/icons/comment_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/comment_delete.png -------------------------------------------------------------------------------- /src/vender/img/icons/control_pause.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/control_pause.png -------------------------------------------------------------------------------- /src/vender/img/icons/control_pause_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/control_pause_blue.png -------------------------------------------------------------------------------- /src/vender/img/icons/control_play.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/control_play.png -------------------------------------------------------------------------------- /src/vender/img/icons/control_play_blue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/control_play_blue.png -------------------------------------------------------------------------------- /src/vender/img/icons/door_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/door_out.png -------------------------------------------------------------------------------- /src/vender/img/icons/emoticon_grin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/emoticon_grin.png -------------------------------------------------------------------------------- /src/vender/img/icons/emoticon_smile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/emoticon_smile.png -------------------------------------------------------------------------------- /src/vender/img/icons/emoticon_surprised.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/emoticon_surprised.png -------------------------------------------------------------------------------- /src/vender/img/icons/eraser.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/eraser.gif -------------------------------------------------------------------------------- /src/vender/img/icons/exclamation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/exclamation.png -------------------------------------------------------------------------------- /src/vender/img/icons/film.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/film.png -------------------------------------------------------------------------------- /src/vender/img/icons/font.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/font.png -------------------------------------------------------------------------------- /src/vender/img/icons/good.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/good.jpg -------------------------------------------------------------------------------- /src/vender/img/icons/icon_help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/icon_help.png -------------------------------------------------------------------------------- /src/vender/img/icons/key.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/key.png -------------------------------------------------------------------------------- /src/vender/img/icons/line.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/line.gif -------------------------------------------------------------------------------- /src/vender/img/icons/maximize_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/maximize_over.png -------------------------------------------------------------------------------- /src/vender/img/icons/maximize_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/maximize_up.png -------------------------------------------------------------------------------- /src/vender/img/icons/page_white_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/page_white_delete.png -------------------------------------------------------------------------------- /src/vender/img/icons/page_white_gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/page_white_gear.png -------------------------------------------------------------------------------- /src/vender/img/icons/page_white_get.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/page_white_get.png -------------------------------------------------------------------------------- /src/vender/img/icons/pencil.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/pencil.gif -------------------------------------------------------------------------------- /src/vender/img/icons/restore_over.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/restore_over.png -------------------------------------------------------------------------------- /src/vender/img/icons/restore_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/restore_up.png -------------------------------------------------------------------------------- /src/vender/img/icons/sound.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/sound.png -------------------------------------------------------------------------------- /src/vender/img/icons/sound_mute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/sound_mute.png -------------------------------------------------------------------------------- /src/vender/img/icons/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/tick.png -------------------------------------------------------------------------------- /src/vender/img/icons/user.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/user.png -------------------------------------------------------------------------------- /src/vender/img/icons/user_comment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/user_comment.png -------------------------------------------------------------------------------- /src/vender/img/icons/user_delete.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/user_delete.png -------------------------------------------------------------------------------- /src/vender/img/icons/user_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/user_edit.png -------------------------------------------------------------------------------- /src/vender/img/icons/zoom_in.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/zoom_in.png -------------------------------------------------------------------------------- /src/vender/img/icons/zoom_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/icons/zoom_out.png -------------------------------------------------------------------------------- /src/vender/img/mapMarker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/mapMarker.png -------------------------------------------------------------------------------- /src/vender/img/rangeLH.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 38 | 39 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /src/vender/img/rangeMG.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 56 | 57 | 58 | 59 | 60 | -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark0.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark1.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark10.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark11.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark2.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark3.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark4.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark5.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark6.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark7.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark8.png -------------------------------------------------------------------------------- /src/vender/img/statusMarker/mark9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/statusMarker/mark9.png -------------------------------------------------------------------------------- /src/vender/img/unknownTarget.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/img/unknownTarget.png -------------------------------------------------------------------------------- /src/vender/js/colResizable-1.6.min.js: -------------------------------------------------------------------------------- 1 | // colResizable 1.6 - a jQuery plugin by Alvaro Prieto Lauroba http://www.bacubacu.com/colresizable/ 2 | 3 | !function(t){var e,i=t(document),r=t("head"),o=null,s={},d=0,n="id",a="px",l="JColResizer",c="JCLRFlex",f=parseInt,h=Math,p=navigator.userAgent.indexOf("Trident/4.0")>0;try{e=sessionStorage}catch(g){}r.append("");var u=function(e,i){var o=t(e);if(o.opt=i,o.mode=i.resizeMode,o.dc=o.opt.disabledColumns,o.opt.disable)return w(o);var a=o.id=o.attr(n)||l+d++;o.p=o.opt.postbackSafe,!o.is("table")||s[a]&&!o.opt.partialRefresh||("e-resize"!==o.opt.hoverCursor&&r.append(""),o.addClass(l).attr(n,a).before('
'),o.g=[],o.c=[],o.w=o.width(),o.gc=o.prev(),o.f=o.opt.fixed,i.marginLeft&&o.gc.css("marginLeft",i.marginLeft),i.marginRight&&o.gc.css("marginRight",i.marginRight),o.cs=f(p?e.cellSpacing||e.currentStyle.borderSpacing:o.css("border-spacing"))||2,o.b=f(p?e.border||e.currentStyle.borderLeftWidth:o.css("border-left-width"))||1,s[a]=o,v(o))},w=function(t){var e=t.attr(n),t=s[e];t&&t.is("table")&&(t.removeClass(l+" "+c).gc.remove(),delete s[e])},v=function(i){var r=i.find(">thead>tr:first>th,>thead>tr:first>td");r.length||(r=i.find(">tbody>tr:first>th,>tr:first>th,>tbody>tr:first>td, >tr:first>td")),r=r.filter(":visible"),i.cg=i.find("col"),i.ln=r.length,i.p&&e&&e[i.id]&&m(i,r),r.each(function(e){var r=t(this),o=-1!=i.dc.indexOf(e),s=t(i.gc.append('
')[0].lastChild);s.append(o?"":i.opt.gripInnerHtml).append('
'),e==i.ln-1&&(s.addClass("JCLRLastGrip"),i.f&&s.html("")),s.bind("touchstart mousedown",J),o?s.addClass("JCLRdisabledGrip"):s.removeClass("JCLRdisabledGrip").bind("touchstart mousedown",J),s.t=i,s.i=e,s.c=r,r.w=r.width(),i.g.push(s),i.c.push(r),r.width(r.w).removeAttr("width"),s.data(l,{i:e,t:i.attr(n),last:e==i.ln-1})}),i.cg.removeAttr("width"),i.find("td, th").not(r).not("table th, table td").each(function(){t(this).removeAttr("width")}),i.f||i.removeAttr("width").addClass(c),C(i)},m=function(t,i){var r,o,s=0,d=0,n=[];if(i){if(t.cg.removeAttr("width"),t.opt.flush)return void(e[t.id]="");for(r=e[t.id].split(";"),o=r[t.ln+1],!t.f&&o&&(t.width(o*=1),t.opt.overflow&&(t.css("min-width",o+a),t.w=o));d*{cursor:"+n.opt.dragCursor+"!important}"),a.addClass(n.opt.draggingClass),o=a,n.c[d.i].l)for(var f,h=0;h n2) return 1; 48 | if (n2 > n1) return -1; 49 | } 50 | 51 | if ([s1[2], s2[2]].every(patch.test.bind(patch))) { 52 | var p1 = patch.exec(s1[2])[1].split('.').map(tryParse); 53 | var p2 = patch.exec(s2[2])[1].split('.').map(tryParse); 54 | 55 | for (i = 0; i < Math.max(p1.length, p2.length); i++) { 56 | if (p1[i] === undefined || typeof p2[i] === 'string' && typeof p1[i] === 'number') return -1; 57 | if (p2[i] === undefined || typeof p1[i] === 'string' && typeof p2[i] === 'number') return 1; 58 | 59 | if (p1[i] > p2[i]) return 1; 60 | if (p2[i] > p1[i]) return -1; 61 | } 62 | } else if ([s1[2], s2[2]].some(patch.test.bind(patch))) { 63 | return patch.test(s1[2]) ? -1 : 1; 64 | } 65 | 66 | return 0; 67 | }; 68 | 69 | })); 70 | 71 | },{}]},{},[]); 72 | -------------------------------------------------------------------------------- /src/vender/js/lib/compare-versions.min.js: -------------------------------------------------------------------------------- 1 | require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;op)return 1;if(p>s)return-1}if([f[2],a[2]].every(i.test.bind(i))){var d=i.exec(f[2])[1].split(".").map(r),c=i.exec(a[2])[1].split(".").map(r);for(u=0;uc[u])return 1;if(c[u]>d[u])return-1}}else if([f[2],a[2]].some(i.test.bind(i)))return i.test(f[2])?-1:1;return 0}}); 3 | 4 | },{}]},{},[]); 5 | -------------------------------------------------------------------------------- /src/vender/js/lib/dateformat.min.js: -------------------------------------------------------------------------------- 1 | require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o0?"-":"+")+t(100*Math.floor(Math.abs(D)/60)+Math.abs(D)%60,4),S:["th","st","nd","rd"][u%10>3?0:(u%100-u%10!=10)*u%10],W:N,N:p};return r.replace(e,function(e){return e in H?H[e]:e.slice(1,e.length-1)})}}();a.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},a.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]},"function"==typeof define&&define.amd?define(function(){return a}):"object"==typeof exports?module.exports=a:e.dateFormat=a}(this); 3 | 4 | },{}]},{},[]); 5 | -------------------------------------------------------------------------------- /src/vender/js/lib/htmlspecialchars.js: -------------------------------------------------------------------------------- 1 | require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o/g, '>'). 23 | replace(/"/g, '"'). 24 | replace(/'/g, '''); 25 | }; 26 | }); 27 | 28 | },{}]},{},[]); 29 | -------------------------------------------------------------------------------- /src/vender/js/loaders.css.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | 3 | var divs = { 4 | 'ball-pulse': 3, 5 | 'ball-grid-pulse': 9, 6 | 'ball-clip-rotate': 1, 7 | 'ball-clip-rotate-pulse': 2, 8 | 'square-spin': 1, 9 | 'ball-clip-rotate-multiple': 2, 10 | 'ball-pulse-rise': 5, 11 | 'ball-rotate': 1, 12 | 'cube-transition': 2, 13 | 'ball-zig-zag': 2, 14 | 'ball-zig-zag-deflect': 2, 15 | 'ball-triangle-path': 3, 16 | 'ball-scale': 1, 17 | 'line-scale': 5, 18 | 'line-scale-party': 4, 19 | 'ball-scale-multiple': 3, 20 | 'ball-pulse-sync': 3, 21 | 'ball-beat': 3, 22 | 'line-scale-pulse-out': 5, 23 | 'line-scale-pulse-out-rapid': 5, 24 | 'ball-scale-ripple': 1, 25 | 'ball-scale-ripple-multiple': 3, 26 | 'ball-spin-fade-loader': 8, 27 | 'line-spin-fade-loader': 8, 28 | 'triangle-skew-spin': 1, 29 | 'pacman': 5, 30 | 'ball-grid-beat': 9, 31 | 'semi-circle-spin': 1, 32 | 'ball-scale-random': 3 33 | }; 34 | 35 | var addDivs = function(n) { 36 | var arr = []; 37 | for (i = 1; i <= n; i++) { 38 | arr.push('
'); 39 | } 40 | return arr; 41 | }; 42 | 43 | $.fn.loaders = function() { 44 | return this.each(function() { 45 | var elem = $(this); 46 | $.each(divs, function(key, value) { 47 | if (elem.hasClass(key)) 48 | elem.html(addDivs(value)) 49 | }) 50 | }); 51 | }; 52 | 53 | $(function() { 54 | $.each(divs, function(key, value) { 55 | $('.loader-inner.' + key).html(addDivs(value)); 56 | }) 57 | }); 58 | 59 | }).call(window, window.$ || window.jQuery || window.Zepto); 60 | -------------------------------------------------------------------------------- /src/vender/js/util.js: -------------------------------------------------------------------------------- 1 | var encode = require('htmlspecialchars'); 2 | var dateFormat = require('dateformat'); 3 | var compareVersion = require('compare-versions'); 4 | 5 | function toHalf(strVal){ 6 | // 半角変換 7 | var halfVal = strVal.replace(/[!-~]/g, 8 | function( tmpStr ) { 9 | // 文字コードをシフト 10 | return String.fromCharCode( tmpStr.charCodeAt(0) - 0xFEE0 ); 11 | } 12 | ); 13 | 14 | // 文字コードシフトで対応できない文字の変換 15 | return halfVal.replace(/”/g, "\"") 16 | .replace(/’/g, "'") 17 | .replace(/‘/g, "`") 18 | .replace(/¥/g, "\\") 19 | .replace(/ /g, " ") 20 | .replace(/〜/g, "~"); 21 | } -------------------------------------------------------------------------------- /src/vender/sound/beep.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/sound/beep.mp3 -------------------------------------------------------------------------------- /src/vender/sound/diceRoll.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/sound/diceRoll.mp3 -------------------------------------------------------------------------------- /src/vender/sound/page.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/sound/page.mp3 -------------------------------------------------------------------------------- /src/vender/sound/select.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/op3kitt/htmlddf/43eed44e0765e06024e7aea4d3cc17642f8e3338/src/vender/sound/select.mp3 --------------------------------------------------------------------------------