Commit 07b9e520 authored by 神楽坂玲奈's avatar 神楽坂玲奈

news

parent 46a685a2
...@@ -20,3 +20,6 @@ progress { ...@@ -20,3 +20,6 @@ progress {
margin-top: 2px; margin-top: 2px;
} }
.carousel-inner img {
width: 100%;
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
<div *ngIf="!appsService.getDownloadInfo(routingService.app)"> <div *ngIf="!appsService.getDownloadInfo(routingService.app)">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#install-modal">安装</button> <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#install-modal">安装</button>
<button type="button" class="btn btn-secondary">导入</button> <button type="button" class="btn btn-secondary">导入</button>
<button type="button" class="btn btn-secondary">正版代购</button> <!--<button type="button" class="btn btn-secondary">正版代购</button>-->
</div> </div>
<div *ngIf="appsService.getDownloadInfo(routingService.app)"> <div *ngIf="appsService.getDownloadInfo(routingService.app)">
<div *ngIf="appsService.getDownloadInfo(routingService.app).status === 'install'">正在安装...</div> <div *ngIf="appsService.getDownloadInfo(routingService.app).status === 'install'">正在安装...</div>
...@@ -18,23 +18,45 @@ ...@@ -18,23 +18,45 @@
<div *ngIf="isInstalled && (routingService.app != 'ygopro')"> <div *ngIf="isInstalled && (routingService.app != 'ygopro')">
<button (click)="startApp(routingService.app)" type="button" class="btn btn-primary">运行</button> <button (click)="startApp(routingService.app)" type="button" class="btn btn-primary">运行</button>
<button type="button" data-toggle="modal" data-target="#settings-modal" class="btn btn-secondary">设置</button> <button type="button" data-toggle="modal" data-target="#settings-modal" class="btn btn-secondary">设置</button>
<button (click)="appsService.browse(routingService.app)" type="button" class="btn btn-secondary">游览本地文件</button> <!--<button (click)="appsService.browse(routingService.app)" type="button" class="btn btn-secondary">游览本地文件</button>-->
<button type="button" class="btn btn-secondary">联机</button> <button type="button" class="btn btn-secondary">联机</button>
</div> </div>
<ygopro *ngIf="isInstalled && (routingService.app == 'ygopro')"></ygopro> <ygopro *ngIf="isInstalled && (routingService.app == 'ygopro')"></ygopro>
<br> <br>
<h2>新闻</h2> <h2 *ngIf="news">新闻</h2>
<p *ngIf="!news">没有新闻</p> <!--<div *ngIf="news">
<div *ngIf="news">
<div class="list-group"> <div class="list-group">
<a *ngFor="let item of news" href="{{item.url}}" class="list-group-item">{{item.title}}</a> <a *ngFor="let item of news" href="{{item.url}}" class="list-group-item">{{item.title}}</a>
</div> </div>
</div>-->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li *ngFor="let item of news; let index = index;" data-target="#carousel-example-generic" [data-slide-to]="index" [class.active]="index == 0"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div *ngFor="let item of news; let index = index;" class="carousel-item" [class.active]="index == 0">
<img [src]="item.image" [alt]="item.title">
<div class="carousel-caption">
<h3>{{item.title}}</h3>
<p>{{item.text}}</p>
</div>
</div>
</div>
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="icon-prev" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="icon-next" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div> </div>
<br> <br>
<div *ngIf="friends"> <div *ngIf="friends">
...@@ -88,7 +110,12 @@ ...@@ -88,7 +110,12 @@
</table> </table>
</div> </div>
<button (click)="appsService.doTar()">DOTAR</button> <div *ngIf="isInstalled">
<h2>本地文件</h2>
<button (click)="appsService.browse(routingService.app)" type="button" class="btn btn-secondary">浏览本地文件</button>
<button (click)="uninstall()" type="button" class="btn btn-secondary">{{'uninstall'|translate}}</button>
</div>
<div class="modal fade" id="settings-modal" tabindex="-1"> <div class="modal fade" id="settings-modal" tabindex="-1">
<div class="modal-dialog" role="document"> <div class="modal-dialog" role="document">
<div class="modal-content"> <div class="modal-content">
...@@ -187,10 +214,7 @@ ...@@ -187,10 +214,7 @@
<div class="modal-footer"> <div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button> <button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button id="submit" type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button> <button id="submit" type="submit" [disabled]="!theForm.form.valid" class="btn btn-primary">安装</button>
</div> </div>
<!--
-->
</form> </form>
</div> </div>
</div> </div>
......
...@@ -229,6 +229,7 @@ export class AppsService { ...@@ -229,6 +229,7 @@ export class AppsService {
deleteFile(path: string): Promise<string> { deleteFile(path: string): Promise<string> {
return new Promise((resolve, reject)=> { return new Promise((resolve, reject)=> {
fs.lstat(path, (err, stats)=> { fs.lstat(path, (err, stats)=> {
if (err) return resolve(path);
if (stats.isDirectory()) { if (stats.isDirectory()) {
fs.rmdir(path, (err)=> { fs.rmdir(path, (err)=> {
resolve(path); resolve(path);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
</select> </select>
</div> </div>
<button type="submit" class="btn btn-secondary" (click)="edit_deck(current_deck)">编辑</button> <button type="submit" class="btn btn-secondary" (click)="edit_deck(current_deck)">编辑</button>
<button type="submit" class="btn btn-secondary">删除</button> <button type="submit" (click)="delete_deck(current_deck)" class="btn btn-secondary">删除</button>
<button type="submit" (click)="refresh()" class="btn btn-secondary">刷新</button> <button type="submit" (click)="refresh()" class="btn btn-secondary">刷新</button>
</form> </form>
...@@ -16,5 +16,165 @@ ...@@ -16,5 +16,165 @@
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-modal">创建房间</button> <button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-modal">创建房间</button>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-list-modal">房间列表</button> <button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-list-modal">房间列表</button>
<button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-windbot">单人模式</button> <button type="button" class="btn btn-secondary" data-toggle="modal" data-target="#game-create-windbot">单人模式</button>
<button (click)="appsService.browse(routingService.app)" type="button" class="btn btn-secondary">浏览本地文件</button> <!--<button (click)="appsService.browse(routingService.app)" type="button" class="btn btn-secondary">浏览本地文件</button>-->
</div>
<div class="modal fade" id="game-create-windbot" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="myModalLabel1">单人模式</h4>
</div>
<div class="modal-body">
<label>选择对手</label>
<div id="windbot" class="list-group">
<a *ngFor="let name of windbot" href="#" class="list-group-item"
onclick="join_windbot(name)">{{name}}</a>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="game-create-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<h4 class="modal-title" id="myModalLabel">创建房间</h4>
</div>
<form id="game-create">
<div class="modal-body">
<div class="form-group row">
<label for="game-create-title" class="col-sm-2 form-control-label">游戏标题</label>
<div class="col-sm-10">
<input type="text" class="form-control" id="game-create-title" name="title">
</div>
</div>
<div class="form-group row">
<label for="game-create-rule" class="col-sm-2 form-control-label">卡片允许</label>
<div class="col-sm-10">
<select class="form-control" id="game-create-rule" name="rule">
<option value="0" selected>OCG</option>
<option value="1">TCG</option>
<option value="2">OCG & TCG</option>
<option value="3">专有卡禁止</option>
</select>
</div>
</div>
<div class="form-group row">
<label for="game-create-mode" class="col-sm-2 form-control-label">决斗模式</label>
<div class="col-sm-10">
<select class="form-control" id="game-create-mode" name="mode">
<option value="0">单局模式</option>
<option value="1" selected>比赛模式</option>
<option value="2">TAG</option>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2 form-control-label">额外选项</label>
<div class="col-sm-4">
<div class="row">
<label for="game-create-start-lp" class="col-sm-6 form-control-label">初始 LP</label>
<div class="col-sm-6">
<input name="start_lp" type="number" value="8000" min="1" max="65536"
class="form-control form-control-sm game-create-extra"
id="game-create-start-lp">
</div>
</div>
<div class="row">
<label for="game-create-start-hand" class="col-sm-6 form-control-label">初始手牌数</label>
<div class="col-sm-6">
<input name="start_hand" type="number" value="5" min="0" max="16"
class="form-control form-control-sm game-create-extra"
id="game-create-start-hand">
</div>
</div>
<div class="row">
<label for="game-create-draw-count" class="col-sm-6 form-control-label">每回合抽卡</label>
<div class="col-sm-6">
<input name="draw_count" type="number" value="1" min="0" max="16"
class="form-control form-control-sm game-create-extra"
id="game-create-draw-count">
</div>
</div>
</div>
<div class="col-sm-6">
<div class="checkbox">
<label>
<input name="enable_priority" type="checkbox">允许启动效果优先权
</label>
</div>
<div class="checkbox">
<label>
<input name="no_check_deck" type="checkbox">不检查卡组
</label>
</div>
<div class="checkbox">
<label>
<input name="no_shuffle_deck" type="checkbox">开局不洗卡组
</label>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-sm-2">私密房间</label>
<div class="col-sm-10">
<div class="checkbox">
<label>
<input name="private" type="checkbox">不在房间列表中显示 (约战功能还没做好,不要勾
</label>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary float-left" data-dismiss="modal" data-toggle="modal"
data-target="#game-list-modal">查看房间
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-primary">创建</button>
</div>
</form>
</div>
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="game-list-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"
aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<table class="table table-striped table-hover">
<thead class="modal-header">
<tr>
<th class="title">游戏标题</th>
<th class="users">玩家</th>
<th class="mode">决斗模式</th>
<th class="extra">额外选项</th>
</tr>
</thead>
<tbody class="modal-body"></tbody>
</table>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<div class="modal-footer">
<button type="button" class="btn btn-secondary float-left" data-dismiss="modal" data-toggle="modal"
data-target="#game-create-modal">创建房间
</button>
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
</div>
</div>
</div>
</div> </div>
\ No newline at end of file
...@@ -12,6 +12,7 @@ const path = System._nodeRequire('path'); ...@@ -12,6 +12,7 @@ const path = System._nodeRequire('path');
const child_process = System._nodeRequire('child_process'); const child_process = System._nodeRequire('child_process');
//const Promise = System._nodeRequire('bluebird'); //const Promise = System._nodeRequire('bluebird');
const ini = System._nodeRequire('ini'); const ini = System._nodeRequire('ini');
const electron = System._nodeRequire('electron');
@Component({ @Component({
selector: 'ygopro', selector: 'ygopro',
...@@ -27,18 +28,22 @@ export class YGOProComponent { ...@@ -27,18 +28,22 @@ export class YGOProComponent {
numfont = {'darwin': ['/System/Library/Fonts/PingFang.ttc']}; numfont = {'darwin': ['/System/Library/Fonts/PingFang.ttc']};
textfont = {'darwin': ['/System/Library/Fonts/PingFang.ttc']}; textfont = {'darwin': ['/System/Library/Fonts/PingFang.ttc']};
windbot = ["琪露诺", "谜之剑士LV4", "复制植物", "尼亚"];
servers = [{address:"112.124.105.11", port: 7911}];
constructor(private appsService: AppsService, private routingService: RoutingService) { constructor(private appsService: AppsService, private routingService: RoutingService) {
this.refresh() this.refresh()
} }
refresh() { refresh = () => {
this.get_decks().then((decks)=> { this.get_decks().then((decks)=> {
this.decks = decks; this.decks = decks;
if (!(this.current_deck in this.decks)) { if (!(this.current_deck in this.decks)) {
this.current_deck = decks[0]; this.current_deck = decks[0];
} }
}) })
} };
get_decks(): Promise<[string]> { get_decks(): Promise<[string]> {
return new Promise((resolve, reject)=> { return new Promise((resolve, reject)=> {
...@@ -77,6 +82,12 @@ export class YGOProComponent { ...@@ -77,6 +82,12 @@ export class YGOProComponent {
.catch(reason=>console.log(reason)) .catch(reason=>console.log(reason))
} }
delete_deck(deck) {
return new Promise((resolve, reject) => {
fs.unlink(path.join(this.app.local.path, 'deck', deck + '.ydk'), resolve)
}).then(this.refresh)
}
fix_fonts = (data) => { fix_fonts = (data) => {
return this.get_font([data.numfont]) return this.get_font([data.numfont])
.catch(() => this.get_font(this.numfont[process.platform]).then(font => data['numfont'] = font)) .catch(() => this.get_font(this.numfont[process.platform]).then(font => data['numfont'] = font))
...@@ -105,15 +116,39 @@ export class YGOProComponent { ...@@ -105,15 +116,39 @@ export class YGOProComponent {
}) })
}; };
join(name, server) {
this.load_system_conf()
.then(this.fix_fonts)
.then(data => {
data['lastdeck'] = this.current_deck;
data['lastip'] = server.address;
data['lastport'] = server.port;
data['roompass'] = name;
return data
})
.then(this.save_system_conf)
.then(()=>['-j'])
.then(this.start_game)
.catch(reason=>console.log(reason))
};
join_windbot(name) {
this.join(name, this.servers[0])
}
start_game = (args) => { start_game = (args) => {
let win = electron.remote.getCurrentWindow();
win.minimize();
return new Promise((resolve, reject)=> { return new Promise((resolve, reject)=> {
let child = child_process.spawn(path.join(this.app.local.path, this.app.actions[process.platform]['main']['execute']), args, {cwd: this.app.local.path}); let child = child_process.spawn(path.join(this.app.local.path, this.app.actions[process.platform]['main']['execute']), args, {cwd: this.app.local.path});
child.on('error', (error)=> { child.on('error', (error)=> {
reject(error) reject(error);
win.restore()
}); });
child.on('exit', (code, signal)=> { child.on('exit', (code, signal)=> {
// error 触发之后还可能会触发exit,但是Promise只承认首次状态转移,因此这里无需重复判断是否已经error过。 // error 触发之后还可能会触发exit,但是Promise只承认首次状态转移,因此这里无需重复判断是否已经error过。
resolve(code) resolve(code);
win.restore()
}) })
}) })
}; };
......
...@@ -97,20 +97,7 @@ ...@@ -97,20 +97,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th06.meta4", "win32": "http://thief.mycard.moe/metalinks/th06.meta4",
...@@ -172,20 +159,7 @@ ...@@ -172,20 +159,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th075-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th075-lang-zh-TW.meta4",
...@@ -247,20 +221,7 @@ ...@@ -247,20 +221,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th075.meta4", "win32": "http://thief.mycard.moe/metalinks/th075.meta4",
...@@ -322,20 +283,7 @@ ...@@ -322,20 +283,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th07-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th07-lang-zh-TW.meta4",
...@@ -397,20 +345,7 @@ ...@@ -397,20 +345,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th07.meta4", "win32": "http://thief.mycard.moe/metalinks/th07.meta4",
...@@ -472,20 +407,7 @@ ...@@ -472,20 +407,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th08-lang-zh-CN.meta4", "win32": "http://thief.mycard.moe/metalinks/th08-lang-zh-CN.meta4",
...@@ -547,20 +469,7 @@ ...@@ -547,20 +469,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th08.meta4", "win32": "http://thief.mycard.moe/metalinks/th08.meta4",
...@@ -622,20 +531,7 @@ ...@@ -622,20 +531,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th095-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th095-lang-zh-TW.meta4",
...@@ -697,20 +593,7 @@ ...@@ -697,20 +593,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th095.meta4", "win32": "http://thief.mycard.moe/metalinks/th095.meta4",
...@@ -772,20 +655,7 @@ ...@@ -772,20 +655,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th09-langzh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th09-langzh-TW.meta4",
...@@ -847,20 +717,7 @@ ...@@ -847,20 +717,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th09.meta4", "win32": "http://thief.mycard.moe/metalinks/th09.meta4",
...@@ -922,20 +779,7 @@ ...@@ -922,20 +779,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th105-lang-zh-CN.meta4", "win32": "http://thief.mycard.moe/metalinks/th105-lang-zh-CN.meta4",
...@@ -997,20 +841,7 @@ ...@@ -997,20 +841,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th105.meta4", "win32": "http://thief.mycard.moe/metalinks/th105.meta4",
...@@ -1072,20 +903,7 @@ ...@@ -1072,20 +903,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th10-lang-zh-CN-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th10-lang-zh-CN-zh-TW.meta4",
...@@ -1147,20 +965,7 @@ ...@@ -1147,20 +965,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th10.meta4", "win32": "http://thief.mycard.moe/metalinks/th10.meta4",
...@@ -1222,20 +1027,7 @@ ...@@ -1222,20 +1027,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th11-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th11-lang-zh-TW.meta4",
...@@ -1297,20 +1089,7 @@ ...@@ -1297,20 +1089,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th11.meta4", "win32": "http://thief.mycard.moe/metalinks/th11.meta4",
...@@ -1372,20 +1151,7 @@ ...@@ -1372,20 +1151,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th123-lang-zh-CN.meta4", "win32": "http://thief.mycard.moe/metalinks/th123-lang-zh-CN.meta4",
...@@ -1447,20 +1213,7 @@ ...@@ -1447,20 +1213,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th123.meta4", "win32": "http://thief.mycard.moe/metalinks/th123.meta4",
...@@ -1522,20 +1275,7 @@ ...@@ -1522,20 +1275,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th12-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th12-lang-zh-TW.meta4",
...@@ -1597,20 +1337,7 @@ ...@@ -1597,20 +1337,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th12.meta4", "win32": "http://thief.mycard.moe/metalinks/th12.meta4",
...@@ -1672,20 +1399,7 @@ ...@@ -1672,20 +1399,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th1-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th1-lang-zh-TW.meta4",
...@@ -1747,20 +1461,7 @@ ...@@ -1747,20 +1461,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th1.meta4", "win32": "http://thief.mycard.moe/metalinks/th1.meta4",
...@@ -1822,20 +1523,7 @@ ...@@ -1822,20 +1523,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th2-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th2-lang-zh-TW.meta4",
...@@ -1897,20 +1585,7 @@ ...@@ -1897,20 +1585,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th2.meta4", "win32": "http://thief.mycard.moe/metalinks/th2.meta4",
...@@ -1972,20 +1647,7 @@ ...@@ -1972,20 +1647,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th3-lang-zh-TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th3-lang-zh-TW.meta4",
...@@ -2047,20 +1709,7 @@ ...@@ -2047,20 +1709,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th3.meta4", "win32": "http://thief.mycard.moe/metalinks/th3.meta4",
...@@ -2122,20 +1771,7 @@ ...@@ -2122,20 +1771,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th4-lang-zh_TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th4-lang-zh_TW.meta4",
...@@ -2197,20 +1833,7 @@ ...@@ -2197,20 +1833,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th4.meta4", "win32": "http://thief.mycard.moe/metalinks/th4.meta4",
...@@ -2272,20 +1895,7 @@ ...@@ -2272,20 +1895,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th5-lang-zh_TW.meta4", "win32": "http://thief.mycard.moe/metalinks/th5-lang-zh_TW.meta4",
...@@ -2347,20 +1957,7 @@ ...@@ -2347,20 +1957,7 @@
}, },
"references": { "references": {
"win32": [], "win32": [],
"darwin": [ "darwin": []
{
"type": "emulator",
"id": "th06"
},
{
"type": "language",
"id": "th12_mod1"
},
{
"type": "emulator",
"id": "wine"
}
]
}, },
"download": { "download": {
"win32": "http://thief.mycard.moe/metalinks/th5.meta4", "win32": "http://thief.mycard.moe/metalinks/th5.meta4",
...@@ -2434,13 +2031,15 @@ ...@@ -2434,13 +2031,15 @@
"news": [ "news": [
{ {
"url": "#", "url": "#",
"image": "http://www.myacg.cc/wp-content/uploads/2000/01/newBanner51.jpg", "image": "http://pic.4j4j.cn/upload/pic/20140327/af650cf463.jpg",
"title": "News Title" "title": "News Title",
"text": "喵喵喵喵"
}, },
{ {
"url": "#", "url": "https://ygobbs.com/t/7%E6%9C%8825%E6%97%A5-MyCard%E5%B7%B2%E6%9B%B4%E6%96%B0INOV910%E7%AD%89%E6%96%B0%E5%8D%A1%EF%BC%8C1033A%E7%A8%8B%E5%BA%8F%E3%80%82%E5%86%85%E5%B8%A6%E6%89%8B%E5%8A%A8%E6%9B%B4%E6%96%B0%E4%BB%A5%E5%8F%8A%E6%8A%A5%E9%94%99%E8%A7%A3%E5%86%B3%E3%80%82/80143",
"image": "http://www.myacg.cc/wp-content/uploads/2000/01/newBanner51.jpg", "image": "http://image.tianjimedia.com/uploadImages/2012/159/1EF112986273.jpg",
"title": "News Title" "title": "News Title2",
"text": "聚集的祈愿将成为新生的闪耀之星,化作光芒闪耀的道路吧!"
} }
] ]
} }
......
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