Commit 0b9a34ba authored by 神楽坂玲奈's avatar 神楽坂玲奈

1. 游戏列表、聊天室可拖拽 (实际上上一版就发了,忘了说,这一版拖拽大小加上了限制)

2. YGOPro 国际化聊天室
3. 窗口拖拽大小限制 (最小默认1024x640)
4. 修复一个导致在游戏详情页面滚动失效的bug
5. 修复英文排位成绩显示为中文的bug
6. 修复竞技负场数据显示为娱乐负场数据的bug
parent 614288d5
:host {
/*background-color: #c3d9ff;*/
flex-grow: 1;
position: relative;
}
#background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
filter: grayscale(50%) opacity(10%);
background-repeat: no-repeat;
background-size: 100% auto;
}
.scroll {
padding: 1rem 1rem 0 1rem;
height: 100%;
}
.actions {
margin-bottom: 1rem;
background-blend-mode: color;
}
.list-group {
......
<div *ngIf="currentApp.background" id="background" [style.background-image]="'url(' + currentApp.background + ')'"></div>
<div class="scroll">
<div id="main" class="panel">
<img *ngIf="currentApp.cover" id="icon" class="rounded" [src]="currentApp.cover">
<div id="right">
<h1>{{currentApp.name}}</h1>
<div id="time">您已玩了 2564 小时</div>
<!--应用未安装-->
<div *ngIf="!currentApp.isInstalled()">
<button i18n (click)="updateInstallOption(currentApp)" type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#install-modal">安装</button>
<button i18n *ngIf="currentApp.runnable()" (click)="updateInstallOption(currentApp)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#import-modal">导入</button>
</div>
<div id="main" class="panel">
<img *ngIf="currentApp.cover" id="icon" class="rounded" [src]="currentApp.cover">
<div id="right">
<h1>{{currentApp.name}}</h1>
<div id="time">您已玩了 2564 小时</div>
<!--应用未安装-->
<div *ngIf="!currentApp.isInstalled()">
<button i18n (click)="updateInstallOption(currentApp)" type="button" class="btn btn-primary btn-sm" data-toggle="modal" data-target="#install-modal">安装</button>
<button i18n *ngIf="currentApp.runnable()" (click)="updateInstallOption(currentApp)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#import-modal">导入</button>
</div>
<!--应用变更中-->
<div *ngIf="currentApp.isInstalled() && !currentApp.isReady()">
<div id="status">
<span i18n *ngIf="currentApp.isDownloading()">正在下载</span>
<span i18n *ngIf="currentApp.isInstalling()">正在安装...</span>
<span i18n *ngIf="currentApp.isUninstalling()">正在卸载...</span>
<span i18n *ngIf="currentApp.isWaiting()">等待安装...</span>
<span i18n *ngIf="currentApp.isUpdating()">正在更新...</span>
<span *ngIf="currentApp.status.total">{{(currentApp.status.progress/currentApp.status.total * 100).toFixed()}}%</span>
<span>{{currentApp.progressMessage()}}</span>
</div>
<progress class="progress" [class.progress-striped]="!currentApp.status.total" [class.progress-animated]="!currentApp.status.total" value="{{currentApp.status.total ? currentApp.status.progress : 1}}" max="{{currentApp.status.total}}"></progress>
<!--应用变更中-->
<div *ngIf="currentApp.isInstalled() && !currentApp.isReady()">
<div id="status">
<span i18n *ngIf="currentApp.isDownloading()">正在下载</span>
<span i18n *ngIf="currentApp.isInstalling()">正在安装...</span>
<span i18n *ngIf="currentApp.isUninstalling()">正在卸载...</span>
<span i18n *ngIf="currentApp.isWaiting()">等待安装...</span>
<span i18n *ngIf="currentApp.isUpdating()">正在更新...</span>
<span *ngIf="currentApp.status.total">{{(currentApp.status.progress/currentApp.status.total * 100).toFixed()}}%</span>
<span>{{currentApp.progressMessage()}}</span>
</div>
<progress class="progress" [class.progress-striped]="!currentApp.status.total" [class.progress-animated]="!currentApp.status.total" value="{{currentApp.status.total ? currentApp.status.progress : 1}}" max="{{currentApp.status.total}}"></progress>
</div>
<!--应用ready-->
<div *ngIf="currentApp.isReady() && (currentApp.id != 'ygopro')">
<button *ngIf="currentApp.runnable()" (click)="runApp(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-primary btn-sm"><i class="fa fa-play" aria-hidden="true"></i> <span i18n>运行</span></button>
<button i18n *ngIf="currentApp.runnable() && currentApp.actions.get('custom')" [disabled]="!appsService.allReady(currentApp)" (click)="custom(currentApp)" type="button" class="btn btn-secondary btn-sm">设置</button>
<div id="network" *ngIf="currentApp.network && currentApp.network.protocol == 'maotama'">
<div class="input-group input-group-sm">
<input *ngIf="appsService.connections.get(currentApp)" [value]="appsService.connections.get(currentApp).address || 'Loading...'" readonly type="text" class="form-control" title="address">
<div class="input-group-btn" style="flex-direction: row">
<button i18n *ngIf="!appsService.connections.get(currentApp)" [disabled]="!appsService.allReady(currentApp)" (click)="appsService.network(currentApp, currentApp.network.servers[0])" type="button" class="btn btn-secondary btn-sm">联机</button>
<button i18n *ngIf="appsService.connections.get(currentApp)" (click)="copy(appsService.connections.get(currentApp).address)" [disabled]="!appsService.connections.get(currentApp).address" type="button" class="btn btn-secondary btn-sm">复制</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button>
<div class="dropdown-menu" [class.dropdown-menu-right]="appsService.connections.get(currentApp)">
<h6 i18n class="dropdown-header">选择服务器</h6>
<a *ngFor="let server of currentApp.network.servers" (click)="appsService.network(currentApp, server)" class="dropdown-item" href="#">{{server.id}}</a>
<div *ngIf="appsService.connections.get(currentApp)" class="dropdown-divider"></div>
<a i18n *ngIf="appsService.connections.get(currentApp)" (click)="appsService.connections.get(currentApp).connection.close()" class="dropdown-item" href="#">取消</a>
</div>
<!--应用ready-->
<div *ngIf="currentApp.isReady() && (currentApp.id != 'ygopro')">
<button *ngIf="currentApp.runnable()" (click)="runApp(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-primary btn-sm">
<i class="fa fa-play" aria-hidden="true"></i> <span i18n>运行</span></button>
<button i18n *ngIf="currentApp.runnable() && currentApp.actions.get('custom')" [disabled]="!appsService.allReady(currentApp)" (click)="custom(currentApp)" type="button" class="btn btn-secondary btn-sm">设置</button>
<div id="network" *ngIf="currentApp.network && currentApp.network.protocol == 'maotama'">
<div class="input-group input-group-sm">
<input *ngIf="appsService.connections.get(currentApp)" [value]="appsService.connections.get(currentApp).address || 'Loading...'" readonly type="text" class="form-control" title="address">
<div class="input-group-btn" style="flex-direction: row">
<button i18n *ngIf="!appsService.connections.get(currentApp)" [disabled]="!appsService.allReady(currentApp)" (click)="appsService.network(currentApp, currentApp.network.servers[0])" type="button" class="btn btn-secondary btn-sm">联机</button>
<button i18n *ngIf="appsService.connections.get(currentApp)" (click)="copy(appsService.connections.get(currentApp).address)" [disabled]="!appsService.connections.get(currentApp).address" type="button" class="btn btn-secondary btn-sm">复制</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown"></button>
<div class="dropdown-menu" [class.dropdown-menu-right]="appsService.connections.get(currentApp)">
<h6 i18n class="dropdown-header">选择服务器</h6>
<a *ngFor="let server of currentApp.network.servers" (click)="appsService.network(currentApp, server)" class="dropdown-item" href="#">{{server.id}}</a>
<div *ngIf="appsService.connections.get(currentApp)" class="dropdown-divider"></div>
<a i18n *ngIf="appsService.connections.get(currentApp)" (click)="appsService.connections.get(currentApp).connection.close()" class="dropdown-item" href="#">取消</a>
</div>
</div>
</div>
</div>
<ygopro *ngIf="currentApp.isReady() && (currentApp.id == 'ygopro')" [app]="currentApp" [currentApp]="currentApp" (points)="onPoints($event)"></ygopro>
</div>
<ygopro *ngIf="currentApp.isReady() && (currentApp.id == 'ygopro')" [app]="currentApp" [currentApp]="currentApp" (points)="onPoints($event)"></ygopro>
</div>
</div>
<!--{"exp":1839,"exp_rank":"9","pt":2207.2901,"arena_rank":"30","win":"703","lose":"568","draw":5,"all":"1276","ratio":"55.09"}-->
<div id="arena" class="panel panel-default" *ngIf="points">
<h2 i18n>排位成绩</h2>
<table class="table table-sm">
<tbody>
<tr>
<th i18n>竞技排名</th>
<td>{{points.arena_rank}}</td>
<th i18n>娱乐排名</th>
<td>{{points.exp_rank}}</td>
</tr>
<tr>
<th i18n>竞技胜率</th>
<td>{{points.athletic_wl_ratio}}%</td>
<th i18n>经验</th>
<td>{{points.exp}}</td>
</tr>
<tr>
<th i18n>胜场</th>
<td>{{points.athletic_win}}</td>
<th i18n>胜场</th>
<td>{{points.entertain_win}}</td>
</tr>
<tr>
<th i18n>负场</th>
<td>{{points.athletic_win}}</td>
<th i18n>负场</th>
<td>{{points.entertain_lose}}</td>
</tr>
<tr>
<th i18n>平局</th>
<td>{{points.athletic_draw}}</td>
<th i18n>平局</th>
<td>{{points.entertain_draw}}</td>
</tr>
<tr>
<th i18n>总场</th>
<td>{{points.athletic_all}}</td>
<th i18n>总场</th>
<td>{{points.entertain_all}}</td>
</tr>
</tbody>
</table>
<a i18n href="https://mycard.moe/ygopro/arena/" target="_blank" class="moreinfo">更多资料</a>
</div>
<!--<div *ngIf="points" class="row">--><!--<dl class="col-4 row">--><!--<dt i18n class="col-8">竞技排名</dt>--><!--<dd class="col-4">{{points.arena_rank}}</dd>--><!--<dt i18n class="col-8">竞技胜率</dt>--><!--<dd class="col-4">{{points.athletic_wl_ratio}}%</dd>--><!--<dt i18n class="col-8">胜场</dt>--><!--<dd class="col-4">{{points.athletic_win}}</dd>--><!--<dt i18n class="col-8">负场</dt>--><!--<dd class="col-4">{{points.athletic_lose}}</dd>--><!--<dt i18n class="col-8">平局</dt>--><!--<dd class="col-4">{{points.athletic_draw}}</dd>--><!--<dt i18n class="col-8">总场</dt>--><!--<dd class="col-4">{{points.athletic_all}}</dd>--><!--</dl>--><!--<dl class="col-4 row">--><!--<dt i18n class="col-8">娱乐排名</dt>--><!--<dd class="col-4">{{points.exp_rank}}</dd>--><!--<dt i18n class="col-8">经验</dt>--><!--<dd class="col-4">{{points.exp}}</dd>--><!--<dt i18n class="col-8">胜场</dt>--><!--<dd class="col-4">{{points.entertain_win}}</dd>--><!--<dt i18n class="col-8">负场</dt>--><!--<dd class="col-4">{{points.entertain_lose}}</dd>--><!--<dt i18n class="col-8">平局</dt>--><!--<dd class="col-4">{{points.entertain_draw}}</dd>--><!--<dt i18n class="col-8">总场</dt>--><!--<dd class="col-4">{{points.entertain_all}}</dd>--><!--</dl>--><!--</div>-->
<div class="panel panel-default" *ngIf="news && news.length">
<h2 i18n>新闻</h2>
<div id="news" *ngFor="let item of news">
<h3>{{item.title}}</h3>
<span>2017-01-18</span>
<p>{{item.text}}</p>
<a i18n *ngIf="item.url" [href]="item.url" target="_blank">了解更多</a>
</div>
<!--<a href="https://mycard.moe/ygopro/arena/" target="_blank" class="moreinfo">查看所有新闻</a>-->
</div>
<!--{"exp":1839,"exp_rank":"9","pt":2207.2901,"arena_rank":"30","win":"703","lose":"568","draw":5,"all":"1276","ratio":"55.09"}-->
<div id="arena" class="panel panel-default" *ngIf="points">
<h2 i18n>排位成绩</h2>
<table class="table table-sm">
<tbody>
<div *ngIf="currentApp.isReady()">
<div *ngIf="mods && mods.length">
<table class="table table-striped">
<thead class="thead-inverse">
<tr>
<th>竞技排名</th>
<td>{{points.arena_rank}}</td>
<th>娱乐排名</th>
<td>{{points.exp_rank}}</td>
<th>#</th>
<th i18n>名称</th>
<th i18n>操作</th>
</tr>
<tr>
<th>竞技胜率</th>
<td>{{points.athletic_wl_ratio}}%</td>
<th>经验</th>
<td>{{points.exp}}</td>
</tr>
<tr>
<th>胜场</th>
<td>{{points.athletic_win}}</td>
<th>胜场</th>
<td>{{points.entertain_win}}</td>
</tr>
<tr>
<th>负场</th>
<td>{{points.entertain_lose}}</td>
<th>负场</th>
<td>{{points.entertain_lose}}</td>
</tr>
<tr>
<th>平局</th>
<td>{{points.athletic_draw}}</td>
<th>平局</th>
<td>{{points.entertain_draw}}</td>
</tr>
<tr>
<th>总场</th>
<td>{{points.athletic_all}}</td>
<th>总场</th>
<td>{{points.entertain_all}}</td>
</thead>
<tbody>
<tr *ngFor="let mod of mods; let i = index">
<th scope="row">{{i + 1}}</th>
<td>{{mod.name}}</td>
<td *ngIf="mod.isReady()">
<button i18n type="button" [disabled]="mod.isInstalled()&&!appsService.allReady(mod)" (click)="uninstall(mod)" class="btn btn-danger btn-sm">卸载</button>
</td>
<td *ngIf="!mod.isInstalled()">
<button i18n (click)="installMod(mod)" [disabled]="mod.isInstalled()&&!appsService.allReady(mod)" type="button" *ngIf="!mod.isInstalled()" class="btn btn-primary btn-sm">安装</button>
</td>
<td *ngIf="mod.isInstalled()&&!mod.isReady()">
<progress class="progress progress-striped progress-animated" value="{{mod.status.total ? mod.status.progress : 1}}" max="{{mod.status.total}}"></progress>
<!--<div i18n *ngIf="mod.isWaiting()">等待安装...</div>-->
</td>
</tr>
</tbody>
</table>
<a i18n href="https://mycard.moe/ygopro/arena/" target="_blank" class="moreinfo">更多资料</a>
</div>
<!--<div *ngIf="points" class="row">-->
<!--<dl class="col-4 row">-->
<!--<dt i18n class="col-8">竞技排名</dt>-->
<!--<dd class="col-4">{{points.arena_rank}}</dd>-->
<!--<dt i18n class="col-8">竞技胜率</dt>-->
<!--<dd class="col-4">{{points.athletic_wl_ratio}}%</dd>-->
<!--<dt i18n class="col-8">胜场</dt>-->
<!--<dd class="col-4">{{points.athletic_win}}</dd>-->
<!--<dt i18n class="col-8">负场</dt>-->
<!--<dd class="col-4">{{points.athletic_lose}}</dd>-->
<!--<dt i18n class="col-8">平局</dt>-->
<!--<dd class="col-4">{{points.athletic_draw}}</dd>-->
<!--<dt i18n class="col-8">总场</dt>-->
<!--<dd class="col-4">{{points.athletic_all}}</dd>-->
<!--</dl>-->
<!--<dl class="col-4 row">-->
<!--<dt i18n class="col-8">娱乐排名</dt>-->
<!--<dd class="col-4">{{points.exp_rank}}</dd>-->
<!--<dt i18n class="col-8">经验</dt>-->
<!--<dd class="col-4">{{points.exp}}</dd>-->
<!--<dt i18n class="col-8">胜场</dt>-->
<!--<dd class="col-4">{{points.entertain_win}}</dd>-->
<!--<dt i18n class="col-8">负场</dt>-->
<!--<dd class="col-4">{{points.entertain_lose}}</dd>-->
<!--<dt i18n class="col-8">平局</dt>-->
<!--<dd class="col-4">{{points.entertain_draw}}</dd>-->
<!--<dt i18n class="col-8">总场</dt>-->
<!--<dd class="col-4">{{points.entertain_all}}</dd>-->
<!--</dl>-->
<!--</div>-->
<div class="panel panel-default" *ngIf="news && news.length">
<h2 i18n>新闻</h2>
<div id="news" *ngFor="let item of news">
<h3>{{item.title}}</h3>
<span>2017-01-18</span>
<p>{{item.text}}</p>
<a i18n *ngIf="item.url" [href]="item.url" target="_blank">了解更多</a>
<div class="panel panel-default" id="local">
<h2 i18n>本地文件</h2>
<div>
<button i18n (click)="appsService.browse(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-secondary btn-sm">浏览本地文件</button>
<button i18n type="button" (click)="verifyFiles(currentApp)" [disabled]="!appsService.allReady(currentApp)" class="btn btn-secondary btn-sm">校验完整性</button>
<button i18n (click)="uninstall(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-secondary btn-sm">卸载</button>
</div>
<!--<a href="https://mycard.moe/ygopro/arena/" target="_blank" class="moreinfo">查看所有新闻</a>-->
</div>
<div *ngIf="currentApp.isReady()">
<div *ngIf="mods && mods.length">
<table class="table table-striped">
<thead class="thead-inverse">
<tr>
<th>#</th>
<th i18n>名称</th>
<th i18n>操作</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let mod of mods; let i = index">
<th scope="row">{{i + 1}}</th>
<td>{{mod.name}}</td>
<td *ngIf="mod.isReady()">
<button i18n type="button" [disabled]="mod.isInstalled()&&!appsService.allReady(mod)" (click)="uninstall(mod)" class="btn btn-danger btn-sm">卸载</button>
</td>
<td *ngIf="!mod.isInstalled()">
<button i18n (click)="installMod(mod)" [disabled]="mod.isInstalled()&&!appsService.allReady(mod)" type="button" *ngIf="!mod.isInstalled()" class="btn btn-primary btn-sm">安装</button>
</td>
<td *ngIf="mod.isInstalled()&&!mod.isReady()">
<progress class="progress progress-striped progress-animated" value="{{mod.status.total ? mod.status.progress : 1}}" max="{{mod.status.total}}"></progress>
<!--<div i18n *ngIf="mod.isWaiting()">等待安装...</div>-->
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="panel panel-default" id="local">
<h2 i18n>本地文件</h2>
<div>
<button i18n (click)="appsService.browse(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-secondary btn-sm">浏览本地文件</button>
<button i18n type="button" (click)="verifyFiles(currentApp)" [disabled]="!appsService.allReady(currentApp)" class="btn btn-secondary btn-sm">校验完整性</button>
<button i18n (click)="uninstall(currentApp)" [disabled]="!appsService.allReady(currentApp)" type="button" class="btn btn-secondary btn-sm">卸载</button>
<!--安装modal-->
<div class="modal fade" id="install-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" *ngIf="installOption">
<div class="modal-dialog" role="document">
<form id="install-form" class="modal-content" (ngSubmit)="install(currentApp,installOption,referencesInstall)" #theForm="ngForm">
<div class="modal-header">
<h5 i18n class="modal-title" id="myModalLabel">安装 {{currentApp.name}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span>&times;</span>
</button>
</div>
</div>
</div>
<!--安装modal-->
<div class="modal fade" id="install-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" *ngIf="installOption">
<div class="modal-dialog" role="document">
<form id="install-form" class="modal-content" (ngSubmit)="install(currentApp,installOption,referencesInstall)" #theForm="ngForm">
<div class="modal-header">
<h5 i18n class="modal-title" id="myModalLabel">安装 {{currentApp.name}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span>&times;</span>
</button>
<div class="modal-body">
<p i18n>即将开始安装 {{currentApp.name}}</p>
<h4 i18n>安装位置</h4>
<div class="form-group">
<select class="form-control" name="installPath" (change)="selectLibrary()" [(ngModel)]="installOption.installLibrary" title="path">
<option *ngFor="let library of libraries" value="{{library}}"> {{library}}</option>
<option *ngFor="let library of availableLibraries" value="create_{{library}}">在 {{library}}\ 盘新建 MyCard 库</option>
</select></div>
<h4 i18n>快捷方式</h4>
<div class="checkbox">
<input id="create_application_shortcut" type="checkbox" name="application" [(ngModel)]="installOption.createShortcut">
<label i18n *ngIf="platform == 'darwin'" for="create_application_shortcut">创建 LaunchPad 快捷方式</label>
<label i18n *ngIf="platform == 'win32'" for="create_application_shortcut">创建开始菜单快捷方式</label>
</div>
<div class="modal-body">
<p i18n>即将开始安装 {{currentApp.name}}</p>
<h4 i18n>安装位置</h4>
<div class="form-group">
<select class="form-control" name="installPath" (change)="selectLibrary()" [(ngModel)]="installOption.installLibrary" title="path">
<option *ngFor="let library of libraries" value="{{library}}"> {{library}}</option>
<option *ngFor="let library of availableLibraries" value="create_{{library}}">在 {{library}}\ 盘新建 MyCard 库</option>
</select></div>
<h4 i18n>快捷方式</h4>
<div class="checkbox">
<input id="create_application_shortcut" type="checkbox" name="application" [(ngModel)]="installOption.createShortcut">
<label i18n *ngIf="platform == 'darwin'" for="create_application_shortcut">创建 LaunchPad 快捷方式</label>
<label i18n *ngIf="platform == 'win32'" for="create_application_shortcut">创建开始菜单快捷方式</label>
</div>
<div class="checkbox">
<input id="create_desktop_shortcut" type="checkbox" name="desktop" [(ngModel)]="installOption.createDesktopShortcut">
<label i18n for="create_desktop_shortcut">创建桌面快捷方式</label>
</div>
<h4 i18n *ngIf="references.length>0">扩展内容</h4>
<div *ngFor="let reference of references"><label>
<input type="checkbox" [(ngModel)]="referencesInstall[reference.id]" name="references"> {{reference.name}}
</label></div>
<div *ngIf="currentApp.findDependencies().length">
<span i18n>依赖:</span>
<span class="dependency" *ngFor="let dependency of currentApp.findDependencies()">{{dependency.name}}</span>
</div>
<div class="checkbox">
<input id="create_desktop_shortcut" type="checkbox" name="desktop" [(ngModel)]="installOption.createDesktopShortcut">
<label i18n for="create_desktop_shortcut">创建桌面快捷方式</label>
</div>
<div class="modal-footer">
<button i18n type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button i18n type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button>
<h4 i18n *ngIf="references.length>0">扩展内容</h4>
<div *ngFor="let reference of references"><label>
<input type="checkbox" [(ngModel)]="referencesInstall[reference.id]" name="references"> {{reference.name}}
</label></div>
<div *ngIf="currentApp.findDependencies().length">
<span i18n>依赖:</span>
<span class="dependency" *ngFor="let dependency of currentApp.findDependencies()">{{dependency.name}}</span>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button i18n type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button i18n type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button>
</div>
</form>
</div>
<div class="modal fade" id="import-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" *ngIf="installOption">
<div class="modal-dialog" role="document">
<form id="import-form" class="modal-content" (ngSubmit)="importGame(currentApp,installOption,referencesInstall)" #theForm="ngForm">
<div class="modal-header">
<h5 i18n class="modal-title">导入 {{currentApp.name}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<p i18n>选择主程序 {{currentApp.actions.get('main').execute}}</p>
<label class="custom-file" lang="en">
<input (click)="$event.preventDefault();selectImport(currentApp)" type="file" id="file" class="custom-file-input">
<span class="custom-file-control">{{import_path || currentApp.actions.get('main').execute}}</span>
</label>
<h4 i18n>导入到</h4>
<div class="form-group">
<select class="form-control" name="installPath" (change)="selectLibrary()" [(ngModel)]="installOption.installLibrary" title="path">
<option *ngFor="let library of libraries" value="{{library}}"> {{library}}</option>
<option *ngFor="let library of availableLibraries" value="create_{{library}}">在 {{library}}\ 盘新建 MyCard 库</option>
</select>
</div>
<!--<h4 i18n>快捷方式</h4>-->
<!--<div class="checkbox">-->
<!--<input id="create_application_shortcut" type="checkbox" name="application" [(ngModel)]="installOption.createShortcut">-->
<!--<label i18n *ngIf="platform == 'darwin'" for="create_application_shortcut">创建 LaunchPad 快捷方式</label>-->
<!--<label i18n *ngIf="platform == 'win32'" for="create_application_shortcut">创建开始菜单快捷方式</label>-->
<!--</div>-->
<!--<div class="checkbox">-->
<!--<input id="create_desktop_shortcut" type="checkbox" name="desktop" [(ngModel)]="installOption.createDesktopShortcut">-->
<!--<label i18n for="create_desktop_shortcut">创建桌面快捷方式</label>-->
<!--</div>-->
<h4 i18n *ngIf="references.length>0">扩展内容</h4>
<div *ngFor="let reference of references"><label>
<input type="checkbox" [(ngModel)]="referencesInstall[reference.id]" name="references"> {{reference.name}}
</label></div>
<div *ngIf="currentApp.findDependencies().length">
<span i18n>依赖:</span>
<span class="dependency" *ngFor="let dependency of currentApp.findDependencies()">{{dependency.name}}</span>
</div>
</div>
<div class="modal fade" id="import-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" *ngIf="installOption">
<div class="modal-dialog" role="document">
<form id="import-form" class="modal-content" (ngSubmit)="importGame(currentApp,installOption,referencesInstall)" #theForm="ngForm">
<div class="modal-header">
<h5 i18n class="modal-title">导入 {{currentApp.name}}</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span>&times;</span>
</button>
</div>
<div class="modal-body">
<p i18n>选择主程序 {{currentApp.actions.get('main').execute}}</p>
<label class="custom-file" lang="en">
<input (click)="$event.preventDefault();selectImport(currentApp)" type="file" id="file" class="custom-file-input">
<span class="custom-file-control">{{import_path || currentApp.actions.get('main').execute}}</span>
</label>
<h4 i18n>导入到</h4>
<div class="form-group">
<select class="form-control" name="installPath" (change)="selectLibrary()" [(ngModel)]="installOption.installLibrary" title="path">
<option *ngFor="let library of libraries" value="{{library}}"> {{library}}</option>
<option *ngFor="let library of availableLibraries" value="create_{{library}}">在 {{library}}\ 盘新建 MyCard 库</option>
</select>
</div>
<div class="modal-footer">
<button i18n type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button i18n type="submit" [disabled]="import_path && !theForm.form.valid" class="btn btn-primary">导入</button>
<!--<h4 i18n>快捷方式</h4>-->
<!--<div class="checkbox">-->
<!--<input id="create_application_shortcut" type="checkbox" name="application" [(ngModel)]="installOption.createShortcut">-->
<!--<label i18n *ngIf="platform == 'darwin'" for="create_application_shortcut">创建 LaunchPad 快捷方式</label>-->
<!--<label i18n *ngIf="platform == 'win32'" for="create_application_shortcut">创建开始菜单快捷方式</label>-->
<!--</div>-->
<!--<div class="checkbox">-->
<!--<input id="create_desktop_shortcut" type="checkbox" name="desktop" [(ngModel)]="installOption.createDesktopShortcut">-->
<!--<label i18n for="create_desktop_shortcut">创建桌面快捷方式</label>-->
<!--</div>-->
<h4 i18n *ngIf="references.length>0">扩展内容</h4>
<div *ngFor="let reference of references"><label>
<input type="checkbox" [(ngModel)]="referencesInstall[reference.id]" name="references"> {{reference.name}}
</label></div>
<div *ngIf="currentApp.findDependencies().length">
<span i18n>依赖:</span>
<span class="dependency" *ngFor="let dependency of currentApp.findDependencies()">{{dependency.name}}</span>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button i18n type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button i18n type="submit" [disabled]="import_path && !theForm.form.valid" class="btn btn-primary">导入</button>
</div>
</form>
</div>
</div>
\ No newline at end of file
import {Component, OnInit, Input, ChangeDetectorRef, OnChanges, SimpleChanges} from '@angular/core';
import {Component, OnInit, Input, ChangeDetectorRef, OnChanges, SimpleChanges, ElementRef} from '@angular/core';
import {AppsService} from './apps.service';
import {InstallOption} from './install-option';
import {SettingsService} from './settings.sevices';
......@@ -34,21 +34,19 @@ export class AppDetailComponent implements OnInit, OnChanges {
points: Points;
constructor(private appsService: AppsService, private settingsService: SettingsService,
private downloadService: DownloadService, private ref: ChangeDetectorRef) {
private downloadService: DownloadService, private ref: ChangeDetectorRef, private el: ElementRef) {
}
ngOnChanges(changes: SimpleChanges): void {
if (changes['currentApp']) {
if (this.currentApp.background && this.currentApp.background.length > 0) {
let url = this.currentApp.background[Math.floor(Math.random() * this.currentApp.background.length)];
this.background = `url(${url})`;
if (this.currentApp.background) {
this.el.nativeElement.style.background = `url("${this.currentApp.background}") rgba(255,255,255,.8)`;
} else {
this.background = '';
this.el.nativeElement.style.background = 'white';
}
}
}
async ngOnInit(): Promise<void> {
let volume = 'A';
for (let i = 0; i < 26; i++) {
......
......@@ -60,7 +60,7 @@
<div id="right">
<div id="main">
<app-detail *ngIf="currentApp" [currentApp]="currentApp"></app-detail>
<app-detail class="scroll" *ngIf="currentApp" [currentApp]="currentApp"></app-detail>
<roster class="scroll"></roster>
</div>
......
......@@ -48,6 +48,10 @@ export class LobbyComponent implements OnInit {
window.close();
}
}
// 特化个 YGOPRO 国际服聊天室。其他的暂时没需求。
if (!this.settingsService.getLocale().startsWith('zh')) {
this.apps.get('ygopro')!.conference = 'ygopro-international'
}
this.ref.detectChanges();
// $(this.search.nativeElement).typeahead(<any>{
......@@ -75,12 +79,18 @@ export class LobbyComponent implements OnInit {
if (width < 190) {
width = 190;
}
if (width > 400) {
width = 400;
}
this.resizing.style.width = `${width}px`;
} else {
let height = this.offset - event.clientY;
if (height < 236) {
height = 236;
}
if (height > 540) {
height = 540;
}
this.resizing.style.height = `${height}px`;
}
});
......
......@@ -4,8 +4,7 @@
<button i18n [disabled]="!appsService.allReady(app)" (click)="cancel_match()" *ngIf="matching_arena == 'athletic'" type="button" class="btn btn-primary btn-sm">取消等待</button>
<button i18n [disabled]="matching||!appsService.allReady(app)" (click)="request_match('entertain')" *ngIf="matching_arena != 'entertain'" type="button" class="btn btn-secondary btn-sm">娱乐匹配</button>
<button i18n [disabled]="!appsService.allReady(app)" (click)="cancel_match()" *ngIf="matching_arena == 'entertain'" type="button" class="btn btn-secondary btn-sm">取消等待</button>
<!--<button i18n [disabled]="matching||!appsService.allReady(app)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#game-create-modal">创建房间</button>-->
<button i18n [disabled]="matching||!appsService.allReady(app)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#game-list-modal">房间列表</button>
<button i18n [disabled]="matching||!appsService.allReady(app)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#game-list-modal">自定义游戏</button>
<button i18n [disabled]="!appsService.allReady(app)" type="button" class="btn btn-secondary btn-sm" data-toggle="modal" data-target="#game-create-windbot">单人模式</button>
</div>
<div class="input-group input-group-sm">
......@@ -13,7 +12,6 @@
<select class="form-control form-control-sm" id="exampleSelect1" name="deck" [(ngModel)]="current_deck">
<option *ngFor="let deck of decks" [ngValue]="deck">{{deck}}</option>
</select>
<!--<input type="text" class="form-control" aria-label="Text input with checkbox">-->
<span class="input-group-btn">
<button id="edit_deck_button" i18n [disabled]="!appsService.allReady(app)" class="btn btn-secondary btn-sm" (click)="edit_deck(current_deck)">编辑</button>
</span>
......
......@@ -140,8 +140,10 @@ function createWindow() {
mainWindow = new BrowserWindow({
width: 1024,
height: 640,
minWidth: 1024,
minHeight: 640,
frame: process.platform == 'darwin',
transparent: true,
transparent: process.platform != 'darwin',
titleBarStyle: process.platform == 'darwin' ? 'hidden' : null
});
......
<?xml version="1.0" ?><xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
<file datatype="plaintext" original="ng2.template" source-language="zh-CN" target-language="en-US">
<body>
<trans-unit datatype="html" id="ae5dccdf399fb229fb9f0153a7ec5c28a4579ca1">
<source>登录</source>
<target>Sign In</target>
<trans-unit datatype="html" id="86738bd5d32223ffbb690a7c71360ddf8e7b1b2e">
<source>竞技匹配</source>
<target>Ranked Match</target>
</trans-unit>
<trans-unit datatype="html" id="fbfb7c4354663a67786aa5aee748d1f38b8fe71c">
<source>游戏</source>
<target>Library</target>
<trans-unit datatype="html" id="37869c115276c5df476f1f5aae75c099ffb35b59">
<source>取消等待</source>
<target>Cancel</target>
</trans-unit>
<trans-unit datatype="html" id="c4fc2b3584e7581cddb08bb1ebfa41e601195d5b">
<source>社区</source>
<target>Community</target>
<trans-unit datatype="html" id="0bf938a69dc640aba46428d1cbbd2fef34c88daa">
<source>娱乐匹配</source>
<target>Unranked Match</target>
</trans-unit>
<trans-unit datatype="html" id="8422ff34db177236e8f54d415b07c972284c36bf">
<source>切换账号</source>
<target>Change Account</target>
<trans-unit datatype="html" id="5026868223e028297430142f8cafdf6dd6fcf004">
<source>自定义游戏</source>
<target>Custom Game</target>
</trans-unit>
<trans-unit datatype="html" id="67adbad4f646bb8e1c440522bafea8fe5f7e6bfd">
<source>设置</source>
<target>Custom</target>
<trans-unit datatype="html" id="3768b60a7e2625bb1fc2db37eb8c6b8e4bd99101">
<source>单人模式</source>
<target>Single Mode</target>
</trans-unit>
<trans-unit datatype="html" id="9d9335d175b40b85f2b98610af517a8b7509c089">
<source>MyCard 设置</source>
<target>MyCard Settings</target>
<trans-unit datatype="html" id="def237147323023c1f5ce0579345da19d4707fdb">
<source>卡组</source>
<target>Deck</target>
</trans-unit>
<trans-unit datatype="html" id="b22ce2179c700e2499e1d402fb1d3f4392c7f6af">
<source>语言</source>
<target>Language</target>
<trans-unit datatype="html" id="a842d4536fdee499a55c753c50810254347ced32">
<source>编辑</source>
<target>Edit</target>
</trans-unit>
<trans-unit datatype="html" id="80a97c5d9418c828bebf91b112188f12a4f5317c">
<source>英文</source>
<target>English</target>
</trans-unit>
<trans-unit datatype="html" id="8f9b332ffed52a814f1926470890d7e75865f2ce">
<source>简体中文</source>
<target>Simplified Chinese</target>
<trans-unit datatype="html" id="1e64bb9c96dfc2b9cb03179dd0c9f992e0645e5f">
<source>选择对手</source>
<target>Select Opponent</target>
</trans-unit>
<trans-unit datatype="html" id="f6f3be110e7043e3cfe71a7bd75b8b3be79bff5d">
......@@ -51,39 +46,157 @@
<target>Cancel</target>
</trans-unit>
<trans-unit datatype="html" id="af09a0e18f4200fdb729133ddcd5bb43d52439aa">
<source>确定</source>
<target>OK</target>
</trans-unit>
<trans-unit datatype="html" id="1761e51e36b01ae1e0012914bd58aa2a741d0401">
<source>已安装</source>
<target>Installed</target>
</trans-unit>
<trans-unit datatype="html" id="69f3fab778e92fcec3a8c38d53d771a36e6d5230">
<source>推荐</source>
<target>Recommend</target>
</trans-unit>
<trans-unit datatype="html" id="fc570ecca13755cb4a92e7513fbd55c2d412f23c">
<source>迷之物体</source>
<target>Something</target>
</trans-unit>
<trans-unit datatype="html" id="0873cd6df2d1f1016e02526aa9ba32415c1a11d8">
<source>东方 Project</source>
<target>Touhou Project</target>
</trans-unit>
<trans-unit datatype="html" id="785db32107cc0b47564b05381a1d782021d77c67">
<source>东方旧作</source>
<target>Touhou old series</target>
</trans-unit>
<trans-unit datatype="html" id="817376261844eb7eb0c035ed0e3fce744a96b6d9">
<source>已安装的运行库</source>
<target>Installed Runtime Library</target>
<trans-unit datatype="html" id="19923836b1ae79614782426a7a001d8ccfa27b5c">
<source>创建房间</source>
<target>Custom Game</target>
</trans-unit>
<trans-unit datatype="html" id="e35d1bf7c735e8df55a62046cd2d9f820bf5bffd">
<source>游戏标题</source>
<target>Title</target>
</trans-unit>
<trans-unit datatype="html" id="4b911deaa4defd0803635012281f3dd1112aabd1">
<source>卡片允许</source>
<target>Rule</target>
</trans-unit>
<trans-unit datatype="html" id="93d3b6bb4f3a66efd8c49f9063f6c8d6a9e959bf">
<source>OCG</source>
<target>OCG</target>
</trans-unit>
<trans-unit datatype="html" id="150cb34526cf737163beb63ab76e4809ac1367dd">
<source>TCG</source>
<target>TCG</target>
</trans-unit>
<trans-unit datatype="html" id="be6d109c359b1d11b261280915e6b1706ca3ed9b">
<source>OCG &amp; TCG</source>
<target>TCG/OCG</target>
</trans-unit>
<trans-unit datatype="html" id="2a3f48f9ea5e6aae92e249ac2b279dbc07a6127d">
<source>专有卡禁止</source>
<target>Unspecified</target>
</trans-unit>
<trans-unit datatype="html" id="d62a2717a0381d996785271c61177711777ba63c">
<source>决斗模式</source>
<target>Duel mode</target>
</trans-unit>
<trans-unit datatype="html" id="e436a4a0da03320dc61ba35bfab390ab85a23d0c">
<source>单局模式</source>
<target>Single Duel</target>
</trans-unit>
<trans-unit datatype="html" id="2cf71acc936cf244cc5862b28efe461e91cb137d">
<source>比赛模式</source>
<target>Match</target>
</trans-unit>
<trans-unit datatype="html" id="c2ed31e132c305b995382adce0f95ccdabadaa21">
<source>TAG</source>
<target>TAG</target>
</trans-unit>
<trans-unit datatype="html" id="d4038dd5d0e9d5139d425fc7bea40e40d965cc5b">
<source>额外选项</source>
<target>Additional Options</target>
</trans-unit>
<trans-unit datatype="html" id="01cfbee3f1d69f5adae299b7b8c8d75034aef53b">
<source>初始 LP</source>
<target>Starting LP</target>
</trans-unit>
<trans-unit datatype="html" id="0d72e50857f1d2504e08f7886d4c9d35a46e3ed9">
<source>初始手牌数</source>
<target>Starting Hand</target>
</trans-unit>
<trans-unit datatype="html" id="88cc5676c5322fd55c1df94ab487359100e6f9dd">
<source>每回合抽卡</source>
<target>Draw per Turn</target>
</trans-unit>
<trans-unit datatype="html" id="e405d8c7feb2bed82f3f0667657fa4ab668ae015">
<source>允许启动效果优先权</source>
<target>Ignition Priority</target>
</trans-unit>
<trans-unit datatype="html" id="6e7470ddf4c35f6fab39b6ebeadb1780701a5469">
<source>不检查卡组</source>
<target>Don't check</target>
</trans-unit>
<trans-unit datatype="html" id="0320acff078b039f2220bb385586cd2e24392bbb">
<source>开局不洗卡组</source>
<target>Don't shuffle</target>
</trans-unit>
<trans-unit datatype="html" id="c17e9385db80e1881f37dda25d109b115a2843b3">
<source>查看房间</source>
<target>View rooms</target>
</trans-unit>
<trans-unit datatype="html" id="f8ae23b4314929573cf0e815ccc12d70486dd74f">
<source>创建</source>
<target>Create</target>
</trans-unit>
<trans-unit datatype="html" id="3872a823a98042e4730861ab6f9344239d9deeb6">
<source>玩家</source>
<target>Player</target>
</trans-unit>
<trans-unit datatype="html" id="8514a93609dc67a44e5b198b53e42fe468f8a81a">
<source>
<x id="INTERPOLATION"/>
LP
</source>
<target>
<x id="INTERPOLATION"/>
LP
</target>
</trans-unit>
<trans-unit datatype="html" id="4a6f5fb56c2367667232cc46608dc46a282e2e56">
<source>
<x id="INTERPOLATION"/>
初始
</source>
<target>
<x id="INTERPOLATION"/>
Starting
</target>
</trans-unit>
<trans-unit datatype="html" id="cae091ce48a80dbc22d5fde2eea1cbd34e7038c7">
<source>
<x id="INTERPOLATION"/>
抽卡
</source>
<target>
<x id="INTERPOLATION"/>
Draw
</target>
</trans-unit>
<trans-unit datatype="html" id="be32d8fb22f36c3b2c1530e91f2ca07d108c8abe">
<source>优先权</source>
<target>Priority</target>
</trans-unit>
<trans-unit datatype="html" id="b5be173f96718dfa737f1da31d9ffab5b803561e">
<source>不检查</source>
<target>Don't check</target>
</trans-unit>
<trans-unit datatype="html" id="517c8b6e5361bc32d7458a1e8b2bdbf09abb6f01">
<source>不洗卡</source>
<target>Don't shuffle</target>
</trans-unit>
<trans-unit datatype="html" id="a8cae935472a05e1c8c9be436bb7b1bdea96a54a">
......@@ -124,8 +237,13 @@
<trans-unit datatype="html" id="d3852e0147360b29d0d6076e95dd1ad0098a60db">
<source>运行</source>
<target>Start</target>
</trans-unit>
<trans-unit datatype="html" id="67adbad4f646bb8e1c440522bafea8fe5f7e6bfd">
<source>设置</source>
<target>Settings</target>
</trans-unit>
<trans-unit datatype="html" id="3d6cad40e26f99e39bc6f5925a890ba83b67ce5b">
<source>联机</source>
<target>Network</target>
......@@ -139,8 +257,58 @@
<trans-unit datatype="html" id="95d5e106e679433bec012420b1ab9334c294bc7e">
<source>选择服务器</source>
<target>Select Server</target>
</trans-unit>
</trans-unit>
<trans-unit datatype="html" id="409ab83692bb4c157cddafe70de9e95531be796e">
<source>排位成绩</source>
<target>Rank Result</target>
</trans-unit>
<trans-unit datatype="html" id="eb22ba5ed7019f8799bc645c508108136ad54096">
<source>竞技排名</source>
<target>D.P Rank</target>
</trans-unit>
<trans-unit datatype="html" id="78da696d0961bc2c3f10d9e6f5998161ba17b75f">
<source>娱乐排名</source>
<target>EXP Rank</target>
</trans-unit>
<trans-unit datatype="html" id="c3e6d747b93851670dd03bc38346f8f7f6fee421">
<source>竞技胜率</source>
<target>Win Rate</target>
</trans-unit>
<trans-unit datatype="html" id="ed1a1a97ab1b37a358ca132a5c87040a9af13693">
<source>经验</source>
<target>EXP</target>
</trans-unit>
<trans-unit datatype="html" id="0ce6333a9b6c85ccd57ecdbee84ef7f6f3f51ef4">
<source>胜场</source>
<target>Win</target>
</trans-unit>
<trans-unit datatype="html" id="a89a5c5567bbe1de398b978749b9a1bf6f1281bf">
<source>负场</source>
<target>Lose</target>
</trans-unit>
<trans-unit datatype="html" id="41a0424d676209939f79f70c8ef8aa8a143d3451">
<source>平局</source>
<target>Draw</target>
</trans-unit>
<trans-unit datatype="html" id="3f4d682cd4fc7579e9ea6bd1bddec84dbc35fd50">
<source>总场</source>
<target>Total</target>
</trans-unit>
<trans-unit datatype="html" id="f5f5d4874301c4b42cdbfab010c953631abbcec9">
<source>更多资料</source>
<target>More Info</target>
</trans-unit>
<trans-unit datatype="html" id="63346eb53d54138db02c1713ae58f73bb1b8786f">
<source>新闻</source>
<target>News</target>
......@@ -241,239 +409,64 @@
<target>Import to</target>
</trans-unit>
<trans-unit datatype="html" id="def237147323023c1f5ce0579345da19d4707fdb">
<source>卡组</source>
<target>Deck</target>
</trans-unit>
<trans-unit datatype="html" id="a842d4536fdee499a55c753c50810254347ced32">
<source>编辑</source>
<target>Edit</target>
</trans-unit>
<trans-unit datatype="html" id="08254f4ac965519b9a0befb43fd82bd6fa72a7af">
<source>删除</source>
<target>Delete</target>
</trans-unit>
<trans-unit datatype="html" id="a9f9a37033c904e50f9920798cf02b0f3ccd8270">
<source>刷新</source>
<target>Refresh</target>
</trans-unit>
<trans-unit datatype="html" id="86738bd5d32223ffbb690a7c71360ddf8e7b1b2e">
<source>竞技匹配</source>
<target>Ranked</target>
</trans-unit>
<trans-unit datatype="html" id="37869c115276c5df476f1f5aae75c099ffb35b59">
<source>取消等待</source>
<target>Cancel</target>
</trans-unit>
<trans-unit datatype="html" id="0bf938a69dc640aba46428d1cbbd2fef34c88daa">
<source>娱乐匹配</source>
<target>Unranked</target>
</trans-unit>
<trans-unit datatype="html" id="19923836b1ae79614782426a7a001d8ccfa27b5c">
<source>创建房间</source>
<target>Create Game</target>
</trans-unit>
<trans-unit datatype="html" id="c54a3c40a2766446dd03b0af75f64055aa404855">
<source>房间列表</source>
<target>Custom Game</target>
</trans-unit>
<trans-unit datatype="html" id="3768b60a7e2625bb1fc2db37eb8c6b8e4bd99101">
<source>单人模式</source>
<target>Single Mode</target>
</trans-unit>
<trans-unit datatype="html" id="409ab83692bb4c157cddafe70de9e95531be796e">
<source>排位成绩</source>
<target>Rank Result</target>
</trans-unit>
<trans-unit datatype="html" id="c46097c9d5e0501f2dc3a79eaafa0ca8330b0a25">
<source>D.P 排名</source>
<target>D.P Rank</target>
</trans-unit>
<trans-unit datatype="html" id="e7dd051e36eb95e7d6ce704dff0068e1bf5bd81a">
<source>D.P 胜率</source>
<target>Win Rate</target>
</trans-unit>
<trans-unit datatype="html" id="0ce6333a9b6c85ccd57ecdbee84ef7f6f3f51ef4">
<source>胜场</source>
<target>Win</target>
</trans-unit>
<trans-unit datatype="html" id="a89a5c5567bbe1de398b978749b9a1bf6f1281bf">
<source>负场</source>
<target>Lose</target>
</trans-unit>
<trans-unit datatype="html" id="41a0424d676209939f79f70c8ef8aa8a143d3451">
<source>平局</source>
<target>Draw</target>
</trans-unit>
<trans-unit datatype="html" id="3f4d682cd4fc7579e9ea6bd1bddec84dbc35fd50">
<source>总场</source>
<target>Total</target>
</trans-unit>
<trans-unit datatype="html" id="4a893998eefe3a0d103863aac391b5789870c089">
<source>EXP 排名</source>
<target>EXP Rank</target>
</trans-unit>
<trans-unit datatype="html" id="6ec23deac8d2367c3a7a4f27946d0835634514fb">
<source>EXP</source>
<target>EXP</target>
</trans-unit>
<trans-unit datatype="html" id="f5f5d4874301c4b42cdbfab010c953631abbcec9">
<source>更多资料</source>
<target>More Info</target>
</trans-unit>
<trans-unit datatype="html" id="1e64bb9c96dfc2b9cb03179dd0c9f992e0645e5f">
<source>选择对手</source>
<target>Select Opponent</target>
</trans-unit>
<trans-unit datatype="html" id="e35d1bf7c735e8df55a62046cd2d9f820bf5bffd">
<source>游戏标题</source>
<target>Title</target>
</trans-unit>
<trans-unit datatype="html" id="4b911deaa4defd0803635012281f3dd1112aabd1">
<source>卡片允许</source>
<target>Rule</target>
</trans-unit>
<trans-unit datatype="html" id="93d3b6bb4f3a66efd8c49f9063f6c8d6a9e959bf">
<source>OCG</source>
<target>OCG</target>
</trans-unit>
<trans-unit datatype="html" id="150cb34526cf737163beb63ab76e4809ac1367dd">
<source>TCG</source>
<target>TCG</target>
</trans-unit>
<trans-unit datatype="html" id="be6d109c359b1d11b261280915e6b1706ca3ed9b">
<source>OCG &amp; TCG</source>
<target>TCG/OCG</target>
</trans-unit>
<trans-unit datatype="html" id="2a3f48f9ea5e6aae92e249ac2b279dbc07a6127d">
<source>专有卡禁止</source>
<target>Unspecified</target>
</trans-unit>
<trans-unit datatype="html" id="d62a2717a0381d996785271c61177711777ba63c">
<source>决斗模式</source>
<target>Duel mode</target>
</trans-unit>
<trans-unit datatype="html" id="e436a4a0da03320dc61ba35bfab390ab85a23d0c">
<source>单局模式</source>
<target>Single Duel</target>
</trans-unit>
<trans-unit datatype="html" id="2cf71acc936cf244cc5862b28efe461e91cb137d">
<source>比赛模式</source>
<target>Match</target>
</trans-unit>
<trans-unit datatype="html" id="c2ed31e132c305b995382adce0f95ccdabadaa21">
<source>TAG</source>
<target>TAG</target>
</trans-unit>
<trans-unit datatype="html" id="d4038dd5d0e9d5139d425fc7bea40e40d965cc5b">
<source>额外选项</source>
<target>Additional Options</target>
</trans-unit>
<trans-unit datatype="html" id="01cfbee3f1d69f5adae299b7b8c8d75034aef53b">
<source>初始 LP</source>
<target>Starting LP</target>
</trans-unit>
<trans-unit datatype="html" id="0d72e50857f1d2504e08f7886d4c9d35a46e3ed9">
<source>初始手牌数</source>
<target>Starting Hand</target>
</trans-unit>
<trans-unit datatype="html" id="88cc5676c5322fd55c1df94ab487359100e6f9dd">
<source>每回合抽卡</source>
<target>Draw per Turn</target>
</trans-unit>
<trans-unit datatype="html" id="e405d8c7feb2bed82f3f0667657fa4ab668ae015">
<source>允许启动效果优先权</source>
<target>Ignition Priority</target>
<trans-unit datatype="html" id="1761e51e36b01ae1e0012914bd58aa2a741d0401">
<source>已安装</source>
<target>Installed</target>
</trans-unit>
<trans-unit datatype="html" id="6e7470ddf4c35f6fab39b6ebeadb1780701a5469">
<source>不检查卡组</source>
<target>Don't check</target>
<trans-unit datatype="html" id="69f3fab778e92fcec3a8c38d53d771a36e6d5230">
<source>推荐</source>
<target>Recommend</target>
</trans-unit>
<trans-unit datatype="html" id="0320acff078b039f2220bb385586cd2e24392bbb">
<source>开局不洗卡组</source>
<target>Don't shuffle</target>
<trans-unit datatype="html" id="fc570ecca13755cb4a92e7513fbd55c2d412f23c">
<source>迷之物体</source>
<target>Something</target>
</trans-unit>
<trans-unit datatype="html" id="c17e9385db80e1881f37dda25d109b115a2843b3">
<source>查看房间</source>
<target>View rooms</target>
<trans-unit datatype="html" id="0873cd6df2d1f1016e02526aa9ba32415c1a11d8">
<source>东方 Project</source>
<target>Touhou Project</target>
</trans-unit>
<trans-unit datatype="html" id="f8ae23b4314929573cf0e815ccc12d70486dd74f">
<source>创建</source>
<target>Create</target>
<trans-unit datatype="html" id="785db32107cc0b47564b05381a1d782021d77c67">
<source>东方旧作</source>
<target>Touhou old series</target>
</trans-unit>
<trans-unit datatype="html" id="3872a823a98042e4730861ab6f9344239d9deeb6">
<source>玩家</source>
<target>Player</target>
<trans-unit datatype="html" id="817376261844eb7eb0c035ed0e3fce744a96b6d9">
<source>已安装的运行库</source>
<target>Installed Runtime Library</target>
</trans-unit>
<trans-unit datatype="html" id="8514a93609dc67a44e5b198b53e42fe468f8a81a">
<source><x id="INTERPOLATION"/> LP</source>
<target><x id="INTERPOLATION"/> LP</target>
<trans-unit datatype="html" id="ae5dccdf399fb229fb9f0153a7ec5c28a4579ca1">
<source>登录</source>
<target>Sign In</target>
</trans-unit>
<trans-unit datatype="html" id="4a6f5fb56c2367667232cc46608dc46a282e2e56">
<source><x id="INTERPOLATION"/> 初始</source>
<target><x id="INTERPOLATION"/> Starting</target>
<trans-unit datatype="html" id="fbfb7c4354663a67786aa5aee748d1f38b8fe71c">
<source>游戏</source>
<target>Library</target>
</trans-unit>
<trans-unit datatype="html" id="cae091ce48a80dbc22d5fde2eea1cbd34e7038c7">
<source><x id="INTERPOLATION"/> 抽卡</source>
<target><x id="INTERPOLATION"/> Draw</target>
<trans-unit datatype="html" id="c4fc2b3584e7581cddb08bb1ebfa41e601195d5b">
<source>社区</source>
<target>Community</target>
</trans-unit>
<trans-unit datatype="html" id="be32d8fb22f36c3b2c1530e91f2ca07d108c8abe">
<source>优先权</source>
<target>Priority</target>
<trans-unit datatype="html" id="9d9335d175b40b85f2b98610af517a8b7509c089">
<source>MyCard 设置</source>
<target>MyCard Settings</target>
</trans-unit>
<trans-unit datatype="html" id="b5be173f96718dfa737f1da31d9ffab5b803561e">
<source>不检查</source>
<target>Don't check</target>
<trans-unit datatype="html" id="b22ce2179c700e2499e1d402fb1d3f4392c7f6af">
<source>语言</source>
<target>Language</target>
</trans-unit>
<trans-unit datatype="html" id="517c8b6e5361bc32d7458a1e8b2bdbf09abb6f01">
<source>不洗卡</source>
<target>Don't shuffle</target>
<trans-unit datatype="html" id="af09a0e18f4200fdb729133ddcd5bb43d52439aa">
<source>确定</source>
<target>OK</target>
</trans-unit>
</body>
......
......@@ -6,10 +6,12 @@ html, body {
body {
font-family: -apple-system, Arial, 'Source Sans Pro', "Microsoft YaHei", 'Microsoft JhengHei', "WenQuanYi Micro Hei", sans-serif;
-webkit-user-select: none;
}
body.win32 {
background: transparent;
border-radius: 5px;
border: 1px solid #eee;
padding-right: 0 !important;
}
......@@ -44,7 +46,7 @@ mycard {
border-radius: initial;
}
#navbar a, #navbar i, #navbar img {
#navbar .nav-link, #navbar .profile, #navbar i, #navbar img {
-webkit-app-region: no-drag;
}
......@@ -54,7 +56,7 @@ mycard {
}
/* Turn on custom 8px wide scrollbar */
::-webkit-scrollbar {
.win32 ::-webkit-scrollbar {
width: 8px; /* 1px wider than Lion. */
/* This is more usable for users trying to click it. */
background-color: rgba(0, 0, 0, 0);
......@@ -62,19 +64,19 @@ mycard {
}
/* hover effect for both scrollbar area, and scrollbar 'thumb' */
::-webkit-scrollbar:active {
.win32 ::-webkit-scrollbar:active {
background-color: rgba(0, 0, 0, 0.05);
}
/* The scrollbar 'thumb' ...that marque oval shape in a scrollbar */
::-webkit-scrollbar-thumb:vertical {
.win32 ::-webkit-scrollbar-thumb:vertical {
/* This is the EXACT color of Mac OS scrollbars.
Yes, I pulled out digital color meter */
background: rgba(0, 0, 0, 0.1);
-webkit-border-radius: 100px;
}
::-webkit-scrollbar-thumb:vertical:active {
.win32 ::-webkit-scrollbar-thumb:vertical:active {
background: rgba(0, 0, 0, 0.2); /* Some darker color when you click it */
-webkit-border-radius: 100px;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment