setBackgroundImage支持数组传入,修复部分类型提示问题
This commit is contained in:
parent
b9878c184b
commit
72c846dfa9
|
@ -61,6 +61,10 @@ var sawReadOnlySpans = false, sawCollapsedSpans = false;
|
||||||
// You can find some technical background for some of the code below
|
// You can find some technical background for some of the code below
|
||||||
// at http://marijnhaverbeke.nl/blog/#cm-internals .
|
// at http://marijnhaverbeke.nl/blog/#cm-internals .
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @type { typeof import('codemirror/index') }
|
||||||
|
*/
|
||||||
|
// @ts-ignore
|
||||||
var CodeMirror = (function () {
|
var CodeMirror = (function () {
|
||||||
|
|
||||||
// A CodeMirror instance represents an editor. This is the object
|
// A CodeMirror instance represents an editor. This is the object
|
||||||
|
|
1185
game/jszip.js
1185
game/jszip.js
File diff suppressed because it is too large
Load Diff
|
@ -1,20 +0,0 @@
|
||||||
name: Node.js Package
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
tags:
|
|
||||||
- "v*"
|
|
||||||
jobs:
|
|
||||||
Publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
packages: write
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
- uses: actions/setup-node@v3
|
|
||||||
with:
|
|
||||||
node-version: latest
|
|
||||||
registry-url: https://registry.npmjs.org
|
|
||||||
- run: npm publish
|
|
||||||
env:
|
|
||||||
NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
|
|
|
@ -1,104 +0,0 @@
|
||||||
// noname内扩展的一些array方法:
|
|
||||||
declare interface Array<T> {
|
|
||||||
/**
|
|
||||||
* @deprecated 已废弃,请使用includes
|
|
||||||
*/
|
|
||||||
contains(item: T): boolean;
|
|
||||||
/**
|
|
||||||
* 添加任意元素进数组中
|
|
||||||
* @param args
|
|
||||||
* @returns
|
|
||||||
* 1. 当添加成功时,返回此数组
|
|
||||||
* 2. 添加失败(已有此元素)时返回false,若传入多个参数,且添加失败时,后面的元素不再进行添加操作
|
|
||||||
*/
|
|
||||||
add(...args: T[]): this | false;
|
|
||||||
/**
|
|
||||||
* 添加一个数组的所有元素到该数组中(循环执行this.add),此时参数arr中若有一个数组元素可能会出现bug
|
|
||||||
* @param arr
|
|
||||||
*/
|
|
||||||
addArray(arr: T[]): this;
|
|
||||||
/**
|
|
||||||
* 移除一个元素出该数组(该元素不能是数组)
|
|
||||||
* @param item
|
|
||||||
* @returns
|
|
||||||
* 1. 当移除成功时,返回此数组
|
|
||||||
* 2. 移除失败(没有此元素)时返回false
|
|
||||||
* 3. 传入参数为一个数组时,返回undefined
|
|
||||||
*/
|
|
||||||
remove(item: T): this | false;
|
|
||||||
|
|
||||||
remove(item: T[]): void;
|
|
||||||
/**
|
|
||||||
* 将一个数组的所有元素移除出该数组(循环执行this.remove),此时参数arr中若有一个数组元素可能会出现bug
|
|
||||||
* @param arr
|
|
||||||
*/
|
|
||||||
removeArray(arr: T[]): this;
|
|
||||||
/**
|
|
||||||
* 随机获得该数组的一个元素
|
|
||||||
* @param args 设置需要排除掉的部分元素;
|
|
||||||
*/
|
|
||||||
randomGet(...args: T[]): T;
|
|
||||||
/**
|
|
||||||
* 随机移除数组的一个/多个元素
|
|
||||||
* @param num 若num为数字的情况下,则移除num个元素,否则移除一个
|
|
||||||
* @returns
|
|
||||||
* 1. 移除一个元素,只返回被移除的元素
|
|
||||||
* 2. 移除多个元素,返回一个被移除元素组成的数组
|
|
||||||
* 3. 数组无元素返回undefined
|
|
||||||
*/
|
|
||||||
randomRemove(num: number): T | T[];
|
|
||||||
randomRemove(num: T): T | undefined;
|
|
||||||
/**
|
|
||||||
* 随机重新排序数组(数组乱序)
|
|
||||||
*/
|
|
||||||
randomSort(): this;
|
|
||||||
/**
|
|
||||||
* 随机获取数组的元素
|
|
||||||
*
|
|
||||||
* 返回的是一个重新整合的数组
|
|
||||||
* @param num 获取的数量, 不传参视为0
|
|
||||||
*/
|
|
||||||
randomGets(num?: number): this;
|
|
||||||
/**
|
|
||||||
* 对所有玩家进行排序
|
|
||||||
*
|
|
||||||
* 其排序,使用的是lib.sort.seat方法,按座位排序
|
|
||||||
* @param target 目标玩家
|
|
||||||
*/
|
|
||||||
sortBySeat(target?: Player): Player[];
|
|
||||||
/**
|
|
||||||
* 将一个Array中所有位于处理区的卡牌过滤出来
|
|
||||||
*
|
|
||||||
* 例:设一list为[c1,c2,c3,c4],其中c1和c3是位于处理区的卡牌
|
|
||||||
* 那么list.filterInD()得到的结果即为[c1,c3]
|
|
||||||
*
|
|
||||||
* 在1.9.97.8.1或更高的版本中:
|
|
||||||
* 可通过直接在括号中填写一个区域 来判断处于特定区域的卡牌
|
|
||||||
* 例:list.filterInD('h') 即判断数组中所有位于手牌区的卡牌
|
|
||||||
* @param poiston 指定的区域,默认是 'o'
|
|
||||||
*/
|
|
||||||
filterInD(poiston?: string): Card[];
|
|
||||||
|
|
||||||
//关于处理区:
|
|
||||||
/*
|
|
||||||
不知道处理区是什么的同学们 请自行查阅凌天翼规则集相关内容太长了我懒得贴
|
|
||||||
处理区在无名杀的代码为ui.ordering
|
|
||||||
为方便兼容旧扩展 使用get.position(card)方法读取处理区的卡牌 默认得到的仍然是弃牌堆('d')
|
|
||||||
使用get.position(card,true) 才会得到处理区('o')的结果
|
|
||||||
|
|
||||||
处理区:(不清楚无名杀对其的实验是否满足这些要求)
|
|
||||||
一个最常被用到,但是尚未命名的区域。
|
|
||||||
当你使用一张牌等待结算或处于结算中,
|
|
||||||
当你和另一名角色拼点的两张牌失去时,
|
|
||||||
当你和另一名角色交换的牌失去时,
|
|
||||||
当你的牌被张辽或张郃搞的失去时……
|
|
||||||
总之,当一张牌不在任何角色的手牌、装备区或判定区里,
|
|
||||||
也不在牌堆或弃牌堆里,也没有被移出游戏,那么它就是在这个尚未命名的区域里。
|
|
||||||
为了便于行文,在本规则与FAQ集中暂且称之为‘处理区’。
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取 item 在数组中出现的次数
|
|
||||||
*/
|
|
||||||
numOf(item: T): number
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
declare type CardBaseUIData = {
|
|
||||||
name?: string;
|
|
||||||
suit?: string;
|
|
||||||
number?: number;
|
|
||||||
nature?: string | null;
|
|
||||||
|
|
||||||
//用于某些方法,用于过滤卡牌的额外结构
|
|
||||||
type?: string | string[];
|
|
||||||
subtype?: string;
|
|
||||||
color?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 是否时视为牌
|
|
||||||
*
|
|
||||||
* 是本来的卡牌,则为true,作为视为牌则为false/undefined
|
|
||||||
* 在useCard使用时,作为视为牌,会把next.cards,设置为card.cards;
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
isCard?: boolean;
|
|
||||||
|
|
||||||
/** 真实使用的卡牌 */
|
|
||||||
cards?: Card[];
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
// 一些额外需要增加的一些小提示提示
|
|
||||||
interface Date {
|
|
||||||
/** 格式化 */
|
|
||||||
format(format: string): string;
|
|
||||||
}
|
|
|
@ -1,78 +0,0 @@
|
||||||
//noname内扩展的一些HTMLDivElement方法:
|
|
||||||
interface HTMLDivElement {
|
|
||||||
_link: any;
|
|
||||||
/**
|
|
||||||
* 增加一个动画(增加className动画标记)
|
|
||||||
*
|
|
||||||
* @param name className
|
|
||||||
* @param time 该动画多长时间自动销毁
|
|
||||||
*/
|
|
||||||
addTempClass(name: string, time?: number): this;
|
|
||||||
/**
|
|
||||||
* 隐藏
|
|
||||||
*/
|
|
||||||
hide(): this;
|
|
||||||
unfocus(): this;
|
|
||||||
refocus(): this;
|
|
||||||
show(): this;
|
|
||||||
/**
|
|
||||||
* 删除该节点div
|
|
||||||
* @param time 调用后删除的时间(延时删除)
|
|
||||||
* @param callback 删除后的回调
|
|
||||||
*/
|
|
||||||
delete(time: number, callback?: () => void): this;
|
|
||||||
delete(): this;
|
|
||||||
/**
|
|
||||||
* 将该节点div移除,并添加到目标处
|
|
||||||
*
|
|
||||||
* 会为card设置将position到destiny,在get.position中,获得得位置为将要设置得position目标处;
|
|
||||||
* @param position 目标处
|
|
||||||
* @param time 延迟执行的时间
|
|
||||||
*/
|
|
||||||
goto(position: HTMLDivElement, time?: number): this;
|
|
||||||
/**
|
|
||||||
* 立即移除
|
|
||||||
*/
|
|
||||||
fix(): this;
|
|
||||||
/**
|
|
||||||
* 设置背景(卡面)/设置图片
|
|
||||||
* @param name 自定义格式名: xxx:xxxxxxxx:xx(应该有各种命名格式,到时详细探讨)
|
|
||||||
* @param type 设置的卡面的类型
|
|
||||||
* @param ext 文件类型后缀名(例:.jpg),填noskin,或者不填,默认为".jpg"
|
|
||||||
* @param subfolder 子文件夹路径(基本都是按规定文件夹放置,命名),不填走默认路径
|
|
||||||
*/
|
|
||||||
setBackground(name: string, type?: string, ext?: string, subfolder?: string): this;
|
|
||||||
/**
|
|
||||||
* 设置游戏背景,并且缓存该设置
|
|
||||||
* @param img
|
|
||||||
*/
|
|
||||||
setBackgroundDB(img: string): this;
|
|
||||||
/**
|
|
||||||
* 设置背景
|
|
||||||
* @param img
|
|
||||||
*/
|
|
||||||
setBackgroundImage(img: string): this;
|
|
||||||
/**
|
|
||||||
* 设置触摸/点击监听
|
|
||||||
* @param func
|
|
||||||
*/
|
|
||||||
listen(func: (this: HTMLDivElement, event: Event) => void): this;
|
|
||||||
/**
|
|
||||||
* 设置转换结束(webkitTransitionEnd)监听
|
|
||||||
* @param func
|
|
||||||
* @param time
|
|
||||||
*/
|
|
||||||
listenTransition(func: () => void, time: number): number;
|
|
||||||
/**
|
|
||||||
* 设置位置
|
|
||||||
* @param args
|
|
||||||
*/
|
|
||||||
setPosition(...args: number[]): this;
|
|
||||||
/**
|
|
||||||
* 添加css样式
|
|
||||||
* @param style
|
|
||||||
*/
|
|
||||||
css<T extends keyof CSSStyleDeclaration>(style: {
|
|
||||||
[key in T]?: string
|
|
||||||
}): this;
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
interface HTMLTableElement {
|
|
||||||
/**
|
|
||||||
* 获取该div下表结构row行,col列的元素
|
|
||||||
* @param row
|
|
||||||
* @param col
|
|
||||||
*/
|
|
||||||
get(row: number, col: number): HTMLElement;
|
|
||||||
}
|
|
|
@ -1,674 +0,0 @@
|
||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
|
||||||
software and other kinds of works.
|
|
||||||
|
|
||||||
The licenses for most software and other practical works are designed
|
|
||||||
to take away your freedom to share and change the works. By contrast,
|
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
|
||||||
share and change all versions of a program--to make sure it remains free
|
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
|
||||||
GNU General Public License for most of our software; it applies also to
|
|
||||||
any other work released this way by its authors. You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
them if you wish), that you receive source code or can get it if you
|
|
||||||
want it, that you can change the software or use pieces of it in new
|
|
||||||
free programs, and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
|
||||||
or can get the source code. And you must show them these terms so they
|
|
||||||
know their rights.
|
|
||||||
|
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
|
||||||
|
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
|
||||||
that there is no warranty for this free software. For both users' and
|
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
|
||||||
changed, so that their problems will not be attributed erroneously to
|
|
||||||
authors of previous versions.
|
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
|
||||||
modified versions of the software inside them, although the manufacturer
|
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
|
||||||
protecting users' freedom to change the software. The systematic
|
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
|
||||||
stand ready to extend this provision to those domains in future versions
|
|
||||||
of the GPL, as needed to protect the freedom of users.
|
|
||||||
|
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
|
||||||
patents cannot be used to render the program non-free.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
0. Definitions.
|
|
||||||
|
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
|
||||||
|
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
|
||||||
works, such as semiconductor masks.
|
|
||||||
|
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
|
||||||
"recipients" may be individuals or organizations.
|
|
||||||
|
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
|
||||||
earlier work or a work "based on" the earlier work.
|
|
||||||
|
|
||||||
A "covered work" means either the unmodified Program or a work based
|
|
||||||
on the Program.
|
|
||||||
|
|
||||||
To "propagate" a work means to do anything with it that, without
|
|
||||||
permission, would make you directly or secondarily liable for
|
|
||||||
infringement under applicable copyright law, except executing it on a
|
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
|
||||||
distribution (with or without modification), making available to the
|
|
||||||
public, and in some countries other activities as well.
|
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
|
||||||
|
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
|
||||||
to the extent that it includes a convenient and prominently visible
|
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
|
||||||
tells the user that there is no warranty for the work (except to the
|
|
||||||
extent that warranties are provided), that licensees may convey the
|
|
||||||
work under this License, and how to view a copy of this License. If
|
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
|
||||||
|
|
||||||
1. Source Code.
|
|
||||||
|
|
||||||
The "source code" for a work means the preferred form of the work
|
|
||||||
for making modifications to it. "Object code" means any non-source
|
|
||||||
form of a work.
|
|
||||||
|
|
||||||
A "Standard Interface" means an interface that either is an official
|
|
||||||
standard defined by a recognized standards body, or, in the case of
|
|
||||||
interfaces specified for a particular programming language, one that
|
|
||||||
is widely used among developers working in that language.
|
|
||||||
|
|
||||||
The "System Libraries" of an executable work include anything, other
|
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
|
||||||
packaging a Major Component, but which is not part of that Major
|
|
||||||
Component, and (b) serves only to enable use of the work with that
|
|
||||||
Major Component, or to implement a Standard Interface for which an
|
|
||||||
implementation is available to the public in source code form. A
|
|
||||||
"Major Component", in this context, means a major essential component
|
|
||||||
(kernel, window system, and so on) of the specific operating system
|
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
|
||||||
produce the work, or an object code interpreter used to run it.
|
|
||||||
|
|
||||||
The "Corresponding Source" for a work in object code form means all
|
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
|
||||||
control those activities. However, it does not include the work's
|
|
||||||
System Libraries, or general-purpose tools or generally available free
|
|
||||||
programs which are used unmodified in performing those activities but
|
|
||||||
which are not part of the work. For example, Corresponding Source
|
|
||||||
includes interface definition files associated with source files for
|
|
||||||
the work, and the source code for shared libraries and dynamically
|
|
||||||
linked subprograms that the work is specifically designed to require,
|
|
||||||
such as by intimate data communication or control flow between those
|
|
||||||
subprograms and other parts of the work.
|
|
||||||
|
|
||||||
The Corresponding Source need not include anything that users
|
|
||||||
can regenerate automatically from other parts of the Corresponding
|
|
||||||
Source.
|
|
||||||
|
|
||||||
The Corresponding Source for a work in source code form is that
|
|
||||||
same work.
|
|
||||||
|
|
||||||
2. Basic Permissions.
|
|
||||||
|
|
||||||
All rights granted under this License are granted for the term of
|
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
|
||||||
permission to run the unmodified Program. The output from running a
|
|
||||||
covered work is covered by this License only if the output, given its
|
|
||||||
content, constitutes a covered work. This License acknowledges your
|
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
|
||||||
|
|
||||||
You may make, run and propagate covered works that you do not
|
|
||||||
convey, without conditions so long as your license otherwise remains
|
|
||||||
in force. You may convey covered works to others for the sole purpose
|
|
||||||
of having them make modifications exclusively for you, or provide you
|
|
||||||
with facilities for running those works, provided that you comply with
|
|
||||||
the terms of this License in conveying all material for which you do
|
|
||||||
not control copyright. Those thus making or running the covered works
|
|
||||||
for you must do so exclusively on your behalf, under your direction
|
|
||||||
and control, on terms that prohibit them from making any copies of
|
|
||||||
your copyrighted material outside their relationship with you.
|
|
||||||
|
|
||||||
Conveying under any other circumstances is permitted solely under
|
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
|
||||||
makes it unnecessary.
|
|
||||||
|
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
|
||||||
|
|
||||||
No covered work shall be deemed part of an effective technological
|
|
||||||
measure under any applicable law fulfilling obligations under article
|
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
|
||||||
similar laws prohibiting or restricting circumvention of such
|
|
||||||
measures.
|
|
||||||
|
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
|
||||||
circumvention of technological measures to the extent such circumvention
|
|
||||||
is effected by exercising rights under this License with respect to
|
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
|
||||||
modification of the work as a means of enforcing, against the work's
|
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
|
||||||
technological measures.
|
|
||||||
|
|
||||||
4. Conveying Verbatim Copies.
|
|
||||||
|
|
||||||
You may convey verbatim copies of the Program's source code as you
|
|
||||||
receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
|
||||||
keep intact all notices stating that this License and any
|
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
|
||||||
recipients a copy of this License along with the Program.
|
|
||||||
|
|
||||||
You may charge any price or no price for each copy that you convey,
|
|
||||||
and you may offer support or warranty protection for a fee.
|
|
||||||
|
|
||||||
5. Conveying Modified Source Versions.
|
|
||||||
|
|
||||||
You may convey a work based on the Program, or the modifications to
|
|
||||||
produce it from the Program, in the form of source code under the
|
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
|
||||||
released under this License and any conditions added under section
|
|
||||||
7. This requirement modifies the requirement in section 4 to
|
|
||||||
"keep intact all notices".
|
|
||||||
|
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
|
||||||
License will therefore apply, along with any applicable section 7
|
|
||||||
additional terms, to the whole of the work, and all its parts,
|
|
||||||
regardless of how they are packaged. This License gives no
|
|
||||||
permission to license the work in any other way, but it does not
|
|
||||||
invalidate such permission if you have separately received it.
|
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
|
||||||
work need not make them do so.
|
|
||||||
|
|
||||||
A compilation of a covered work with other separate and independent
|
|
||||||
works, which are not by their nature extensions of the covered work,
|
|
||||||
and which are not combined with it such as to form a larger program,
|
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
|
||||||
used to limit the access or legal rights of the compilation's users
|
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
|
||||||
in an aggregate does not cause this License to apply to the other
|
|
||||||
parts of the aggregate.
|
|
||||||
|
|
||||||
6. Conveying Non-Source Forms.
|
|
||||||
|
|
||||||
You may convey a covered work in object code form under the terms
|
|
||||||
of sections 4 and 5, provided that you also convey the
|
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
|
||||||
in one of these ways:
|
|
||||||
|
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
|
||||||
customarily used for software interchange.
|
|
||||||
|
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by a
|
|
||||||
written offer, valid for at least three years and valid for as
|
|
||||||
long as you offer spare parts or customer support for that product
|
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
|
||||||
more than your reasonable cost of physically performing this
|
|
||||||
conveying of source, or (2) access to copy the
|
|
||||||
Corresponding Source from a network server at no charge.
|
|
||||||
|
|
||||||
c) Convey individual copies of the object code with a copy of the
|
|
||||||
written offer to provide the Corresponding Source. This
|
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
|
||||||
with subsection 6b.
|
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
|
||||||
Corresponding Source in the same way through the same place at no
|
|
||||||
further charge. You need not require recipients to copy the
|
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
|
||||||
patent license under the contributor's essential patent claims, to
|
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
|
||||||
the Program, the only way you could satisfy both those terms and this
|
|
||||||
License would be to refrain entirely from conveying the Program.
|
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
|
||||||
permission to link or combine any covered work with a work licensed
|
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
|
||||||
combined work, and to convey the resulting work. The terms of this
|
|
||||||
License will continue to apply to the part which is the covered work,
|
|
||||||
but the special requirements of the GNU Affero General Public License,
|
|
||||||
section 13, concerning interaction through a network will apply to the
|
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the GNU General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Program specifies that a certain numbered version of the GNU General
|
|
||||||
Public License "or any later version" applies to it, you have the
|
|
||||||
option of following the terms and conditions either of that numbered
|
|
||||||
version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of the
|
|
||||||
GNU General Public License, you may choose any version ever published
|
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
|
||||||
public statement of acceptance of a version permanently authorizes you
|
|
||||||
to choose that version for the Program.
|
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. Limitation of Liability.
|
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
|
|
|
@ -1,27 +0,0 @@
|
||||||
declare interface Map<K, V> {
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法,请使用has
|
|
||||||
*/
|
|
||||||
contains(item: K): boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法,请使用has
|
|
||||||
*/
|
|
||||||
inculdes(item: K): boolean;
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法,请使用set
|
|
||||||
*/
|
|
||||||
add(item: K): this;
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法,请使用set
|
|
||||||
*/
|
|
||||||
push(item: K): this;
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法
|
|
||||||
*/
|
|
||||||
addArray(arr: Array<K>): this;
|
|
||||||
/**
|
|
||||||
* @deprecated 为了兼容array改为map而创建的方法,请使用delete
|
|
||||||
*/
|
|
||||||
remove(item: K): this;
|
|
||||||
}
|
|
|
@ -1,43 +0,0 @@
|
||||||
declare interface Result {
|
|
||||||
/**
|
|
||||||
* 最终结果
|
|
||||||
*
|
|
||||||
* 大多代表该事件到达这一步骤过程中的结果;
|
|
||||||
* 一般用来标记当前事件是否按预定执行的,即执行成功
|
|
||||||
*
|
|
||||||
* 大部分事件间接接触game.check,一般最终结果不变,大多数是这种
|
|
||||||
*
|
|
||||||
* 其实主要是ok方法会有直接的bool,主要涉及game.check;
|
|
||||||
*/
|
|
||||||
bool?: boolean;
|
|
||||||
|
|
||||||
//choose系
|
|
||||||
/** 记录返回当前事件操作过程中的卡牌 */
|
|
||||||
cards: Card[];
|
|
||||||
/** 记录返回当前事件操作过程中的目标 */
|
|
||||||
targets: Player[];
|
|
||||||
/** 记录返回当前事件操作过程中的按钮 */
|
|
||||||
buttons: Button[];
|
|
||||||
/** 记录buttons内所有button.link(即该按钮的类型,link的类型很多,参考按钮的item) */
|
|
||||||
links: any[];
|
|
||||||
|
|
||||||
//control系(直接control系列没有result.bool)
|
|
||||||
/** control操作面板的选中结果,即该按钮的link,即名字 */
|
|
||||||
control: string;
|
|
||||||
/** 既control的下标 */
|
|
||||||
index: number;
|
|
||||||
|
|
||||||
//ok系
|
|
||||||
/** 记录返回当前事件操作过程中,面板按钮的确定ok取消cancel */
|
|
||||||
confirm: string;
|
|
||||||
/** 一般为触发的“视为”技能 */
|
|
||||||
skill: string;
|
|
||||||
/**
|
|
||||||
* 当前事件操作的“视为”牌,
|
|
||||||
* 当前有“视为”操作,该card参数特供给视为牌,不需要cards[0]获取视为牌 ;
|
|
||||||
* 判断是否为视为牌:card.isCard,false为视为牌
|
|
||||||
*/
|
|
||||||
card: Card;
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,69 +0,0 @@
|
||||||
// Type definitions for Apache Cordova Dialogs plugin
|
|
||||||
// Project: https://github.com/apache/cordova-plugin-dialogs
|
|
||||||
// Definitions by: Microsoft Open Technologies Inc <http://msopentech.com>
|
|
||||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
||||||
//
|
|
||||||
// Copyright (c) Microsoft Open Technologies Inc
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
interface Navigator {
|
|
||||||
/** This plugin provides access to some native dialog UI elements. */
|
|
||||||
notification: Notification
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This plugin provides access to some native dialog UI elements. */
|
|
||||||
interface Notification {
|
|
||||||
/**
|
|
||||||
* Shows a custom alert or dialog box. Most Cordova implementations use a native dialog box for this feature,
|
|
||||||
* but some platforms use the browser's alert function, which is typically less customizable.
|
|
||||||
* @param message Dialog message.
|
|
||||||
* @param alertCallback Callback to invoke when alert dialog is dismissed.
|
|
||||||
* @param title Dialog title, defaults to 'Alert'.
|
|
||||||
* @param buttonName Button name, defaults to OK.
|
|
||||||
*/
|
|
||||||
alert(message: string,
|
|
||||||
alertCallback: () => void,
|
|
||||||
title?: string,
|
|
||||||
buttonName?: string): void;
|
|
||||||
/**
|
|
||||||
* The device plays a beep sound.
|
|
||||||
* @param times The number of times to repeat the beep.
|
|
||||||
*/
|
|
||||||
beep(times: number): void;
|
|
||||||
/**
|
|
||||||
* Displays a customizable confirmation dialog box.
|
|
||||||
* @param message Dialog message.
|
|
||||||
* @param confirmCallback Callback to invoke with index of button pressed (1, 2, or 3)
|
|
||||||
* or when the dialog is dismissed without a button press (0).
|
|
||||||
* @param title Dialog title, defaults to Confirm.
|
|
||||||
* @param buttonLabels Array of strings specifying button labels, defaults to [OK,Cancel].
|
|
||||||
*/
|
|
||||||
confirm(message: string,
|
|
||||||
confirmCallback: (choice: number) => void,
|
|
||||||
title?: string,
|
|
||||||
buttonLabels?: string[]): void;
|
|
||||||
/**
|
|
||||||
* Displays a native dialog box that is more customizable than the browser's prompt function.
|
|
||||||
* @param message Dialog message.
|
|
||||||
* @param promptCallback Callback to invoke when a button is pressed.
|
|
||||||
* @param title Dialog title, defaults to "Prompt".
|
|
||||||
* @param buttonLabels Array of strings specifying button labels, defaults to ["OK","Cancel"].
|
|
||||||
* @param defaultText Default textbox input value, default: "".
|
|
||||||
*/
|
|
||||||
prompt(message: string,
|
|
||||||
promptCallback: (result: NotificationPromptResult) => void,
|
|
||||||
title?: string,
|
|
||||||
buttonLabels?: string[],
|
|
||||||
defaultText?: string): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Object, passed to promptCallback */
|
|
||||||
interface NotificationPromptResult {
|
|
||||||
/**
|
|
||||||
* The index of the pressed button. Note that the index uses one-based indexing, so the value is 1, 2, 3, etc.
|
|
||||||
* 0 is the result when the dialog is dismissed without a button press.
|
|
||||||
*/
|
|
||||||
buttonIndex: number;
|
|
||||||
/** The text entered in the prompt dialog box. */
|
|
||||||
input1: string;
|
|
||||||
}
|
|
|
@ -1,136 +0,0 @@
|
||||||
// Type definitions for Apache Cordova FileTransfer plugin
|
|
||||||
// Project: https://github.com/apache/cordova-plugin-file-transfer
|
|
||||||
// Definitions by: Microsoft Open Technologies Inc. <http://msopentech.com>
|
|
||||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
||||||
//
|
|
||||||
// Copyright (c) Microsoft Open Technologies Inc
|
|
||||||
// Licensed under the MIT license
|
|
||||||
|
|
||||||
/// <reference path="./cordova-plugin-file.d.ts" />
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The FileTransfer object provides a way to upload files using an HTTP multi-part POST request,
|
|
||||||
* and to download files as well.
|
|
||||||
*/
|
|
||||||
interface FileTransfer {
|
|
||||||
/** Called with a ProgressEvent whenever a new chunk of data is transferred. */
|
|
||||||
onprogress: (event: ProgressEvent) => void;
|
|
||||||
/**
|
|
||||||
* Sends a file to a server.
|
|
||||||
* @param fileURL Filesystem URL representing the file on the device. For backwards compatibility,
|
|
||||||
* this can also be the full path of the file on the device.
|
|
||||||
* @param server URL of the server to receive the file, as encoded by encodeURI().
|
|
||||||
* @param successCallback A callback that is passed a FileUploadResult object.
|
|
||||||
* @param errorCallback A callback that executes if an error occurs retrieving the FileUploadResult.
|
|
||||||
* Invoked with a FileTransferError object.
|
|
||||||
* @param options Optional parameters.
|
|
||||||
* @param trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates.
|
|
||||||
* This is useful since Android rejects self-signed security certificates.
|
|
||||||
* Not recommended for production use. Supported on Android and iOS.
|
|
||||||
*/
|
|
||||||
upload(
|
|
||||||
fileURL: string,
|
|
||||||
server: string,
|
|
||||||
successCallback: (result: FileUploadResult) => void,
|
|
||||||
errorCallback: (error: FileTransferError) => void,
|
|
||||||
options?: FileUploadOptions,
|
|
||||||
trustAllHosts?: boolean): void;
|
|
||||||
/**
|
|
||||||
* downloads a file from server.
|
|
||||||
* @param source URL of the server to download the file, as encoded by encodeURI().
|
|
||||||
* @param target Filesystem url representing the file on the device. For backwards compatibility,
|
|
||||||
* this can also be the full path of the file on the device.
|
|
||||||
* @param successCallback A callback that is passed a FileEntry object. (Function)
|
|
||||||
* @param errorCallback A callback that executes if an error occurs when retrieving the fileEntry.
|
|
||||||
* Invoked with a FileTransferError object.
|
|
||||||
* @param options Optional parameters.
|
|
||||||
* @param trustAllHosts Optional parameter, defaults to false. If set to true, it accepts all security certificates.
|
|
||||||
* This is useful since Android rejects self-signed security certificates.
|
|
||||||
* Not recommended for production use. Supported on Android and iOS.
|
|
||||||
*/
|
|
||||||
download(
|
|
||||||
source: string,
|
|
||||||
target: string,
|
|
||||||
successCallback: (fileEntry: FileEntry) => void,
|
|
||||||
errorCallback: (error: FileTransferError) => void,
|
|
||||||
trustAllHosts?: boolean,
|
|
||||||
options?: FileDownloadOptions): void;
|
|
||||||
/**
|
|
||||||
* Aborts an in-progress transfer. The onerror callback is passed a FileTransferError object
|
|
||||||
* which has an error code of FileTransferError.ABORT_ERR.
|
|
||||||
*/
|
|
||||||
abort(): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var FileTransfer: {
|
|
||||||
new(): FileTransfer;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** A FileUploadResult object is passed to the success callback of the FileTransfer object's upload() method. */
|
|
||||||
interface FileUploadResult {
|
|
||||||
/** The number of bytes sent to the server as part of the upload. */
|
|
||||||
bytesSent: number;
|
|
||||||
/** The HTTP response code returned by the server. */
|
|
||||||
responseCode: number;
|
|
||||||
/** The HTTP response returned by the server. */
|
|
||||||
response: string;
|
|
||||||
/** The HTTP response headers by the server. Currently supported on iOS only.*/
|
|
||||||
headers: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Optional parameters for upload method. */
|
|
||||||
interface FileUploadOptions {
|
|
||||||
/** The name of the form element. Defaults to file. */
|
|
||||||
fileKey?: string;
|
|
||||||
/** The file name to use when saving the file on the server. Defaults to image.jpg. */
|
|
||||||
fileName?: string;
|
|
||||||
/** The HTTP method to use - either `PUT` or `POST`. Defaults to `POST`. */
|
|
||||||
httpMethod?: string;
|
|
||||||
/** The mime type of the data to upload. Defaults to image/jpeg. */
|
|
||||||
mimeType?: string;
|
|
||||||
/** A set of optional key/value pairs to pass in the HTTP request. */
|
|
||||||
params?: Object;
|
|
||||||
/** Whether to upload the data in chunked streaming mode. Defaults to true. */
|
|
||||||
chunkedMode?: boolean;
|
|
||||||
/** A map of header name/header values. Use an array to specify more than one value. */
|
|
||||||
headers?: Object;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Optional parameters for download method. */
|
|
||||||
interface FileDownloadOptions {
|
|
||||||
/** A map of header name/header values. */
|
|
||||||
headers?: {};
|
|
||||||
}
|
|
||||||
|
|
||||||
/** A FileTransferError object is passed to an error callback when an error occurs. */
|
|
||||||
interface FileTransferError {
|
|
||||||
/**
|
|
||||||
* One of the predefined error codes listed below.
|
|
||||||
* FileTransferError.FILE_NOT_FOUND_ERR
|
|
||||||
* FileTransferError.INVALID_URL_ERR
|
|
||||||
* FileTransferError.CONNECTION_ERR
|
|
||||||
* FileTransferError.ABORT_ERR
|
|
||||||
* FileTransferError.NOT_MODIFIED_ERR
|
|
||||||
*/
|
|
||||||
code: number;
|
|
||||||
/** URL to the source. */
|
|
||||||
source: string;
|
|
||||||
/** URL to the target. */
|
|
||||||
target: string;
|
|
||||||
/** HTTP status code. This attribute is only available when a response code is received from the HTTP connection. */
|
|
||||||
http_status: number;
|
|
||||||
/* Response body. This attribute is only available when a response is received from the HTTP connection. */
|
|
||||||
body: string;
|
|
||||||
/* Exception that is thrown by native code */
|
|
||||||
exception: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var FileTransferError: {
|
|
||||||
/** Constructor for FileTransferError object */
|
|
||||||
new(code?: number, source?: string, target?: string, status?: number, body?: any, exception?: any): FileTransferError;
|
|
||||||
FILE_NOT_FOUND_ERR: number;
|
|
||||||
INVALID_URL_ERR: number;
|
|
||||||
CONNECTION_ERR: number;
|
|
||||||
ABORT_ERR: number;
|
|
||||||
NOT_MODIFIED_ERR: number;
|
|
||||||
}
|
|
|
@ -1,374 +0,0 @@
|
||||||
// Type definitions for Apache Cordova File System plugin
|
|
||||||
// Project: https://github.com/apache/cordova-plugin-file
|
|
||||||
// Definitions by: Microsoft Open Technologies Inc <http://msopentech.com>
|
|
||||||
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
||||||
//
|
|
||||||
// Copyright (c) Microsoft Open Technologies, Inc.
|
|
||||||
// Licensed under the MIT license.
|
|
||||||
|
|
||||||
interface Window {
|
|
||||||
/**
|
|
||||||
* Requests a filesystem in which to store application data.
|
|
||||||
* @param type Whether the filesystem requested should be persistent, as defined above. Use one of TEMPORARY or PERSISTENT.
|
|
||||||
* @param size This is an indicator of how much storage space, in bytes, the application expects to need.
|
|
||||||
* @param successCallback The callback that is called when the user agent provides a filesystem.
|
|
||||||
* @param errorCallback A callback that is called when errors happen, or when the request to obtain the filesystem is denied.
|
|
||||||
*/
|
|
||||||
requestFileSystem(
|
|
||||||
type: LocalFileSystem,
|
|
||||||
size: number,
|
|
||||||
successCallback: (fileSystem: FileSystem) => void,
|
|
||||||
errorCallback?: (fileError: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Look up file system Entry referred to by local URL.
|
|
||||||
* @param string url URL referring to a local file or directory
|
|
||||||
* @param successCallback invoked with Entry object corresponding to URL
|
|
||||||
* @param errorCallback invoked if error occurs retrieving file system entry
|
|
||||||
*/
|
|
||||||
resolveLocalFileSystemURL(url: string,
|
|
||||||
successCallback: (entry: Entry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
|
|
||||||
resolveLocalFileSystemURL(url: string,
|
|
||||||
successCallback: (entry: DirectoryEntry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Look up file system Entry referred to by local URI.
|
|
||||||
* @param string uri URI referring to a local file or directory
|
|
||||||
* @param successCallback invoked with Entry object corresponding to URI
|
|
||||||
* @param errorCallback invoked if error occurs retrieving file system entry
|
|
||||||
*/
|
|
||||||
resolveLocalFileSystemURI(uri: string,
|
|
||||||
successCallback: (entry: Entry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
TEMPORARY: number;
|
|
||||||
PERSISTENT: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An abstract interface representing entries in a file system,
|
|
||||||
* each of which may be a File or DirectoryEntry.
|
|
||||||
*/
|
|
||||||
interface Entry {
|
|
||||||
/** Entry is a file. */
|
|
||||||
isFile: boolean;
|
|
||||||
/** Entry is a directory. */
|
|
||||||
isDirectory: boolean;
|
|
||||||
/** The name of the entry, excluding the path leading to it. */
|
|
||||||
name: string;
|
|
||||||
/** The full absolute path from the root to the entry. */
|
|
||||||
fullPath: string;
|
|
||||||
/** The file system on which the entry resides. */
|
|
||||||
filesystem: FileSystem;
|
|
||||||
nativeURL: string;
|
|
||||||
/**
|
|
||||||
* Look up metadata about this entry.
|
|
||||||
* @param successCallback A callback that is called with the time of the last modification.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
getMetadata(
|
|
||||||
successCallback: (metadata: Metadata) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Move an entry to a different location on the file system. It is an error to try to:
|
|
||||||
* move a directory inside itself or to any child at any depth;move an entry into its parent if a name different from its current one isn't provided;
|
|
||||||
* move a file to a path occupied by a directory;
|
|
||||||
* move a directory to a path occupied by a file;
|
|
||||||
* move any element to a path occupied by a directory which is not empty.
|
|
||||||
* A move of a file on top of an existing file must attempt to delete and replace that file.
|
|
||||||
* A move of a directory on top of an existing empty directory must attempt to delete and replace that directory.
|
|
||||||
* @param parent The directory to which to move the entry.
|
|
||||||
* @param newName The new name of the entry. Defaults to the Entry's current name if unspecified.
|
|
||||||
* @param successCallback A callback that is called with the Entry for the new location.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
moveTo(parent: DirectoryEntry,
|
|
||||||
newName?: string,
|
|
||||||
successCallback?: (entry: Entry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Copy an entry to a different location on the file system. It is an error to try to:
|
|
||||||
* copy a directory inside itself or to any child at any depth;
|
|
||||||
* copy an entry into its parent if a name different from its current one isn't provided;
|
|
||||||
* copy a file to a path occupied by a directory;
|
|
||||||
* copy a directory to a path occupied by a file;
|
|
||||||
* copy any element to a path occupied by a directory which is not empty.
|
|
||||||
* A copy of a file on top of an existing file must attempt to delete and replace that file.
|
|
||||||
* A copy of a directory on top of an existing empty directory must attempt to delete and replace that directory.
|
|
||||||
* Directory copies are always recursive--that is, they copy all contents of the directory.
|
|
||||||
* @param parent The directory to which to move the entry.
|
|
||||||
* @param newName The new name of the entry. Defaults to the Entry's current name if unspecified.
|
|
||||||
* @param successCallback A callback that is called with the Entry for the new object.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
copyTo(parent: DirectoryEntry,
|
|
||||||
newName?: string,
|
|
||||||
successCallback?: (entry: Entry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Returns a URL that can be used as the src attribute of a <video> or <audio> tag.
|
|
||||||
* If that is not possible, construct a cdvfile:// URL.
|
|
||||||
* @return string URL
|
|
||||||
*/
|
|
||||||
toURL(): string;
|
|
||||||
/**
|
|
||||||
* Return a URL that can be passed across the bridge to identify this entry.
|
|
||||||
* @return string URL that can be passed across the bridge to identify this entry
|
|
||||||
*/
|
|
||||||
toInternalURL(): string;
|
|
||||||
/**
|
|
||||||
* Deletes a file or directory. It is an error to attempt to delete a directory that is not empty. It is an error to attempt to delete the root directory of a filesystem.
|
|
||||||
* @param successCallback A callback that is called on success.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
remove(successCallback: () => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Look up the parent DirectoryEntry containing this Entry. If this Entry is the root of its filesystem, its parent is itself.
|
|
||||||
* @param successCallback A callback that is called with the time of the last modification.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
getParent(successCallback: (entry: Entry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This interface supplies information about the state of a file or directory. */
|
|
||||||
interface Metadata {
|
|
||||||
/** This is the time at which the file or directory was last modified. */
|
|
||||||
modificationTime: Date;
|
|
||||||
/** The size of the file, in bytes. This must return 0 for directories. */
|
|
||||||
size: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This interface represents a directory on a file system. */
|
|
||||||
interface DirectoryEntry extends Entry {
|
|
||||||
/**
|
|
||||||
* Creates a new DirectoryReader to read Entries from this Directory.
|
|
||||||
*/
|
|
||||||
createReader(): DirectoryReader;
|
|
||||||
/**
|
|
||||||
* Creates or looks up a file.
|
|
||||||
* @param path Either an absolute path or a relative path from this DirectoryEntry
|
|
||||||
* to the file to be looked up or created.
|
|
||||||
* It is an error to attempt to create a file whose immediate parent does not yet exist.
|
|
||||||
* @param options If create and exclusive are both true, and the path already exists, getFile must fail.
|
|
||||||
* If create is true, the path doesn't exist, and no other error occurs, getFile must create it as a zero-length file and return a corresponding FileEntry.
|
|
||||||
* If create is not true and the path doesn't exist, getFile must fail.
|
|
||||||
* If create is not true and the path exists, but is a directory, getFile must fail.
|
|
||||||
* Otherwise, if no other error occurs, getFile must return a FileEntry corresponding to path.
|
|
||||||
* @param successCallback A callback that is called to return the File selected or created.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
getFile(path: string, options?: Flags,
|
|
||||||
successCallback?: (entry: FileEntry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Creates or looks up a directory.
|
|
||||||
* @param path Either an absolute path or a relative path from this DirectoryEntry
|
|
||||||
* to the directory to be looked up or created.
|
|
||||||
* It is an error to attempt to create a directory whose immediate parent does not yet exist.
|
|
||||||
* @param options If create and exclusive are both true and the path already exists, getDirectory must fail.
|
|
||||||
* If create is true, the path doesn't exist, and no other error occurs, getDirectory must create and return a corresponding DirectoryEntry.
|
|
||||||
* If create is not true and the path doesn't exist, getDirectory must fail.
|
|
||||||
* If create is not true and the path exists, but is a file, getDirectory must fail.
|
|
||||||
* Otherwise, if no other error occurs, getDirectory must return a DirectoryEntry corresponding to path.
|
|
||||||
* @param successCallback A callback that is called to return the Directory selected or created.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
getDirectory(path: string, options?: Flags,
|
|
||||||
successCallback?: (entry: DirectoryEntry) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Deletes a directory and all of its contents, if any. In the event of an error (e.g. trying
|
|
||||||
* to delete a directory that contains a file that cannot be removed), some of the contents
|
|
||||||
* of the directory may be deleted. It is an error to attempt to delete the root directory of a filesystem.
|
|
||||||
* @param successCallback A callback that is called on success.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
removeRecursively(successCallback: () => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This dictionary is used to supply arguments to methods
|
|
||||||
* that look up or create files or directories.
|
|
||||||
*/
|
|
||||||
interface Flags {
|
|
||||||
/** Used to indicate that the user wants to create a file or directory if it was not previously there. */
|
|
||||||
create?: boolean;
|
|
||||||
/** By itself, exclusive must have no effect. Used with create, it must cause getFile and getDirectory to fail if the target path already exists. */
|
|
||||||
exclusive?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface lets a user list files and directories in a directory. If there are
|
|
||||||
* no additions to or deletions from a directory between the first and last call to
|
|
||||||
* readEntries, and no errors occur, then:
|
|
||||||
* A series of calls to readEntries must return each entry in the directory exactly once.
|
|
||||||
* Once all entries have been returned, the next call to readEntries must produce an empty array.
|
|
||||||
* If not all entries have been returned, the array produced by readEntries must not be empty.
|
|
||||||
* The entries produced by readEntries must not include the directory itself ["."] or its parent [".."].
|
|
||||||
*/
|
|
||||||
interface DirectoryReader {
|
|
||||||
/**
|
|
||||||
* Read the next block of entries from this directory.
|
|
||||||
* @param successCallback Called once per successful call to readEntries to deliver the next
|
|
||||||
* previously-unreported set of Entries in the associated Directory.
|
|
||||||
* If all Entries have already been returned from previous invocations
|
|
||||||
* of readEntries, successCallback must be called with a zero-length array as an argument.
|
|
||||||
* @param errorCallback A callback indicating that there was an error reading from the Directory.
|
|
||||||
*/
|
|
||||||
readEntries(
|
|
||||||
successCallback: (entries: Entry[]) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** This interface represents a file on a file system. */
|
|
||||||
interface FileEntry extends Entry {
|
|
||||||
/**
|
|
||||||
* Creates a new FileWriter associated with the file that this FileEntry represents.
|
|
||||||
* @param successCallback A callback that is called with the new FileWriter.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
createWriter(successCallback: (
|
|
||||||
writer: FileWriter) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
/**
|
|
||||||
* Returns a File that represents the current state of the file that this FileEntry represents.
|
|
||||||
* @param successCallback A callback that is called with the File.
|
|
||||||
* @param errorCallback A callback that is called when errors happen.
|
|
||||||
*/
|
|
||||||
file(successCallback: (file: File) => void,
|
|
||||||
errorCallback?: (error: FileError) => void): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface provides methods to monitor the asynchronous writing of blobs
|
|
||||||
* to disk using progress events and event handler attributes.
|
|
||||||
*/
|
|
||||||
interface FileSaver extends EventTarget {
|
|
||||||
/** Terminate file operation */
|
|
||||||
abort(): void;
|
|
||||||
/**
|
|
||||||
* The FileSaver object can be in one of 3 states. The readyState attribute, on getting,
|
|
||||||
* must return the current state, which must be one of the following values:
|
|
||||||
* INIT
|
|
||||||
* WRITING
|
|
||||||
* DONE
|
|
||||||
*/
|
|
||||||
readyState: number;
|
|
||||||
/** Handler for writestart events. */
|
|
||||||
onwritestart: (event: ProgressEvent) => void;
|
|
||||||
/** Handler for progress events. */
|
|
||||||
onprogress: (event: ProgressEvent) => void;
|
|
||||||
/** Handler for write events. */
|
|
||||||
onwrite: (event: ProgressEvent) => void;
|
|
||||||
/** Handler for abort events. */
|
|
||||||
onabort: (event: ProgressEvent) => void;
|
|
||||||
/** Handler for error events. */
|
|
||||||
onerror: (event: ProgressEvent) => void;
|
|
||||||
/** Handler for writeend events. */
|
|
||||||
onwriteend: (event: ProgressEvent) => void;
|
|
||||||
/** The last error that occurred on the FileSaver. */
|
|
||||||
error: Error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This interface expands on the FileSaver interface to allow for multiple write
|
|
||||||
* actions, rather than just saving a single Blob.
|
|
||||||
*/
|
|
||||||
interface FileWriter extends FileSaver {
|
|
||||||
/**
|
|
||||||
* The byte offset at which the next write to the file will occur. This always less or equal than length.
|
|
||||||
* A newly-created FileWriter will have position set to 0.
|
|
||||||
*/
|
|
||||||
position: number;
|
|
||||||
/**
|
|
||||||
* The length of the file. If the user does not have read access to the file,
|
|
||||||
* this will be the highest byte offset at which the user has written.
|
|
||||||
*/
|
|
||||||
length: number;
|
|
||||||
/**
|
|
||||||
* Write the supplied data to the file at position.
|
|
||||||
* @param {Blob|string|ArrayBuffer} data The blob to write.
|
|
||||||
*/
|
|
||||||
write(data: Blob | string | ArrayBuffer): void;
|
|
||||||
/**
|
|
||||||
* The file position at which the next write will occur.
|
|
||||||
* @param offset If nonnegative, an absolute byte offset into the file.
|
|
||||||
* If negative, an offset back from the end of the file.
|
|
||||||
*/
|
|
||||||
seek(offset: number): void;
|
|
||||||
/**
|
|
||||||
* Changes the length of the file to that specified. If shortening the file, data beyond the new length
|
|
||||||
* will be discarded. If extending the file, the existing data will be zero-padded up to the new length.
|
|
||||||
* @param size The size to which the length of the file is to be adjusted, measured in bytes.
|
|
||||||
*/
|
|
||||||
truncate(size: number): void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* FileWriter states */
|
|
||||||
declare var FileWriter: {
|
|
||||||
INIT: number;
|
|
||||||
WRITING: number;
|
|
||||||
DONE: number
|
|
||||||
};
|
|
||||||
|
|
||||||
interface FileError {
|
|
||||||
/** Error code */
|
|
||||||
code: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
declare var FileError: {
|
|
||||||
new (code: number): FileError;
|
|
||||||
NOT_FOUND_ERR: number;
|
|
||||||
SECURITY_ERR: number;
|
|
||||||
ABORT_ERR: number;
|
|
||||||
NOT_READABLE_ERR: number;
|
|
||||||
ENCODING_ERR: number;
|
|
||||||
NO_MODIFICATION_ALLOWED_ERR: number;
|
|
||||||
INVALID_STATE_ERR: number;
|
|
||||||
SYNTAX_ERR: number;
|
|
||||||
INVALID_MODIFICATION_ERR: number;
|
|
||||||
QUOTA_EXCEEDED_ERR: number;
|
|
||||||
TYPE_MISMATCH_ERR: number;
|
|
||||||
PATH_EXISTS_ERR: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Constants defined in fileSystemPaths
|
|
||||||
*/
|
|
||||||
interface Cordova {
|
|
||||||
file: {
|
|
||||||
/* Read-only directory where the application is installed. */
|
|
||||||
applicationDirectory: string;
|
|
||||||
/* Root of app's private writable storage */
|
|
||||||
applicationStorageDirectory: string;
|
|
||||||
/* Where to put app-specific data files. */
|
|
||||||
dataDirectory: string;
|
|
||||||
/* Cached files that should survive app restarts. Apps should not rely on the OS to delete files in here. */
|
|
||||||
cacheDirectory: string;
|
|
||||||
/* Android: the application space on external storage. */
|
|
||||||
externalApplicationStorageDirectory: string;
|
|
||||||
/* Android: Where to put app-specific data files on external storage. */
|
|
||||||
externalDataDirectory: string;
|
|
||||||
/* Android: the application cache on external storage. */
|
|
||||||
externalCacheDirectory: string;
|
|
||||||
/* Android: the external storage (SD card) root. */
|
|
||||||
externalRootDirectory: string;
|
|
||||||
/* iOS: Temp directory that the OS can clear at will. */
|
|
||||||
tempDirectory: string;
|
|
||||||
/* iOS: Holds app-specific files that should be synced (e.g. to iCloud). */
|
|
||||||
syncedDataDirectory: string;
|
|
||||||
/* iOS: Files private to the app, but that are meaningful to other applciations (e.g. Office files) */
|
|
||||||
documentsDirectory: string;
|
|
||||||
/* BlackBerry10: Files globally available to all apps */
|
|
||||||
sharedDirectory: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
declare enum LocalFileSystem {
|
|
||||||
PERSISTENT=1,
|
|
||||||
TEMPORARY=0
|
|
||||||
}
|
|
|
@ -1,390 +0,0 @@
|
||||||
interface CordovaPlugins {
|
|
||||||
notification: {
|
|
||||||
badge: Object;
|
|
||||||
local: LocalNotification;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
type Callback = (bool: boolean) => void;
|
|
||||||
|
|
||||||
interface LocalNotification {
|
|
||||||
/**
|
|
||||||
* Check permission to show notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
hasPermission: (callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Request permission to show notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
requestPermission: (callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Schedule notifications.
|
|
||||||
*
|
|
||||||
* @param msgs The notifications to schedule.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
* @param args Optional flags how to schedule.
|
|
||||||
*/
|
|
||||||
schedule: (msgs: Object | Object[], callback?: Callback, scope?: any, args?: Object) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Schedule notifications.
|
|
||||||
*
|
|
||||||
* @param notifications The notifications to schedule.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
* @param args Optional flags how to schedule.
|
|
||||||
*/
|
|
||||||
update: (msgs: Object | Object[], callback?: Callback, scope?: any, args?: Object) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear the specified notifications by id.
|
|
||||||
*
|
|
||||||
* @param ids The IDs of the notifications.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
clear: (ids: number | number[], callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear all triggered notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
clearAll: (callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clear the specified notifications by id.
|
|
||||||
*
|
|
||||||
* @param ids The IDs of the notifications.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
cancel: (ids: number | number[], callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cancel all scheduled notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
cancelAll: (callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a notification is present.
|
|
||||||
*
|
|
||||||
* @param id The ID of the notification.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
isPresent: (id: number, callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a notification is scheduled.
|
|
||||||
*
|
|
||||||
* @param id The ID of the notification.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
isScheduled: (id: number, callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a notification was triggered.
|
|
||||||
*
|
|
||||||
* @param id The ID of the notification.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
isTriggered: (id: number, callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a notification has a given type.
|
|
||||||
*
|
|
||||||
* @param id The ID of the notification.
|
|
||||||
* @param type The type of the notification.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
hasType: (id: number, type: string, callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the type (triggered, scheduled) for the notification.
|
|
||||||
*
|
|
||||||
* @param id The ID of the notification.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getType: (id: number, callback?: Callback, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all notification ids.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getIds: (callback: (ids: number[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all scheduled notification IDs.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getScheduledIds: (callback: (ids: number[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all triggered notification IDs.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getTriggeredIds: (callback: (ids: number[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of local notifications specified by id.
|
|
||||||
* If called without IDs, all notification will be returned.
|
|
||||||
*
|
|
||||||
* @param ids The IDs of the notifications.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
|
|
||||||
get(ids: number[], callback: (notifications: Object[]) => void, scope?: any): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of local notifications specified by id.
|
|
||||||
* If called without IDs, all notification will be returned.
|
|
||||||
*/
|
|
||||||
get(callback: (notifications: Object[]) => void, scope?: any): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List for all notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getAll: (callback: (notifications: Object[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all scheduled notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getScheduled: (callback: (notifications: Object[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of all triggered notifications.
|
|
||||||
*
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
getTriggered: (callback: (notifications: Object[]) => void, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add an group of actions by id.
|
|
||||||
*
|
|
||||||
* @param id The Id of the group.
|
|
||||||
* @param actions The action config settings.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
addActions: (id: string, actions: any[], callback?: Function, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove an group of actions by id.
|
|
||||||
*
|
|
||||||
* @param id The Id of the group.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
removeActions: (id: string, callback?: Function, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if a group of actions is defined.
|
|
||||||
*
|
|
||||||
* @param id The Id of the group.
|
|
||||||
* @param callback The function to be exec as the callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
hasActions: (id: string, callback?: Function, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The (platform specific) default settings.
|
|
||||||
*/
|
|
||||||
getDefaults: () => ({
|
|
||||||
actions: any[],
|
|
||||||
attachments: any[],
|
|
||||||
autoClear: boolean,
|
|
||||||
badge: any, // null
|
|
||||||
channel: any, // null
|
|
||||||
clock: boolean,
|
|
||||||
color: any, // null
|
|
||||||
data: any, // null
|
|
||||||
defaults: number,
|
|
||||||
foreground: any, // null
|
|
||||||
group: any, // null
|
|
||||||
groupSummary: boolean,
|
|
||||||
icon: any, // null,
|
|
||||||
iconType: any, // null,
|
|
||||||
id: number,
|
|
||||||
launch: boolean,
|
|
||||||
led: boolean,
|
|
||||||
lockscreen: boolean,
|
|
||||||
mediaSession: any, // null
|
|
||||||
number: number,
|
|
||||||
priority: number,
|
|
||||||
progressBar: boolean,
|
|
||||||
silent: boolean,
|
|
||||||
smallIcon: string,
|
|
||||||
sound: boolean,
|
|
||||||
sticky: boolean,
|
|
||||||
summary: any, // null,
|
|
||||||
text: string,
|
|
||||||
timeoutAfter: boolean,
|
|
||||||
title: string,
|
|
||||||
trigger: Object,
|
|
||||||
vibrate: boolean,
|
|
||||||
wakeup: boolean
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Overwrite default settings.
|
|
||||||
*
|
|
||||||
* @param newDefaults New default values.
|
|
||||||
*/
|
|
||||||
setDefaults: (newDefaults: object) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register callback for given event.
|
|
||||||
*
|
|
||||||
* @param event The name of the event.
|
|
||||||
* @param callback The function to be exec as callback.
|
|
||||||
* @param scope The callback function's scope.
|
|
||||||
*/
|
|
||||||
on: (event: string, callback: Function, scope?: any) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister callback for given event.
|
|
||||||
*
|
|
||||||
* @param event The name of the event.
|
|
||||||
* @param callback The function to be exec as callback.
|
|
||||||
*/
|
|
||||||
un: (event: string, callback: Function) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fire the event with given arguments.
|
|
||||||
*
|
|
||||||
* @param event The event's name.
|
|
||||||
* @param args The callback's arguments.
|
|
||||||
*/
|
|
||||||
fireEvent: (event: string, ...args: any[]) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fire queued events once the device is ready and all listeners are registered.
|
|
||||||
*/
|
|
||||||
fireQueuedEvents: VoidFunction;
|
|
||||||
}
|
|
||||||
|
|
||||||
interface privateFunction {
|
|
||||||
/**
|
|
||||||
* Merge custom properties with the default values.
|
|
||||||
*
|
|
||||||
* @param options Set of custom values.
|
|
||||||
*/
|
|
||||||
_mergeWithDefaults: (options: object) => object;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the passed values to their required type.
|
|
||||||
*
|
|
||||||
* @param options Properties to convert for.
|
|
||||||
*/
|
|
||||||
_convertProperties: (options: object) => object;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the passed values for the priority to their required type.
|
|
||||||
*
|
|
||||||
* @param options Set of custom values.
|
|
||||||
*
|
|
||||||
* @return Interaction object with trigger spec.
|
|
||||||
*/
|
|
||||||
_convertPriority: (options: object) => object;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the passed values to their required type, modifying them
|
|
||||||
* directly for Android and passing the converted list back for iOS.
|
|
||||||
*
|
|
||||||
* @param options Set of custom values.
|
|
||||||
*
|
|
||||||
* @return Interaction object with category & actions.
|
|
||||||
*/
|
|
||||||
_convertActions: (options: object) => object;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the passed values for the trigger to their required type.
|
|
||||||
*
|
|
||||||
* @param options Set of custom values.
|
|
||||||
*
|
|
||||||
* @return Interaction object with trigger spec.
|
|
||||||
*/
|
|
||||||
_convertTrigger: (options: object) => object;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a callback function to get executed within a specific scope.
|
|
||||||
*
|
|
||||||
* @param [ Function ] fn The function to be exec as the callback.
|
|
||||||
* @param [ Object ] scope The callback function's scope.
|
|
||||||
*
|
|
||||||
* @return [ Function ]
|
|
||||||
*/
|
|
||||||
_createCallbackFn: (fn: Function, scope?: any) => (...args: any[]) => void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert the IDs to numbers.
|
|
||||||
*
|
|
||||||
* @param ids
|
|
||||||
*/
|
|
||||||
_convertIds: (ids: (number | string)[]) => number[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* First found value for the given keys.
|
|
||||||
*
|
|
||||||
* @param options Object with key-value properties.
|
|
||||||
* @param keys List of keys.
|
|
||||||
*/
|
|
||||||
_getValueFor: (options: object, ...keys: any[]) => object | null;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Convert a value to an array.
|
|
||||||
*
|
|
||||||
* @param obj Any kind of object.
|
|
||||||
*
|
|
||||||
* @return An array with the object as first item.
|
|
||||||
*/
|
|
||||||
_toArray: (obj: any) => any[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute the native counterpart.
|
|
||||||
*
|
|
||||||
* @param action The name of the action.
|
|
||||||
* @param args Array of arguments.
|
|
||||||
* @param callback The callback function.
|
|
||||||
* @param scope The scope for the function.
|
|
||||||
*/
|
|
||||||
_exec: (action: string, args: any[], callback: Function, scope?: any) => void;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the launch details if the app was launched by clicking on a toast.
|
|
||||||
*/
|
|
||||||
_setLaunchDetails: VoidFunction;
|
|
||||||
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,16 +0,0 @@
|
||||||
/// <reference path="./ArrayEx.d.ts" />
|
|
||||||
/// <reference path="./Card.d.ts" />
|
|
||||||
/// <reference path="./DateEx.d.ts" />
|
|
||||||
/// <reference path="./HTMLDivElementEx.d.ts" />
|
|
||||||
/// <reference path="./HTMLTableELementEx.d.ts" />
|
|
||||||
/// <reference path="./windowEx.d.ts" />
|
|
||||||
/// <reference path="./Result.d.ts" />
|
|
||||||
/// <reference path="./Skill.d.ts" />
|
|
||||||
/// <reference path="./type.d.ts" />
|
|
||||||
/// <reference path="./MapEx.d.ts" />
|
|
||||||
/// <reference types="@types/cordova" />
|
|
||||||
/// <reference path="./cordova-plugin-dialogs.d.ts" />
|
|
||||||
/// <reference path="./cordova-plugin-file.d.ts" />
|
|
||||||
/// <reference path="./cordova-plugin-file-transfer.d.ts" />
|
|
||||||
/// <reference path="./cordova-plugin-local-notifications.d.ts" />
|
|
||||||
/// <reference path="./electron.d.ts" />
|
|
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"name": "noname-typings",
|
|
||||||
"version": "2024.02.06",
|
|
||||||
"description": "Noname typings, mainly for showing type hints when creating extensions of the Sanguosha-like game Noname.",
|
|
||||||
"repository": {
|
|
||||||
"type": "git",
|
|
||||||
"url": "git+https://github.com/nonameShijian/noname-typings.git"
|
|
||||||
},
|
|
||||||
"keywords": [
|
|
||||||
"Noname",
|
|
||||||
"Sanguosha",
|
|
||||||
"card game",
|
|
||||||
"extension",
|
|
||||||
"typings"
|
|
||||||
],
|
|
||||||
"author": "nonameShijian",
|
|
||||||
"license": "GPL-3.0",
|
|
||||||
"types": "./index.d.ts",
|
|
||||||
"bugs": {
|
|
||||||
"url": "https://github.com/nonameShijian/noname-typings/issues"
|
|
||||||
},
|
|
||||||
"homepage": "https://github.com/nonameShijian/noname-typings#readme",
|
|
||||||
"dependencies": {
|
|
||||||
"@types/cordova": "*",
|
|
||||||
"@types/node": "*"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,702 +0,0 @@
|
||||||
//这里主要是声明各种游戏内常用的对象的结构
|
|
||||||
type listeners = {
|
|
||||||
[key in keyof HTMLElementEventMap]?: EventListener;
|
|
||||||
};
|
|
||||||
|
|
||||||
type styleObj = {
|
|
||||||
[key in keyof CSSStyleDeclaration]?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** key为字符串的map */
|
|
||||||
interface SMap<V> {
|
|
||||||
[key: string]: V
|
|
||||||
}
|
|
||||||
|
|
||||||
/** key为number的map */
|
|
||||||
interface NMap<V> {
|
|
||||||
[key: number]: V
|
|
||||||
}
|
|
||||||
|
|
||||||
//从0个参数到任意参数的方法结构声明
|
|
||||||
type NoneParmFum<T> = () => T;
|
|
||||||
type OneParmFun<U, T> = (arg0: U) => T;
|
|
||||||
type TwoParmFun<U1, U2, T> = (arg0: U1, arg1: U2) => T;
|
|
||||||
type ThreeParmFun<U1, U2, U3, T> = (arg0: U1, arg1: U2, arg2: U3) => T;
|
|
||||||
type FourParmFun<U1, U2, U3, U4, T> = (arg0: U1, arg1: U2, arg2: U3, arg3: U4) => T;
|
|
||||||
type RestParmFun<T> = (...args) => T;
|
|
||||||
type RestParmFun2<U, T> = (...args: U[]) => T;
|
|
||||||
|
|
||||||
//尝试增加的符合类型声明
|
|
||||||
/** SingleAndArrayType:单体与集合类型 */
|
|
||||||
type SAAType<T> = T | T[];
|
|
||||||
/** 再价格可以返回这种类型的方法 */
|
|
||||||
type SAAFType<T> = T | T[] | RestParmFun<T>;
|
|
||||||
/** 有name属性的对象 */
|
|
||||||
type NameType = { name: string };
|
|
||||||
/** 技能或者卡牌 */
|
|
||||||
type SkillOrCard = string | NameType | Card;
|
|
||||||
/** 卡牌或者卡牌集合 */
|
|
||||||
type CCards = SAAType<Card>;
|
|
||||||
|
|
||||||
/** 技能content */
|
|
||||||
declare type ContentFuncByAll = (event: GameEventPromise, trigger: GameEventPromise, player: Player) => Promise<any>;
|
|
||||||
|
|
||||||
declare type GeneratorContentFuncByAll = (event: GameEventPromise, map: {
|
|
||||||
event: GameEventPromise,
|
|
||||||
step: number,
|
|
||||||
source: Player,
|
|
||||||
player: Player,
|
|
||||||
target: Player,
|
|
||||||
targets: Player[],
|
|
||||||
card: Card,
|
|
||||||
cards: Card[],
|
|
||||||
skill: string,
|
|
||||||
forced: boolean,
|
|
||||||
num: number,
|
|
||||||
trigger: GameEventPromise,
|
|
||||||
result: Result
|
|
||||||
}) => Generator<any, void, unknown>;
|
|
||||||
|
|
||||||
declare type OldContentFuncByAll = () => void
|
|
||||||
|
|
||||||
declare type Game = typeof import('../../noname/game/index.js').Game;
|
|
||||||
declare type Library = typeof import('../../noname/library/index.js').Library;
|
|
||||||
declare type Status = typeof import('../../noname/status/index.js').status;
|
|
||||||
declare type UI = typeof import('../../noname/ui/index.js').UI;
|
|
||||||
declare type Get = typeof import('../../noname/get/index.js').Get;
|
|
||||||
declare type AI = typeof import('../../noname/ai/index.js').AI;
|
|
||||||
|
|
||||||
declare type Button = import('../../noname/library/index.js').Button;
|
|
||||||
declare type Card = import('../../noname/library/index.js').Card;
|
|
||||||
declare type VCard = import('../../noname/library/index.js').VCard;
|
|
||||||
declare type Dialog = import('../../noname/library/index.js').Dialog;
|
|
||||||
declare type GameEvent = import('../../noname/library/index.js').GameEvent;
|
|
||||||
declare type GameEventPromise = import('../../noname/library/index.js').GameEventPromise;
|
|
||||||
declare type Player = import('../../noname/library/index.js').Player;
|
|
||||||
declare type Control = import('../../noname/library/index.js').Control;
|
|
||||||
|
|
||||||
declare type Video = import('../../noname/game/index.js').Video;
|
|
||||||
declare type Videos = import('../../noname/game/index.js').Videos;
|
|
||||||
declare type GameHistory = import('../../noname/game/index.js').GameHistory;
|
|
||||||
declare type CodeMirror = typeof import('../../game/codemirror.js').default;
|
|
||||||
|
|
||||||
declare type Sex = 'male' | 'female' | 'dobule' | 'none';
|
|
||||||
declare type Character = [Sex, string, number | string, string[], string[]] | [Sex, string, number | string, string[]];
|
|
||||||
declare type Select = [number, number];
|
|
||||||
|
|
||||||
declare interface progress extends HTMLDivElement {
|
|
||||||
/** 获取标题 */
|
|
||||||
getTitle: () => string;
|
|
||||||
/** 更改标题 */
|
|
||||||
setTitle: (title: string) => void;
|
|
||||||
/** 获取显示的文件名 */
|
|
||||||
getFileName: () => string;
|
|
||||||
/** 更改显示的文件名 */
|
|
||||||
setFileName: (title: string) => void;
|
|
||||||
/** 获取进度*/
|
|
||||||
getProgressValue: () => number;
|
|
||||||
/** 更改进度*/
|
|
||||||
setProgressValue: (value: number) => void;
|
|
||||||
/** 获取下载文件总数 */
|
|
||||||
getProgressMax: () => number;
|
|
||||||
/** 修改下载文件总数 */
|
|
||||||
setProgressMax: (max: number) => void;
|
|
||||||
/** 通过数组自动解析文件名 */
|
|
||||||
autoSetFileNameFromArray: (fileNameList: string[]) => void;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入武将包的配置
|
|
||||||
*/
|
|
||||||
declare interface importCharacterConfig {
|
|
||||||
/** 武将包名 */
|
|
||||||
name: string;
|
|
||||||
/**
|
|
||||||
* 设置该武将包是否可以联机
|
|
||||||
*/
|
|
||||||
connect?: boolean;
|
|
||||||
/**
|
|
||||||
* 设置联机武将禁用列表
|
|
||||||
* */
|
|
||||||
connectBanned?: string[];
|
|
||||||
/**
|
|
||||||
* 设置武将基本配置信息
|
|
||||||
*/
|
|
||||||
character: SMap<Character>;
|
|
||||||
/**
|
|
||||||
* 设置武将介绍
|
|
||||||
* */
|
|
||||||
characterIntro?: SMap<string>;
|
|
||||||
/**
|
|
||||||
* 设置武将标题(用于写称号或注释)
|
|
||||||
* */
|
|
||||||
characterTitle?: SMap<string>;
|
|
||||||
/**
|
|
||||||
* 设置技能
|
|
||||||
* */
|
|
||||||
skill?: SMap<Skill>;
|
|
||||||
/**
|
|
||||||
* 设置珠联璧合武将
|
|
||||||
* */
|
|
||||||
perfectPair?: SMap<string[]>;
|
|
||||||
/**
|
|
||||||
* 设置指定武将的过滤方法(传入一个mode,用于过滤玩法模式)
|
|
||||||
* */
|
|
||||||
characterFilter?: SMap<OneParmFun<string, boolean>>;
|
|
||||||
/**
|
|
||||||
* 设置在武将包界面分包
|
|
||||||
*/
|
|
||||||
characterSort?: SMap<SMap<string[]>>;
|
|
||||||
/**
|
|
||||||
* 设置该武将包独有的卡牌(或者是特殊卡牌)
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
card?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 设置自定义卡牌类型的排序用的优先级
|
|
||||||
* */
|
|
||||||
cardType?: SMap<number>;
|
|
||||||
/**
|
|
||||||
* 设置动态翻译(本地化)【v1.9.105】
|
|
||||||
*
|
|
||||||
* 指定lib.dynamicTranslate.xxx为一个函数 即可让技能xxx显示的描述随玩家状态而变化 并实现技能修改等
|
|
||||||
*
|
|
||||||
* Player:指技能拥有者
|
|
||||||
*/
|
|
||||||
dynamicTranslate?: SMap<OneParmFun<Player, string>>;
|
|
||||||
/**
|
|
||||||
* 选择武将时,武将左下角可进行替换的武将配置【v1.9.106.3】
|
|
||||||
*
|
|
||||||
* */
|
|
||||||
characterReplace?: SMap<string[]>;
|
|
||||||
|
|
||||||
translate?: SMap<string>;
|
|
||||||
/**
|
|
||||||
* 对应lib.element
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
element?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ai
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ai?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ui
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ui?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应game
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
game?: SMap<any>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 类型:键值对
|
|
||||||
*
|
|
||||||
* 作用:对应get
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
get?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 帮助内容将显示在菜单-选项-帮助中
|
|
||||||
*
|
|
||||||
* 游戏编辑器的帮助代码基本示例结构:
|
|
||||||
*
|
|
||||||
* "帮助条目":
|
|
||||||
* ```jsx
|
|
||||||
* <ul>
|
|
||||||
* <li>列表1-条目1
|
|
||||||
* <li>列表1-条目2
|
|
||||||
* </ul>
|
|
||||||
* <ol>
|
|
||||||
* <li>列表2-条目1
|
|
||||||
* <li>列表2-条目2
|
|
||||||
* </ul>
|
|
||||||
* ```
|
|
||||||
* (目前可显示帮助信息:mode,extension,card卡包,character武将包)
|
|
||||||
*/
|
|
||||||
help?: SMap<string>;
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* 导入卡牌包的配置
|
|
||||||
*/
|
|
||||||
declare interface importCardConfig {
|
|
||||||
/** 卡牌包名 */
|
|
||||||
name: string;
|
|
||||||
/**
|
|
||||||
* 设置该卡包是否可以联机
|
|
||||||
* */
|
|
||||||
connect?: boolean;
|
|
||||||
/**
|
|
||||||
* 设置卡牌
|
|
||||||
* */
|
|
||||||
card: SMap<Card>;
|
|
||||||
/**
|
|
||||||
* 设置卡牌技能
|
|
||||||
* */
|
|
||||||
skill: SMap<Skill>;
|
|
||||||
/**
|
|
||||||
* 设置从牌堆添加指定卡牌
|
|
||||||
* */
|
|
||||||
list: CardBaseUIData[];
|
|
||||||
/** 卡牌翻译 */
|
|
||||||
translate: SMap<string> | string;
|
|
||||||
/**
|
|
||||||
* 帮助内容将显示在菜单-选项-帮助中
|
|
||||||
*
|
|
||||||
* 游戏编辑器的帮助代码基本示例结构:
|
|
||||||
*
|
|
||||||
* "帮助条目":
|
|
||||||
* ```jsx
|
|
||||||
* <ul>
|
|
||||||
* <li>列表1-条目1
|
|
||||||
* <li>列表1-条目2
|
|
||||||
* </ul>
|
|
||||||
* <ol>
|
|
||||||
* <li>列表2-条目1
|
|
||||||
* <li>列表2-条目2
|
|
||||||
* </ul>
|
|
||||||
* ```
|
|
||||||
* (目前可显示帮助信息:mode,extension,card卡包,character武将包)
|
|
||||||
*/
|
|
||||||
help?: SMap<string>;
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入玩法模式的配置
|
|
||||||
*/
|
|
||||||
declare interface importModeConfig {
|
|
||||||
/** 模式名 */
|
|
||||||
name: string;
|
|
||||||
/** 技能(主要是放些该模式下特有的技能) */
|
|
||||||
skill?: SMap<Skill>;
|
|
||||||
/**
|
|
||||||
* 武将包
|
|
||||||
*/
|
|
||||||
characterPack?: SMap<SMap<Character>>;
|
|
||||||
/**
|
|
||||||
* 武将分类排序
|
|
||||||
*/
|
|
||||||
characterSort?: SMap<SMap<string[]>>;
|
|
||||||
/** 卡牌(主要是放些该模式下特有的卡牌) */
|
|
||||||
card?: SMap<Card>;
|
|
||||||
/**
|
|
||||||
* 卡包
|
|
||||||
*/
|
|
||||||
cardPack?: SMap<SMap<string[]>>;
|
|
||||||
/**
|
|
||||||
* mode的init方法(若有,init是最早启动的方法)
|
|
||||||
*/
|
|
||||||
init?(): void;
|
|
||||||
/**
|
|
||||||
* mode的start启动方法
|
|
||||||
*/
|
|
||||||
start(): void;
|
|
||||||
/**
|
|
||||||
* mode的start启动之前的处理方法
|
|
||||||
*/
|
|
||||||
startBefore?(): void;
|
|
||||||
/**
|
|
||||||
* 重新初始化
|
|
||||||
*
|
|
||||||
* 在lib.client.reinit中,
|
|
||||||
*
|
|
||||||
* game.loadModeAsync,读取mode时启用这个初始化。
|
|
||||||
*
|
|
||||||
* 具体作用:有待考究
|
|
||||||
*/
|
|
||||||
onreinit?(): void;
|
|
||||||
/**
|
|
||||||
* 对应lib.element
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
element?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ai
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ai?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ui
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ui?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应game
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
game?: SMap<any>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 类型:键值对
|
|
||||||
*
|
|
||||||
* 作用:对应get
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
get?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 帮助内容将显示在菜单-选项-帮助中
|
|
||||||
*
|
|
||||||
* 游戏编辑器的帮助代码基本示例结构:
|
|
||||||
*
|
|
||||||
* "帮助条目":
|
|
||||||
* ```jsx
|
|
||||||
* <ul>
|
|
||||||
* <li>列表1-条目1
|
|
||||||
* <li>列表1-条目2
|
|
||||||
* </ul>
|
|
||||||
* <ol>
|
|
||||||
* <li>列表2-条目1
|
|
||||||
* <li>列表2-条目2
|
|
||||||
* </ul>
|
|
||||||
* ```
|
|
||||||
* (目前可显示帮助信息:mode,extension,card卡包,character武将包)
|
|
||||||
*/
|
|
||||||
help?: SMap<string>;
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入武将的配置
|
|
||||||
*/
|
|
||||||
declare interface importPlayerConfig {
|
|
||||||
/** 武将包名 */
|
|
||||||
name: string;
|
|
||||||
/** 禁用此扩展的模式 */
|
|
||||||
forbid: string[];
|
|
||||||
/** 可使用模式 */
|
|
||||||
mode: string[];
|
|
||||||
//自定义是实现核心初始化方法
|
|
||||||
init?(): void;
|
|
||||||
arenaReady?(): void;
|
|
||||||
/**
|
|
||||||
* 对应lib.element
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
element?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ai
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ai?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ui
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
ui?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应game
|
|
||||||
*
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
game?: SMap<any>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 类型:键值对
|
|
||||||
*
|
|
||||||
* 作用:对应get
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
get?: SMap<any>;
|
|
||||||
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 导入扩展的配置
|
|
||||||
*/
|
|
||||||
declare interface importExtensionConfig {
|
|
||||||
/** 扩展名 */
|
|
||||||
name: string;
|
|
||||||
/** 用于解析用的key,不直接参与游戏逻辑,参与自己定义的解析流程,统一该包的前缀 */
|
|
||||||
key?: string;
|
|
||||||
/**
|
|
||||||
* 是否可编辑该扩展(需要打开显示制作扩展)
|
|
||||||
*
|
|
||||||
* (都满足条件,则可以开启“编辑此扩展”功能)
|
|
||||||
*/
|
|
||||||
editable?: boolean;
|
|
||||||
/**
|
|
||||||
* 该扩展菜单的配置
|
|
||||||
*
|
|
||||||
* 名字:"extension_" + key
|
|
||||||
*
|
|
||||||
* 内容: value
|
|
||||||
*
|
|
||||||
* (也是游戏编辑器中的选项代码部分)
|
|
||||||
*/
|
|
||||||
config?: SMap<SelectConfigData>;
|
|
||||||
/**
|
|
||||||
* 联机配置(目前扩展已经不能联机)
|
|
||||||
*
|
|
||||||
* 特殊接口:update
|
|
||||||
*/
|
|
||||||
connect?: SMap<SelectConfigData>;
|
|
||||||
/**
|
|
||||||
* 扩展的包信息。
|
|
||||||
*
|
|
||||||
* 包括卡牌,技能,人物的代码以及中文翻译
|
|
||||||
*/
|
|
||||||
package: PackageData;
|
|
||||||
/**
|
|
||||||
* 函数执行时机为游戏数据加载之后、界面加载之前
|
|
||||||
*
|
|
||||||
* (游戏编辑器中的主代码部分)
|
|
||||||
*
|
|
||||||
* 注:即选择了玩法模式之后加载的内容部分;
|
|
||||||
* @param config 扩展选项/配置
|
|
||||||
* @param pack 扩展定义的武将、卡牌和技能等
|
|
||||||
*/
|
|
||||||
content?(config: SMap<any>, pack: PackageData): void;
|
|
||||||
/**
|
|
||||||
* 函数执行时机为游戏数据加载之前,且不受禁用扩展的限制,除添加模式外请慎用
|
|
||||||
*
|
|
||||||
* (也是游戏编辑器中的启动代码部分)
|
|
||||||
*
|
|
||||||
* 注:game.import添加扩展时就加载,即当前游戏加载菜单界面时就已经加载;
|
|
||||||
*
|
|
||||||
* 注2:当前扩展联机时,需要直接再此扩展;为了方便扩展,大部分扩展直接在这里扩展;
|
|
||||||
* @param data 保存在lib.config中”extension_扩展名“为前缀的配置
|
|
||||||
*/
|
|
||||||
precontent?(data?: SMap<any>): void;
|
|
||||||
/** 删除该扩展后调用 */
|
|
||||||
onremove?(): void;
|
|
||||||
/**
|
|
||||||
* 帮助内容将显示在菜单-选项-帮助中
|
|
||||||
*
|
|
||||||
* 游戏编辑器的帮助代码基本示例结构:
|
|
||||||
*
|
|
||||||
* "帮助条目":
|
|
||||||
* ```jsx
|
|
||||||
* <ul>
|
|
||||||
* <li>列表1-条目1
|
|
||||||
* <li>列表1-条目2
|
|
||||||
* </ul>
|
|
||||||
* <ol>
|
|
||||||
* <li>列表2-条目1
|
|
||||||
* <li>列表2-条目2
|
|
||||||
* </ul>
|
|
||||||
* ```
|
|
||||||
* (目前可显示帮助信息:mode,extension,card卡包,character武将包)
|
|
||||||
*/
|
|
||||||
help?: SMap<string>;
|
|
||||||
/** 相关文件名 */
|
|
||||||
files?: {
|
|
||||||
character?: string[],
|
|
||||||
card?: string[],
|
|
||||||
skill?: string[]
|
|
||||||
};
|
|
||||||
/**
|
|
||||||
* 【特殊】用于game.addMode添加时,
|
|
||||||
* 用于显示模式icon,所有的图片路径的imgsrc,指定外层扩展文件名;
|
|
||||||
*/
|
|
||||||
extension?: string;
|
|
||||||
/**
|
|
||||||
* 对应lib.element,
|
|
||||||
* 若里面是项目内的同名字段,将覆盖原方法
|
|
||||||
*/
|
|
||||||
element?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ai
|
|
||||||
*/
|
|
||||||
ai?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应ui
|
|
||||||
*/
|
|
||||||
ui?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应game
|
|
||||||
*/
|
|
||||||
game?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 对应get
|
|
||||||
*/
|
|
||||||
get?: SMap<any>;
|
|
||||||
/**
|
|
||||||
* 可以继续加入更多对象:
|
|
||||||
* 这些对象会对应附加在lib中,或替换对应lib位置的对象:
|
|
||||||
* 例如:translate,help,skill... ... 或者其他自定义的...
|
|
||||||
*/
|
|
||||||
[key: string]: any;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 菜单的选项的配置
|
|
||||||
*
|
|
||||||
* config的功能菜单的node._link.config,就是该config
|
|
||||||
* 内部代码略复杂,太多UI相关逻辑,看不懂(等日后精进,再继续再战)
|
|
||||||
*/
|
|
||||||
declare interface SelectConfigData {
|
|
||||||
/** 功能名 */
|
|
||||||
name: string;
|
|
||||||
/**
|
|
||||||
* 【核心】初始化时默认的选项/配置/模式(对应下面item的key)
|
|
||||||
*/
|
|
||||||
init?: boolean | string;
|
|
||||||
/**
|
|
||||||
* 【核心】二级菜单配置(当前config内容的菜单)
|
|
||||||
*/
|
|
||||||
item?: SMap<string> | NoneParmFum<SMap<string>>;
|
|
||||||
/**
|
|
||||||
* 功能说明
|
|
||||||
*
|
|
||||||
* 若没有,也不是其他特殊的选项,则显示“设置 + name”
|
|
||||||
*/
|
|
||||||
intro?: string | NoneParmFum<string>;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 显示bar(添加了“withbar”,有一定的居中效果,即当前menu的头部或者尾部)
|
|
||||||
*
|
|
||||||
* @param node 创建出来的visualBar节点
|
|
||||||
* @param item item选项
|
|
||||||
* @param create 即内部自定义的createNode方法,一般不直接使用该方法,目前来看,可以内部重新定义覆盖该方法,自己达成创建item列表的方式
|
|
||||||
* @param switcher 当前config的item的node节点
|
|
||||||
*/
|
|
||||||
visualBar?: (node: HTMLDivElement, item: SMap<string>, create: OneParmFun<string, void>, switcher?: HTMLDivElement) => void
|
|
||||||
/**
|
|
||||||
* 显示菜单
|
|
||||||
* 显示一个以3列为一行的显示列表(内部实现)
|
|
||||||
* @param node 当前配置项的节点
|
|
||||||
* @param item 当前node的node._link
|
|
||||||
* @param name item选项
|
|
||||||
* @param config 当前的config
|
|
||||||
*/
|
|
||||||
visualMenu?: (node: HTMLDivElement, link: any, name: string, config: SelectConfigData) => void;
|
|
||||||
/**
|
|
||||||
* 文本菜单
|
|
||||||
* 当前不存在visualMenu的话,则创建item列表节点,若有该属性则执行
|
|
||||||
* @param node
|
|
||||||
* @param link
|
|
||||||
*/
|
|
||||||
textMenu?(node: HTMLDivElement, link: string, config: SelectConfigData): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 清理游戏,核心选项,应该默认是false(undefined)<--该功能不知是否存在
|
|
||||||
*
|
|
||||||
* 若没有nopointer配置(false/undefined),则设置“pointerspan”
|
|
||||||
*
|
|
||||||
* 通“click”,即当前整个node都可以点击<--这个应该才是真实的功能
|
|
||||||
*/
|
|
||||||
clear?: boolean;
|
|
||||||
/** 指定该项没有功能,仅展示,项目内多用于描述上 */
|
|
||||||
nopointer?: boolean;
|
|
||||||
/**
|
|
||||||
* 点击触发事件
|
|
||||||
*
|
|
||||||
* 若有返回值false,则当前点击事件的toggle切换无效
|
|
||||||
*/
|
|
||||||
onclick?(item: any): void | boolean;
|
|
||||||
onclick?(link: any, node: HTMLDivElement): void | boolean;
|
|
||||||
|
|
||||||
/** 当前没有onclick方法时,除了默认game.saveConfig保存数据配置key的数据,可以使用该方法进行数据处理啊 */
|
|
||||||
onsave?(reslut: any): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 输入框
|
|
||||||
*
|
|
||||||
* 其输入框的默认值是当前的init属性
|
|
||||||
*/
|
|
||||||
input?: boolean;
|
|
||||||
/** 取值true,若没有设置可以进行input输入 */
|
|
||||||
fixed?: boolean;
|
|
||||||
/** 设置input节点的onblur事件的回调(焦点离开输出框) */
|
|
||||||
onblur?(): void;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 用于扩展菜单lib.extensionMenu中(目前未见使用)
|
|
||||||
*/
|
|
||||||
onswitch?(bool: boolean): void;
|
|
||||||
|
|
||||||
/** 核心,更新方法 */
|
|
||||||
update?(config: SMap<any>, map: SMap<HTMLDivElement>): any;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在玩法模式选择中:
|
|
||||||
* 是否需要“重启”游戏,若为true,则“启”按钮会高亮(添加“glowing”)
|
|
||||||
* 在选项中:
|
|
||||||
* 每次改变该选项,都会重置当前的ui选项(增加,减少一些功能项)
|
|
||||||
*/
|
|
||||||
restart?: boolean | NoneParmFum<boolean>;
|
|
||||||
/** 应该与unfrequent功能时一致的,相反判断,直接显示出来的功能项 */
|
|
||||||
frequent?: boolean,
|
|
||||||
/** 加入更多中(随着下拉出现),用得较多 */
|
|
||||||
unfrequent?: boolean;
|
|
||||||
/** 不明,用得很少 */
|
|
||||||
content?(bool: boolean): void;
|
|
||||||
|
|
||||||
/** 内部属性,记录当前配置的key */
|
|
||||||
_name?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扩展的包信息
|
|
||||||
* 游戏自带编辑器的代码编辑区域的扩展结构:
|
|
||||||
* (主要是通过系统内部自带编译器编辑的代码,导入逻辑其实基本一致)
|
|
||||||
*/
|
|
||||||
declare interface PackageData {
|
|
||||||
/** 扩展制作作者名 */
|
|
||||||
author?: string,
|
|
||||||
/** 扩展描述 */
|
|
||||||
intro?: string,
|
|
||||||
/** 讨论地址 */
|
|
||||||
diskURL?: string,
|
|
||||||
/** 网盘地址 */
|
|
||||||
forumURL?: string,
|
|
||||||
/** 扩展版本 */
|
|
||||||
version?: string,
|
|
||||||
|
|
||||||
/** 武将导入信息 */
|
|
||||||
character?: {
|
|
||||||
character: SMap<Character>;
|
|
||||||
translate: SMap<string>;
|
|
||||||
};
|
|
||||||
/** 卡牌导入信息 */
|
|
||||||
card?: {
|
|
||||||
card: SMap<Card>;
|
|
||||||
translate: SMap<string>;
|
|
||||||
list: CardBaseUIData[];
|
|
||||||
};
|
|
||||||
/** 技能导入信息 */
|
|
||||||
skill?: {
|
|
||||||
skill: SMap<Skill>;
|
|
||||||
translate: SMap<string>;
|
|
||||||
};
|
|
||||||
|
|
||||||
/** 相关文件名(扩展所使用的一些图片) */
|
|
||||||
files?: {
|
|
||||||
character: string[];
|
|
||||||
card: string[];
|
|
||||||
skill: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 主代码中,pack.code包括以下属性: */
|
|
||||||
code?: {
|
|
||||||
/** 扩展的config配置信息 */
|
|
||||||
config?: SMap<SelectConfigData>;
|
|
||||||
/** 扩展主代码 */
|
|
||||||
content?: (config: SMap<any>, pack: PackageData) => void;
|
|
||||||
/** 扩展帮助信息 */
|
|
||||||
help?: SMap<string>;
|
|
||||||
/** 扩展启动代码 */
|
|
||||||
precontent?: (data?: SMap<any>) => void;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
//一些附加到window的对象的提示
|
|
||||||
declare interface Window {
|
|
||||||
/** 初始界面的暂时配置? */
|
|
||||||
tempSetNoname?: string;
|
|
||||||
/** 游戏更新信息配置 */
|
|
||||||
noname_update?: {
|
|
||||||
version: string,
|
|
||||||
update: string,
|
|
||||||
changeLog: string[],
|
|
||||||
files: string[],
|
|
||||||
players?: string[],
|
|
||||||
cards?: string[],
|
|
||||||
}
|
|
||||||
|
|
||||||
/** 游戏配置 */
|
|
||||||
config: SMap<any>,
|
|
||||||
|
|
||||||
/** 游戏源列表(预加载资源列表,待验证) */
|
|
||||||
noname_source_list?: string[],
|
|
||||||
|
|
||||||
/** 游戏懒加载资源列表(外部扩展资源列表,待验证) */
|
|
||||||
noname_asset_list?: string[],
|
|
||||||
|
|
||||||
/** 默认皮肤列表 */
|
|
||||||
noname_skin_list?: SMap<number>;
|
|
||||||
|
|
||||||
/** codeMirror,一个代码编辑器库 */
|
|
||||||
CodeMirror: CodeMirror;
|
|
||||||
|
|
||||||
resetGameTimeout: number;
|
|
||||||
|
|
||||||
cordovaLoadTimeout: number;
|
|
||||||
|
|
||||||
/** window.onerror的参数列表 */
|
|
||||||
ea?: any[];
|
|
||||||
/** 错误信息 */
|
|
||||||
em?: string | Event;
|
|
||||||
/** 错误行号 */
|
|
||||||
el?: number;
|
|
||||||
/** 错误列号 */
|
|
||||||
ec?: number;
|
|
||||||
/** 错误对象 */
|
|
||||||
eo?: Error;
|
|
||||||
|
|
||||||
game: Game;
|
|
||||||
lib: Library;
|
|
||||||
_status: Status;
|
|
||||||
ui: UI;
|
|
||||||
get: Get;
|
|
||||||
ai: AI;
|
|
||||||
|
|
||||||
saveNonameInput?: Function;
|
|
||||||
/** 是否处于启动页 */
|
|
||||||
inSplash: boolean;
|
|
||||||
/** 游戏是否正常启动? */
|
|
||||||
resetExtension: Function;
|
|
||||||
|
|
||||||
/** 【应用配置扩展】从该路径获取无名杀的变量信息 */
|
|
||||||
newExtApiUrl: string;
|
|
||||||
/** 【应用配置扩展】全局变量获取无名杀的变量 */
|
|
||||||
newExtensionApi: {
|
|
||||||
game: Game;
|
|
||||||
lib: Library;
|
|
||||||
_status: Status;
|
|
||||||
ui: UI;
|
|
||||||
get: Get;
|
|
||||||
ai: AI;
|
|
||||||
}
|
|
||||||
/** 为其他自定义平台提供文件读写函数赋值的一种方式 */
|
|
||||||
initReadWriteFunction?(game: Game): Promise<void>;
|
|
||||||
|
|
||||||
bannedKeyWords: string[];
|
|
||||||
}
|
|
|
@ -1,4 +1,3 @@
|
||||||
// @ts-nocheck
|
|
||||||
import { Get as get } from '../get/index.js';
|
import { Get as get } from '../get/index.js';
|
||||||
import { Library as lib } from '../library/index.js';
|
import { Library as lib } from '../library/index.js';
|
||||||
import { Game as game } from '../game/index.js';
|
import { Game as game } from '../game/index.js';
|
||||||
|
@ -7,15 +6,25 @@ import { UI as ui } from '../ui/index.js';
|
||||||
|
|
||||||
// 废弃覆盖原型的HTMLDivElement.prototype.animate
|
// 废弃覆盖原型的HTMLDivElement.prototype.animate
|
||||||
// 改为HTMLDivElement.prototype.addTempClass
|
// 改为HTMLDivElement.prototype.addTempClass
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['animate'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.animate = function (keyframes, options) {
|
HTMLDivElement.prototype.animate = function (keyframes, options) {
|
||||||
if (typeof keyframes == 'string') {
|
if (typeof keyframes == 'string') {
|
||||||
console.trace(this, '无名杀开发者修改的animate方法已废弃,请改为使用addTempClass方法');
|
console.trace(this, '无名杀开发者修改的animate方法已废弃,请改为使用addTempClass方法');
|
||||||
|
// @ts-ignore
|
||||||
return HTMLDivElement.prototype.addTempClass.call(this, keyframes, options);
|
return HTMLDivElement.prototype.addTempClass.call(this, keyframes, options);
|
||||||
}
|
}
|
||||||
else return HTMLElement.prototype.animate.call(this, keyframes, options);
|
else return HTMLElement.prototype.animate.call(this, keyframes, options);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['addTempClass'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.addTempClass = function (name, time = 1000) {
|
HTMLDivElement.prototype.addTempClass = function (name, time = 1000) {
|
||||||
|
// @ts-ignore
|
||||||
let that = get.is.mobileMe(this) && name == 'target' ? ui.mebg : this;
|
let that = get.is.mobileMe(this) && name == 'target' ? ui.mebg : this;
|
||||||
that.classList.add(name);
|
that.classList.add(name);
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -23,23 +32,43 @@ HTMLDivElement.prototype.addTempClass = function (name, time = 1000) {
|
||||||
}, time);
|
}, time);
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['hide'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.hide = function () {
|
HTMLDivElement.prototype.hide = function () {
|
||||||
this.classList.add('hidden');
|
this.classList.add('hidden');
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['unfocus'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.unfocus = function () {
|
HTMLDivElement.prototype.unfocus = function () {
|
||||||
if (lib.config.transparent_dialog) this.classList.add('transparent');
|
if (lib.config.transparent_dialog) this.classList.add('transparent');
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['refocus'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.refocus = function () {
|
HTMLDivElement.prototype.refocus = function () {
|
||||||
this.classList.remove('transparent');
|
this.classList.remove('transparent');
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['show'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.show = function () {
|
HTMLDivElement.prototype.show = function () {
|
||||||
this.classList.remove('hidden');
|
this.classList.remove('hidden');
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
HTMLDivElement.prototype.delete = function (time, callback) {
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['delete'] }
|
||||||
|
*/
|
||||||
|
HTMLDivElement.prototype.delete = function (time = 500, callback) {
|
||||||
if (this.timeout) {
|
if (this.timeout) {
|
||||||
clearTimeout(this.timeout);
|
clearTimeout(this.timeout);
|
||||||
delete this.timeout;
|
delete this.timeout;
|
||||||
|
@ -47,13 +76,11 @@ HTMLDivElement.prototype.delete = function (time, callback) {
|
||||||
if (!this._listeningEnd || this._transitionEnded) {
|
if (!this._listeningEnd || this._transitionEnded) {
|
||||||
if (typeof time != 'number') time = 500;
|
if (typeof time != 'number') time = 500;
|
||||||
this.classList.add('removing');
|
this.classList.add('removing');
|
||||||
var that = this;
|
// @ts-ignore
|
||||||
this.timeout = setTimeout(function () {
|
this.timeout = setTimeout(() => {
|
||||||
that.remove();
|
this.remove();
|
||||||
that.classList.remove('removing');
|
this.classList.remove('removing');
|
||||||
if (typeof callback == 'function') {
|
if (typeof callback == 'function') callback();
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}, time);
|
}, time);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -61,6 +88,10 @@ HTMLDivElement.prototype.delete = function (time, callback) {
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['goto'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.goto = function (position, time) {
|
HTMLDivElement.prototype.goto = function (position, time) {
|
||||||
if (this.timeout) {
|
if (this.timeout) {
|
||||||
clearTimeout(this.timeout);
|
clearTimeout(this.timeout);
|
||||||
|
@ -69,18 +100,21 @@ HTMLDivElement.prototype.goto = function (position, time) {
|
||||||
|
|
||||||
if (typeof time != 'number') time = 500;
|
if (typeof time != 'number') time = 500;
|
||||||
this.classList.add('removing');
|
this.classList.add('removing');
|
||||||
|
// @ts-ignore
|
||||||
var that = this;
|
this.timeout = setTimeout(() => {
|
||||||
this.timeout = setTimeout(function () {
|
if (!this._selfDestroyed) {
|
||||||
if (!that._selfDestroyed) {
|
position.appendChild(this);
|
||||||
position.appendChild(that);
|
|
||||||
}
|
}
|
||||||
that.classList.remove('removing');
|
this.classList.remove('removing');
|
||||||
delete that.destiny;
|
delete this.destiny;
|
||||||
}, time);
|
}, time);
|
||||||
this.destiny = position;
|
this.destiny = position;
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['fix'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.fix = function () {
|
HTMLDivElement.prototype.fix = function () {
|
||||||
clearTimeout(this.timeout);
|
clearTimeout(this.timeout);
|
||||||
delete this.timeout;
|
delete this.timeout;
|
||||||
|
@ -92,8 +126,12 @@ Reflect.defineProperty(HTMLDivElement.prototype, 'setBackground', {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['setBackground'] }
|
||||||
|
*/
|
||||||
value: function (name, type, ext, subfolder) {
|
value: function (name, type, ext, subfolder) {
|
||||||
if (!name) return;
|
if (!name) return this;
|
||||||
let src;
|
let src;
|
||||||
if (ext == 'noskin') ext = '.jpg';
|
if (ext == 'noskin') ext = '.jpg';
|
||||||
ext = ext || '.jpg';
|
ext = ext || '.jpg';
|
||||||
|
@ -114,6 +152,7 @@ Reflect.defineProperty(HTMLDivElement.prototype, 'setBackground', {
|
||||||
else modeimage = mode;
|
else modeimage = mode;
|
||||||
}
|
}
|
||||||
else if (name.includes('::')) {
|
else if (name.includes('::')) {
|
||||||
|
// @ts-ignore
|
||||||
name = name.split('::');
|
name = name.split('::');
|
||||||
modeimage = name[0];
|
modeimage = name[0];
|
||||||
name = name[1];
|
name = name[1];
|
||||||
|
@ -153,21 +192,26 @@ Reflect.defineProperty(HTMLDivElement.prototype, 'setBackground', {
|
||||||
else src = `image/${type}/${subfolder}/${name}${ext}`;
|
else src = `image/${type}/${subfolder}/${name}${ext}`;
|
||||||
}
|
}
|
||||||
else src = `image/${name}${ext}`;
|
else src = `image/${name}${ext}`;
|
||||||
this.setBackgroundImage(src);
|
|
||||||
this.style.backgroundPositionX = 'center';
|
this.style.backgroundPositionX = 'center';
|
||||||
this.style.backgroundSize = 'cover';
|
this.style.backgroundSize = 'cover';
|
||||||
if (type === 'character') {
|
if (type === 'character') {
|
||||||
const nameinfo = get.character(name);
|
const nameinfo = get.character(name);
|
||||||
const sex = nameinfo ? nameinfo[0] : 'male';
|
const sex = nameinfo ? nameinfo[0] : 'male';
|
||||||
this.style.backgroundImage = [
|
this.setBackgroundImage([
|
||||||
this.style.backgroundImage,
|
src,
|
||||||
`url("${lib.assetURL}${lib.characterDefaultPicturePath}${sex}${ext}")`,
|
`${lib.characterDefaultPicturePath}${sex}${ext}`,
|
||||||
`url("${lib.assetURL}${lib.characterDefaultPicturePath}male${ext}")`,
|
`${lib.characterDefaultPicturePath}male${ext}`
|
||||||
].join(",");
|
]);
|
||||||
|
} else {
|
||||||
|
this.setBackgroundImage(src);
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['setBackgroundDB'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.setBackgroundDB = function (img) {
|
HTMLDivElement.prototype.setBackgroundDB = function (img) {
|
||||||
return game.getDB('image', img).then(src => {
|
return game.getDB('image', img).then(src => {
|
||||||
this.style.backgroundImage = `url('${src}')`;
|
this.style.backgroundImage = `url('${src}')`;
|
||||||
|
@ -175,18 +219,33 @@ HTMLDivElement.prototype.setBackgroundDB = function (img) {
|
||||||
return this;
|
return this;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['setBackgroundImage'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.setBackgroundImage = function (img) {
|
HTMLDivElement.prototype.setBackgroundImage = function (img) {
|
||||||
|
if (Array.isArray(img)) {
|
||||||
|
this.style.backgroundImage = img.unique().map(v => `url("${lib.assetURL}${v}")`).join(",");
|
||||||
|
}
|
||||||
|
else {
|
||||||
this.style.backgroundImage = `url("${lib.assetURL}${img}")`;
|
this.style.backgroundImage = `url("${lib.assetURL}${img}")`;
|
||||||
|
}
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['listen'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.listen = function (func) {
|
HTMLDivElement.prototype.listen = function (func) {
|
||||||
if (lib.config.touchscreen) {
|
if (lib.config.touchscreen) {
|
||||||
this.addEventListener('touchend', function (e) {
|
this.addEventListener('touchend', function (e) {
|
||||||
if (!_status.dragged) {
|
if (!_status.dragged) func.call(this, e);
|
||||||
func.call(this, e);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
var fallback = function (e) {
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @param { MouseEvent } e
|
||||||
|
*/
|
||||||
|
const fallback = function (e) {
|
||||||
if (!_status.touchconfirmed) {
|
if (!_status.touchconfirmed) {
|
||||||
func.call(this, e);
|
func.call(this, e);
|
||||||
}
|
}
|
||||||
|
@ -201,6 +260,10 @@ HTMLDivElement.prototype.listen = function (func) {
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['listenTransition'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.listenTransition = function (func, time) {
|
HTMLDivElement.prototype.listenTransition = function (func, time) {
|
||||||
let done = false;
|
let done = false;
|
||||||
const callback = () => {
|
const callback = () => {
|
||||||
|
@ -213,8 +276,13 @@ HTMLDivElement.prototype.listenTransition = function (func, time) {
|
||||||
};
|
};
|
||||||
const timer = setTimeout(callback, time || 1000);
|
const timer = setTimeout(callback, time || 1000);
|
||||||
this.addEventListener('webkitTransitionEnd', callback);
|
this.addEventListener('webkitTransitionEnd', callback);
|
||||||
|
// @ts-ignore
|
||||||
return timer;
|
return timer;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['setPosition'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.setPosition = function () {
|
HTMLDivElement.prototype.setPosition = function () {
|
||||||
var position;
|
var position;
|
||||||
if (arguments.length == 4) {
|
if (arguments.length == 4) {
|
||||||
|
@ -237,10 +305,14 @@ HTMLDivElement.prototype.setPosition = function () {
|
||||||
this.style.left = left;
|
this.style.left = left;
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLDivElement
|
||||||
|
* @type { typeof HTMLDivElement['prototype']['css'] }
|
||||||
|
*/
|
||||||
HTMLDivElement.prototype.css = function (style) {
|
HTMLDivElement.prototype.css = function (style) {
|
||||||
for (var i in style) {
|
for (var i in style) {
|
||||||
if (i == 'innerHTML') {
|
if (i == 'innerHTML' && typeof style['innerHTML'] == 'string') {
|
||||||
this.innerHTML = style[i];
|
this.innerHTML = style['innerHTML'];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this.style[i] = style[i];
|
this.style[i] = style[i];
|
||||||
|
@ -248,12 +320,21 @@ HTMLDivElement.prototype.css = function (style) {
|
||||||
}
|
}
|
||||||
return this;
|
return this;
|
||||||
};
|
};
|
||||||
|
/**
|
||||||
|
* @this HTMLTableElement
|
||||||
|
* @type { typeof HTMLTableElement['prototype']['get'] }
|
||||||
|
*/
|
||||||
HTMLTableElement.prototype.get = function (row, col) {
|
HTMLTableElement.prototype.get = function (row, col) {
|
||||||
if (row < this.childNodes.length) {
|
if (row < this.childNodes.length) {
|
||||||
|
// @ts-ignore
|
||||||
return this.childNodes[row].childNodes[col];
|
return this.childNodes[row].childNodes[col];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
/*处理lib.nature等从array改为map的兼容性问题*/
|
/*处理lib.nature等从array改为map的兼容性问题*/
|
||||||
|
/**
|
||||||
|
* @this Map<any, any>
|
||||||
|
* @type { typeof Map['prototype']['contains'] }
|
||||||
|
*/
|
||||||
const mapHasFunc = function (item) {
|
const mapHasFunc = function (item) {
|
||||||
console.trace(this, '已经从array改为map,请改为使用has方法');
|
console.trace(this, '已经从array改为map,请改为使用has方法');
|
||||||
return this.has(item);
|
return this.has(item);
|
||||||
|
@ -270,6 +351,10 @@ Object.defineProperty(Map.prototype, "includes", {
|
||||||
writable: true,
|
writable: true,
|
||||||
value: mapHasFunc
|
value: mapHasFunc
|
||||||
});
|
});
|
||||||
|
/**
|
||||||
|
* @this Map<any, any>
|
||||||
|
* @type { typeof Map['prototype']['add'] }
|
||||||
|
*/
|
||||||
const mapAddFunc = function (item) {
|
const mapAddFunc = function (item) {
|
||||||
console.trace(this, '已经从array改为map,请改为使用set方法');
|
console.trace(this, '已经从array改为map,请改为使用set方法');
|
||||||
this.set(item, 0);
|
this.set(item, 0);
|
||||||
|
@ -291,6 +376,10 @@ Object.defineProperty(Map.prototype, "addArray", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this Map<any, any>
|
||||||
|
* @type { typeof Map['prototype']['addArray'] }
|
||||||
|
*/
|
||||||
value: function (arr) {
|
value: function (arr) {
|
||||||
for (let i = 0; i < arr.length; i++) {
|
for (let i = 0; i < arr.length; i++) {
|
||||||
this.add(arr[i]);
|
this.add(arr[i]);
|
||||||
|
@ -302,6 +391,10 @@ Object.defineProperty(Map.prototype, "remove", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this Map<any, any>
|
||||||
|
* @type { typeof Map['prototype']['remove'] }
|
||||||
|
*/
|
||||||
value: function (item) {
|
value: function (item) {
|
||||||
console.trace(this, '已经从array改为map,请改为使用delete方法');
|
console.trace(this, '已经从array改为map,请改为使用delete方法');
|
||||||
this.delete(item);
|
this.delete(item);
|
||||||
|
@ -313,8 +406,13 @@ Object.defineProperty(Array.prototype, "filterInD", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
value: function (pos) {
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['filterInD'] }
|
||||||
|
*/
|
||||||
|
value: function (pos = 'o') {
|
||||||
if (typeof pos != 'string') pos = 'o';
|
if (typeof pos != 'string') pos = 'o';
|
||||||
|
// @ts-ignore
|
||||||
return this.filter(card => pos.includes(get.position(card, true)));
|
return this.filter(card => pos.includes(get.position(card, true)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -322,8 +420,13 @@ Object.defineProperty(Array.prototype, "someInD", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
value: function (pos) {
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['someInD'] }
|
||||||
|
*/
|
||||||
|
value: function (pos = 'o') {
|
||||||
if (typeof pos != 'string') pos = 'o';
|
if (typeof pos != 'string') pos = 'o';
|
||||||
|
// @ts-ignore
|
||||||
return this.some(card => pos.includes(get.position(card, true)));
|
return this.some(card => pos.includes(get.position(card, true)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -331,8 +434,13 @@ Object.defineProperty(Array.prototype, "everyInD", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
value: function (pos) {
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['everyInD'] }
|
||||||
|
*/
|
||||||
|
value: function (pos = 'o') {
|
||||||
if (typeof pos != 'string') pos = 'o';
|
if (typeof pos != 'string') pos = 'o';
|
||||||
|
// @ts-ignore
|
||||||
return this.every(card => pos.includes(get.position(card, true)));
|
return this.every(card => pos.includes(get.position(card, true)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -343,6 +451,10 @@ Object.defineProperty(Array.prototype, "contains", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['contains'] }
|
||||||
|
*/
|
||||||
value: function (...args) {
|
value: function (...args) {
|
||||||
console.warn(this, 'Array的contains方法已废弃,请使用includes方法');
|
console.warn(this, 'Array的contains方法已废弃,请使用includes方法');
|
||||||
return this.includes(...args);
|
return this.includes(...args);
|
||||||
|
@ -352,6 +464,10 @@ Object.defineProperty(Array.prototype, "containsSome", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['containsSome'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
return Array.from(arguments).some(i => this.includes(i));
|
return Array.from(arguments).some(i => this.includes(i));
|
||||||
}
|
}
|
||||||
|
@ -360,6 +476,10 @@ Object.defineProperty(Array.prototype, "containsAll", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['containsAll'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
return Array.from(arguments).every(i => this.includes(i));
|
return Array.from(arguments).every(i => this.includes(i));
|
||||||
}
|
}
|
||||||
|
@ -369,6 +489,10 @@ Object.defineProperty(Array.prototype, "add", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['add'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
for (const arg of arguments) {
|
for (const arg of arguments) {
|
||||||
if (this.includes(arg)) continue;
|
if (this.includes(arg)) continue;
|
||||||
|
@ -381,6 +505,10 @@ Object.defineProperty(Array.prototype, "addArray", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['addArray'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
for (const arr of arguments) {
|
for (const arr of arguments) {
|
||||||
for (const item of arr) this.add(item);
|
for (const item of arr) this.add(item);
|
||||||
|
@ -392,6 +520,10 @@ Object.defineProperty(Array.prototype, "remove", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['remove'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
for (const item of arguments) {
|
for (const item of arguments) {
|
||||||
let pos = -1;
|
let pos = -1;
|
||||||
|
@ -410,7 +542,12 @@ Object.defineProperty(Array.prototype, "removeArray", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['removeArray'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
|
// @ts-ignore
|
||||||
for (const i of Array.from(arguments)) this.remove(...i);
|
for (const i of Array.from(arguments)) this.remove(...i);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -419,6 +556,10 @@ Object.defineProperty(Array.prototype, "unique", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['unique'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
let uniqueArray = [...new Set(this)];
|
let uniqueArray = [...new Set(this)];
|
||||||
this.length = uniqueArray.length;
|
this.length = uniqueArray.length;
|
||||||
|
@ -430,6 +571,10 @@ Object.defineProperty(Array.prototype, "toUniqued", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['toUniqued'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
return [...new Set(this)];
|
return [...new Set(this)];
|
||||||
}
|
}
|
||||||
|
@ -438,6 +583,10 @@ Object.defineProperty(Array.prototype, "randomGet", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['randomGet'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
let arr = this.slice(0);
|
let arr = this.slice(0);
|
||||||
arr.removeArray(Array.from(arguments));
|
arr.removeArray(Array.from(arguments));
|
||||||
|
@ -448,7 +597,11 @@ Object.defineProperty(Array.prototype, "randomGets", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
value: function (num) {
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['randomGets'] }
|
||||||
|
*/
|
||||||
|
value: function (num = 0) {
|
||||||
if (num > this.length) num = this.length;
|
if (num > this.length) num = this.length;
|
||||||
let arr = this.slice(0);
|
let arr = this.slice(0);
|
||||||
let list = [];
|
let list = [];
|
||||||
|
@ -462,6 +615,10 @@ Object.defineProperty(Array.prototype, "randomRemove", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['randomRemove'] }
|
||||||
|
*/
|
||||||
value: function (num) {
|
value: function (num) {
|
||||||
if (typeof num == 'number') {
|
if (typeof num == 'number') {
|
||||||
let list = [];
|
let list = [];
|
||||||
|
@ -478,6 +635,10 @@ Object.defineProperty(Array.prototype, "randomSort", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['randomSort'] }
|
||||||
|
*/
|
||||||
value: function () {
|
value: function () {
|
||||||
let list = [];
|
let list = [];
|
||||||
while (this.length) {
|
while (this.length) {
|
||||||
|
@ -493,6 +654,10 @@ Object.defineProperty(Array.prototype, "sortBySeat", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['sortBySeat'] }
|
||||||
|
*/
|
||||||
value: function (target) {
|
value: function (target) {
|
||||||
lib.tempSortSeat = target;
|
lib.tempSortSeat = target;
|
||||||
this.sort(lib.sort.seat);
|
this.sort(lib.sort.seat);
|
||||||
|
@ -507,6 +672,10 @@ Object.defineProperty(Array.prototype, "maxBy", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['maxBy'] }
|
||||||
|
*/
|
||||||
value: function (sortBy, filter) {
|
value: function (sortBy, filter) {
|
||||||
let list = this.filter(filter || (() => true));
|
let list = this.filter(filter || (() => true));
|
||||||
if (sortBy && typeof sortBy == 'function') list.sort((a, b) => sortBy(a) - sortBy(b));
|
if (sortBy && typeof sortBy == 'function') list.sort((a, b) => sortBy(a) - sortBy(b));
|
||||||
|
@ -518,6 +687,10 @@ Object.defineProperty(Array.prototype, "minBy", {
|
||||||
configurable: true,
|
configurable: true,
|
||||||
enumerable: false,
|
enumerable: false,
|
||||||
writable: true,
|
writable: true,
|
||||||
|
/**
|
||||||
|
* @this any[]
|
||||||
|
* @type { typeof Array['prototype']['minBy'] }
|
||||||
|
*/
|
||||||
value: function (sortBy, filter) {
|
value: function (sortBy, filter) {
|
||||||
let list = this.filter(filter || (() => true));
|
let list = this.filter(filter || (() => true));
|
||||||
if (sortBy && typeof sortBy == 'function') list.sort((a, b) => sortBy(a) - sortBy(b));
|
if (sortBy && typeof sortBy == 'function') list.sort((a, b) => sortBy(a) - sortBy(b));
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -41,6 +41,14 @@ export const status = {
|
||||||
* @type { string | void }
|
* @type { string | void }
|
||||||
*/
|
*/
|
||||||
extension: undefined,
|
extension: undefined,
|
||||||
|
/**
|
||||||
|
* @type { boolean | void }
|
||||||
|
*/
|
||||||
|
dragged: undefined,
|
||||||
|
/**
|
||||||
|
* @type { boolean | void }
|
||||||
|
*/
|
||||||
|
touchconfirmed: undefined,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const _status = status;
|
export const _status = status;
|
|
@ -107,6 +107,10 @@ export class UI extends Uninstantable {
|
||||||
* @type { ((packName: string) => void)[] }
|
* @type { ((packName: string) => void)[] }
|
||||||
*/
|
*/
|
||||||
static updateCardPackMenu = [];
|
static updateCardPackMenu = [];
|
||||||
|
/**
|
||||||
|
* @type { HTMLDivElement } 挑战模式下正在操作的角色
|
||||||
|
*/
|
||||||
|
static mebg;
|
||||||
static refresh(node) {
|
static refresh(node) {
|
||||||
void window.getComputedStyle(node, null).getPropertyValue("opacity");
|
void window.getComputedStyle(node, null).getPropertyValue("opacity");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"include": ["noname"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
/* Visit https://aka.ms/tsconfig.json to read more about this file */
|
||||||
/* Projects */
|
/* Projects */
|
||||||
|
@ -33,9 +34,8 @@
|
||||||
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
||||||
"typeRoots": [
|
"typeRoots": [
|
||||||
"./node_modules/@types",
|
"./node_modules/@types",
|
||||||
"./node_modules/noname-typings/index.d.ts",
|
"./extension/**",
|
||||||
"./extension/**/*.d.ts",
|
"./extension/**/typings"
|
||||||
"./extension/**/typings/*.d.ts"
|
|
||||||
], /* Specify multiple folders that act like `./node_modules/@types`. */
|
], /* Specify multiple folders that act like `./node_modules/@types`. */
|
||||||
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
// "types": [], /* Specify type package names to be included without being referenced in a source file. */
|
||||||
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
||||||
|
@ -43,17 +43,17 @@
|
||||||
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
// "noResolve": true, /* Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project. */
|
||||||
/* JavaScript Support */
|
/* JavaScript Support */
|
||||||
"allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
"allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */
|
||||||
// "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
"checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
|
||||||
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
// "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */
|
||||||
/* Emit */
|
/* Emit */
|
||||||
// "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
"declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
|
||||||
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
// "declarationMap": true, /* Create sourcemaps for d.ts files. */
|
||||||
// "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
"emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
|
||||||
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
// "sourceMap": true, /* Create source map files for emitted JavaScript files. */
|
||||||
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
// "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */
|
||||||
// "outDir": "./", /* Specify an output folder for all emitted files. */
|
"outDir": "./node_modules/@types/noname-typings/nonameModules", /* Specify an output folder for all emitted files. */
|
||||||
// "removeComments": true, /* Disable emitting comments. */
|
// "removeComments": true, /* Disable emitting comments. */
|
||||||
"noEmit": true, /* Disable emitting files from a compilation. */
|
// "noEmit": true, /* Disable emitting files from a compilation. */
|
||||||
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
// "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
|
||||||
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
|
// "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */
|
||||||
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
// "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
|
||||||
|
@ -65,9 +65,9 @@
|
||||||
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
// "newLine": "crlf", /* Set the newline character for emitting files. */
|
||||||
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
|
// "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */
|
||||||
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
|
// "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */
|
||||||
// "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
|
"noEmitOnError": false, /* Disable emitting files if any type checking errors are reported. */
|
||||||
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
|
// "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */
|
||||||
// "declarationDir": "./", /* Specify the output directory for generated declaration files. */
|
"declarationDir": "./node_modules/@types/noname-typings/nonameModules", /* Specify the output directory for generated declaration files. */
|
||||||
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
|
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
|
||||||
/* Interop Constraints */
|
/* Interop Constraints */
|
||||||
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
// "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
|
||||||
|
@ -97,6 +97,8 @@
|
||||||
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
// "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
|
||||||
/* Completeness */
|
/* Completeness */
|
||||||
"skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
"skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
|
||||||
// "skipLibCheck": true /* Skip type checking all .d.ts files. */
|
"skipLibCheck": true, /* Skip type checking all .d.ts files. */
|
||||||
|
"ignoreDeprecations": "5.0",
|
||||||
|
"suppressImplicitAnyIndexErrors": true
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue