Skip to content

Commit

Permalink
✨ ♻️ 追加: 編集画面にユニット(コマ)用の項目を追加。また、コマ出力の処理を整理
Browse files Browse the repository at this point in the history
- 編集画面メニューの「チャットパレット」を「ユニット(コマ)設定」に名称変更
- チャットパレット編集欄の上にユニット設定の欄を追加
- ゆとチャadv.のステータス出力を他ツールへのそれと共通化
- コマ出力の処理を整理(共通化できるところは共通化する)
- 同処理上における、現状の仕様上ほぼ意味のないコードを削除
- @Shunshun94 さんの手による処理が残らなかったり、そもそも元々全部自分で書いていたファイルのMITライセンス表記はかえって不適切と判断し削除
  • Loading branch information
yutorize committed Apr 20, 2024
1 parent 93a701b commit dd9c844
Show file tree
Hide file tree
Showing 58 changed files with 1,122 additions and 1,917 deletions.
4 changes: 2 additions & 2 deletions _core/lib/ar2e/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -192,8 +192,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down
22 changes: 22 additions & 0 deletions _core/lib/ar2e/subroutine-ar2e.pl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,28 @@

### サブルーチン-AR ##################################################################################

### ユニットステータス出力 --------------------------------------------------
sub createUnitStatus {
my %pc = %{$_[0]};
my @unitStatus = (
{ 'HP' => $pc{hpTotal}.'/'.$pc{hpTotal} },
{ 'MP' => $pc{mpTotal}.'/'.$pc{mpTotal} },
{ 'フェイト' => $pc{fateTotal}.'/'.$pc{fateTotal} },
{ '行動値' => $pc{battleTotalIni} }
);

foreach my $key (split ',', $pc{unitStatusNotOutput}){
@unitStatus = grep { !exists $_->{$key} } @unitStatus;
}

foreach my $num (1..$pc{unitStatusNum}){
next if !$pc{"unitStatus${num}Label"};
push(@unitStatus, { $pc{"unitStatus${num}Label"} => $pc{"unitStatus${num}Value"} });
}

return \@unitStatus;
}

### バージョンアップデート --------------------------------------------------
sub data_update_chara {
my %pc = %{$_[0]};
Expand Down
4 changes: 2 additions & 2 deletions _core/lib/blp/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -123,8 +123,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down
9 changes: 3 additions & 6 deletions _core/lib/blp/json-sub.pl
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,9 @@ sub addJsonData {
$pc{sheetDescriptionS} = $factor."\n".$base."\n".$missing." ".$scar;
$pc{sheetDescriptionM} = $factor."\n".$base."\n".$belong."\n".$missing.($scar?"\n$scar":'');

## ゆとチャユニット用ステータス
$pc{unitStatus} = [
{ '耐久値' => $pc{endurance} },
{ '先制値' => $pc{initiative} },
];

## ユニット(コマ)用ステータス
$pc{unitStatus} = createUnitStatus(\%pc);

return \%pc;
}

Expand Down
20 changes: 20 additions & 0 deletions _core/lib/blp/subroutine-sub.pl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,26 @@

### サブルーチン-BLP #################################################################################

### ユニットステータス出力 --------------------------------------------------
sub createUnitStatus {
my %pc = %{$_[0]};
my @unitStatus = (
{ '耐久値' => $pc{endurance} },
{ '先制値' => $pc{initiative} },
);

foreach my $key (split ',', $pc{unitStatusNotOutput}){
@unitStatus = grep { !exists $_->{$key} } @unitStatus;
}

foreach my $num (1..$pc{unitStatusNum}){
next if !$pc{"unitStatus${num}Label"};
push(@unitStatus, { $pc{"unitStatus${num}Label"} => $pc{"unitStatus${num}Value"} });
}

return \@unitStatus;
}

### バージョンアップデート --------------------------------------------------
sub data_update_chara {
my %pc = %{$_[0]};
Expand Down
4 changes: 2 additions & 2 deletions _core/lib/dx3/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down
10 changes: 2 additions & 8 deletions _core/lib/dx3/json-sub.pl
Original file line number Diff line number Diff line change
Expand Up @@ -51,14 +51,8 @@ sub addJsonData {
$pc{sheetDescriptionS} = $base."\n".$works."\n".$syndrome;
$pc{sheetDescriptionM} = $base." ".$sub."\n".$works."\n".$syndrome.($dlois?"\n$dlois":'');

## ゆとチャユニット用ステータス
$pc{unitStatus} = [
{ 'HP' => $pc{maxHpTotal}.'/'.$pc{maxHpTotal} },
{ '侵蝕' => $pc{baseEncroach} },
{ 'ロイス' => $pc{loisHave}.'/'.$pc{loisMax} },
{ '財産' => $pc{savingTotal} },
{ '行動' => $pc{initiativeTotal} },
];
## ユニット(コマ)用ステータス
$pc{unitStatus} = createUnitStatus(\%pc);

return \%pc;
}
Expand Down
23 changes: 23 additions & 0 deletions _core/lib/dx3/subroutine-dx3.pl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,29 @@

### サブルーチン-DX ##################################################################################

### ユニットステータス出力 --------------------------------------------------
sub createUnitStatus {
my %pc = %{$_[0]};
my @unitStatus = (
{ 'HP' => $pc{maxHpTotal}.'/'.$pc{maxHpTotal} },
{ '侵蝕' => $pc{baseEncroach} },
{ 'ロイス' => $pc{loisHave}.'/'.$pc{loisMax} },
{ '財産' => $pc{savingTotal} },
{ '行動' => $pc{initiativeTotal} },
);

foreach my $key (split ',', $pc{unitStatusNotOutput}){
@unitStatus = grep { !exists $_->{$key} } @unitStatus;
}

foreach my $num (1..$pc{unitStatusNum}){
next if !$pc{"unitStatus${num}Label"};
push(@unitStatus, { $pc{"unitStatus${num}Label"} => $pc{"unitStatus${num}Value"} });
}

return \@unitStatus;
}

### バージョンアップデート --------------------------------------------------
sub data_update_chara {
my %pc = %{$_[0]};
Expand Down
53 changes: 52 additions & 1 deletion _core/lib/edit.js
Original file line number Diff line number Diff line change
Expand Up @@ -245,6 +245,8 @@ function setChatPalette(){
formData.delete("password");
formData.delete("imageFile");
formData.delete("imageCompressed");
formData.delete("unitStatusNum");
formData.delete("unitStatusNotOutput");
const action = form.getAttribute("action")
const options = {
method: 'POST',
Expand All @@ -255,9 +257,58 @@ function setChatPalette(){
.then(data => {
document.getElementById('paletteDefaultProperties').value = data['properties'] || '';
document.getElementById('palettePreset').value = data['preset'] || '';

setDefaultStatus(data.unitStatus);
})
}

// ユニット ----------------------------------------
// 表示名・名前色
function changeNamePlate(){
const name = form.namePlate.value || form.characterName?.value || form.aka?.value || form.monsterName?.value || '';
const colors = form.nameColor.value.split(/,/);
const color = /^#[0-9a-zA-Z]{6}$/.test(colors[0]) ? colors[0] : ''
document.querySelectorAll('#name-plate-view > span').forEach( namePlate =>{
namePlate.textContent = name;
namePlate.style.color = color;
})
}
// ステータス
function setDefaultStatus(statusArray){
if(statusArray){
const notset = form.unitStatusNotOutput.value.split(",")

const tbody = document.querySelector("#unit-status-default");
tbody.innerHTML = '';
for(let item of statusArray){
for (const key in item) {
const row = document.createElement('tr');
row.innerHTML = `
<td>
<th>${key}
<td>${item[key]}
<td><label class="check-button"><input type="checkbox" value="${key}" oninput="setStatusNotOutput()" ${notset.includes(key)?'checked':''}><span>出力しない</span><label>`;
tbody.append(row);
}
}
}
}
function setStatusNotOutput(){
let value = '';
const tbody = document.querySelector("#unit-status-default");
tbody.querySelectorAll('input[type="checkbox"]').forEach(checkbox => {
if(checkbox.checked){ value += checkbox.value+',' }
});
form.unitStatusNotOutput.value = value;
}
function addUnitStatus(){
document.querySelector("#unit-status-optional").append(createRow('unit-status','unitStatusNum'));
}
function delUnitStatus(){
delRow('unitStatusNum', '#unit-status-optional tr:last-of-type')
}
setSortable('unitStatus','#unit-status-optional','tr');

// 画像配置 ----------------------------------------
// ビューを開く
function imagePositionView(){
Expand Down Expand Up @@ -555,7 +606,7 @@ function sectionSelect(id){
obj.style.display = 'none';
});
document.getElementById('section-'+id).style.display = 'block';
if(id === 'palette'){ setChatPalette() }
if(id === 'palette'){ changeNamePlate(); setChatPalette() }
}

// 目次 ----------------------------------------
Expand Down
50 changes: 46 additions & 4 deletions _core/lib/edit.pl
Original file line number Diff line number Diff line change
Expand Up @@ -439,10 +439,50 @@ sub chatPaletteForm {
@_,
);
$palette .= "$_\n" foreach(paletteProperties('',$::in{type}));

$::pc{unitStatusNum} ||= 3;
my $status;
foreach ('TMPL',1..$::pc{unitStatusNum}) {
$status .= '<tr id="unit-status'.$_.'">';
$status .= '<td class="handle">';
$status .= '<td>'.input("unitStatus${_}Label",'','','placeholder="ラベル"');
$status .= '<td>'.input("unitStatus${_}Value",'','','placeholder="値"');
$status = '<template id="unit-status-template">'.$status.'</template>' if $_ eq 'TMPL';
}

return <<"HTML";
<section id="section-palette" style="display:none;">
<div class="box">
<h2>チャットパレット</h2>
<div class="box" id="unit-setting">
<h2>ユニット・コマ の設定</h2>
<dl>
<dt>表示名
<dd>@{[ input 'namePlate','','changeNamePlate','placeholder="ニックネーム、ファーストネームなど"' ]} <small>※コマ出力時、こちらの入力が名前として優先されます。名前が長いキャラなどに</small>
<dt>発言者色
<dd>@{[ input 'nameColor','','changeNamePlate' ]} <small>※6桁のカラーコードで記入してください。</small>
<div id="name-plate-view">表示例:
<span class="ytcha"></span> /
<span class="tekey"></span> /
<span class="ccfol"></span> /
<span class="udona"></span>
</div>
<dt>ステータス<br>
<dd>
@{[ input 'unitStatusNotOutput','hidden' ]}
@{[ input 'unitStatusNum','hidden' ]}
<table id="unit-status">
<tbody id="unit-status-default">
<tbody id="unit-status-optional">$status
<tfoot><tr><td colspan="3" class="add-del-button"><a onclick="addUnitStatus()">▼</a><a onclick="delUnitStatus()">▲</a></div>
</table>
<div class="annotate">
<small>※デフォルトのステータス出力の他に、任意で項目を追加できます。<br> また、使わないステータスを出力しないことも選択できます。</small>
<small>※最大値が必要な場合は <code>100/100</code> のように記入してください。</small>
<small>※ツールによっては値に数値しか許容されないため、注意してください。</small>
</div>
</dl>
</div>
<div class="box" id="chatpalette">
<h2>チャットパレット <small>(ユニット(コマ)出力時、ここで設定したものが出力されます)</small></h2>
<p>
手動パレットの配置:<select name="paletteInsertType" style="width: auto;">
<option value="exchange" @{[ $::pc{paletteInsertType} eq 'exchange'?'selected':'' ]}>プリセットと入れ替える</option>
Expand All @@ -457,7 +497,7 @@ sub chatPaletteForm {
<textarea id="paletteDefaultProperties" readonly style="height:20em">$palette</textarea>
<p>
@{[ checkbox 'chatPalettePropertiesAll','全てのデフォルト変数を出力する','setChatPalette' ]} <br>
デフォルトだと、未使用の変数は出力されません
<small>※デフォルトだと、未使用の変数は出力されません</small>
</p>
</div>
<div class="palette-column">
Expand All @@ -470,7 +510,9 @@ sub chatPaletteForm {
</p>
<dl>
<dt>使用するオンセツール
<dd class="left">@{[ radios 'paletteTool','setChatPalette',@{$opt{tool}} ]}
<dd class="left">
@{[ radios 'paletteTool','setChatPalette',@{$opt{tool}} ]}<br>
<small>※プリセットの内容がツールに合わせたものに切り替わります。<br> なお、コマ出力の際にはここでの変更に関わらず、自動的に出力先のツールに合わせたものになります。</small>
</dl>
</div>
</div>
Expand Down
4 changes: 2 additions & 2 deletions _core/lib/gs/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down
2 changes: 1 addition & 1 deletion _core/lib/junction.pl
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
use utf8;
use Encode;

our $ver = "1.24.018";
our $ver = "1.24.019";

our %in;
for (param()){ $in{$_} = param($_); }
Expand Down
4 changes: 2 additions & 2 deletions _core/lib/kiz/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -141,8 +141,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down
10 changes: 3 additions & 7 deletions _core/lib/kiz/json-sub.pl
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,9 @@ sub addJsonData {
$pc{sheetDescriptionS} = $factor."\n".$base."\n".$missing." ".$scar;
$pc{sheetDescriptionM} = $factor."\n".$base."\n".$belong."\n".$missing.($scar?"\n$scar":'');

## ゆとチャユニット用ステータス
$pc{unitStatus} = [
{ '耐久値' => $pc{endurance} },
{ '作戦力' => $pc{operation} },
{ '励起値' => 0 },
];

## ユニット(コマ)用ステータス
$pc{unitStatus} = createUnitStatus(\%pc);

return \%pc;
}

Expand Down
21 changes: 21 additions & 0 deletions _core/lib/kiz/subroutine-sub.pl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,27 @@

### サブルーチン-KIZ #################################################################################

### ユニットステータス出力 --------------------------------------------------
sub createUnitStatus {
my %pc = %{$_[0]};
my @unitStatus = (
{ '耐久値' => $pc{endurance} },
{ '作戦力' => $pc{operation} },
{ '励起値' => 0 },
);

foreach my $key (split ',', $pc{unitStatusNotOutput}){
@unitStatus = grep { !exists $_->{$key} } @unitStatus;
}

foreach my $num (1..$pc{unitStatusNum}){
next if !$pc{"unitStatus${num}Label"};
push(@unitStatus, { $pc{"unitStatus${num}Label"} => $pc{"unitStatus${num}Value"} });
}

return \@unitStatus;
}

### バージョンアップデート --------------------------------------------------
sub data_update_chara {
my %pc = %{$_[0]};
Expand Down
4 changes: 2 additions & 2 deletions _core/lib/ms/edit-chara.pl
Original file line number Diff line number Diff line change
Expand Up @@ -121,8 +121,8 @@
<div id="header-menu">
<h2><span></span></h2>
<ul>
<li onclick="sectionSelect('common');"><span>キャラクター</span><span>データ</span>
<li onclick="sectionSelect('palette');"><span>チャット</span><span>パレット</span>
<li onclick="sectionSelect('common');"><span>キャラ<span class="shorten">クター</span></span><span>データ</span>
<li onclick="sectionSelect('palette');"><span><span class="shorten">ユニット(</span>コマ<span class="shorten">)</span></span><span>設定</span>
<li onclick="sectionSelect('color');" class="color-icon" title="カラーカスタム">
<li onclick="view('text-rule')" class="help-icon" title="テキスト整形ルール">
<li onclick="nightModeChange()" class="nightmode-icon" title="ナイトモード切替">
Expand Down

0 comments on commit dd9c844

Please sign in to comment.