mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-30 18:43:21 +08:00
initial commit of knuddels-userapps-api
This commit is contained in:
2683
knuddels-userapps-api/index.d.ts
vendored
Normal file
2683
knuddels-userapps-api/index.d.ts
vendored
Normal file
File diff suppressed because it is too large
Load Diff
122
knuddels-userapps-api/knuddels-userapps-api-tests.ts
Normal file
122
knuddels-userapps-api/knuddels-userapps-api-tests.ts
Normal file
@@ -0,0 +1,122 @@
|
||||
/// <reference types="knuddels-userapps-api" />
|
||||
|
||||
class Server implements App {
|
||||
|
||||
private usersPlaying: {[nick: string]: number} = {};
|
||||
private isShuttingDown: boolean = false;
|
||||
|
||||
private htmlFile: HTMLFile = new HTMLFile('start.html');
|
||||
private appContent: AppContent = AppContent.overlayContent(this.htmlFile, 243, 266);
|
||||
|
||||
onAppStart() {
|
||||
KnuddelsServer.getChannel().getOnlineUsers(UserType.Human).forEach((user) => {
|
||||
this.onUserJoined(user)
|
||||
});
|
||||
};
|
||||
|
||||
onUserJoined(user: User) {
|
||||
const botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
|
||||
user.sendPrivateMessage('Lust auf ne Runde Ziegenphobie? Mit nur _°BB>_h1 Knuddel|/appknuddel ' + botNick + '<°°°_ bist du dabei!');
|
||||
};
|
||||
|
||||
onUserLeft(user: User) {
|
||||
if (this.usersPlaying[user.getNick()] == 1) {
|
||||
KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Du hast den Channel verlassen.');
|
||||
|
||||
delete this.usersPlaying[user.getNick()];
|
||||
}
|
||||
};
|
||||
|
||||
onPrepareShutdown() {
|
||||
if (!this.isShuttingDown) {
|
||||
this.isShuttingDown = true;
|
||||
|
||||
for (let key in this.usersPlaying) {
|
||||
const userId = KnuddelsServer.getUserAccess().getUserId(key);
|
||||
const user = KnuddelsServer.getUserAccess().getUserById(userId);
|
||||
|
||||
KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(1), 'Die App fährt gleich herunter.');
|
||||
user.getAppContentSessions().forEach((session: AppContentSession) => {
|
||||
session.remove();
|
||||
});
|
||||
|
||||
delete this.usersPlaying[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onBeforeKnuddelReceived(knuddelTransfer: KnuddelTransfer) {
|
||||
const sender = knuddelTransfer.getSender();
|
||||
|
||||
if (!sender.canSendAppContent(this.appContent)) {
|
||||
knuddelTransfer.reject('Sorry, mit diesem Gerät kannst du gerade nicht spielen.');
|
||||
}
|
||||
else if (sender.isChannelOwner() && knuddelTransfer.getKnuddelAmount().asNumber() != 1) {
|
||||
knuddelTransfer.accept();
|
||||
}
|
||||
else if (this.isShuttingDown) {
|
||||
knuddelTransfer.reject('Du App nimmt gerade keine neuen Spieler an.');
|
||||
}
|
||||
else if (this.usersPlaying[sender.getNick()]) {
|
||||
knuddelTransfer.reject('Du spielst bereits.');
|
||||
}
|
||||
else if (knuddelTransfer.getKnuddelAmount().asNumber() != 1) {
|
||||
const botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
|
||||
knuddelTransfer.reject('Du musst genau _°BB>_h1 Knuddel senden|/appknuddel ' + botNick + '<°°°_...');
|
||||
}
|
||||
else {
|
||||
knuddelTransfer.accept();
|
||||
}
|
||||
};
|
||||
|
||||
onKnuddelReceived(user: User, receiver: User, knuddelAmount: KnuddelAmount) {
|
||||
if (knuddelAmount.asNumber() == 1) {
|
||||
this.usersPlaying[user.getNick()] = 1;
|
||||
user.sendAppContent(this.appContent);
|
||||
}
|
||||
else {
|
||||
user.sendPrivateMessage('Vielen Dank für die Einzahlung.');
|
||||
}
|
||||
};
|
||||
|
||||
onEventReceived(user: User, key: string, data: string) {
|
||||
if (key == 'selectedEntry' && this.usersPlaying[user.getNick()] == 1) {
|
||||
this.usersPlaying[user.getNick()] = 2;
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
let doorNumber = parseInt(data[data.length - 1], 10);
|
||||
|
||||
let winningDoorNumber = RandomOperations.nextInt(0, 2) + 1;
|
||||
|
||||
let hasWon = winningDoorNumber == doorNumber;
|
||||
|
||||
let text = hasWon ? 'Richtig getippt' : 'Knapp daneben';
|
||||
|
||||
user.getAppContentSession(AppViewMode.Overlay).getAppContent().sendEvent('openDoor', {
|
||||
'door': doorNumber,
|
||||
'winningDoor': winningDoorNumber,
|
||||
'text': text,
|
||||
});
|
||||
|
||||
if (hasWon) {
|
||||
KnuddelsServer.getDefaultBotUser().transferKnuddel(user, new KnuddelAmount(2), 'Richtig getippt...');
|
||||
}
|
||||
|
||||
setTimeout(() => {
|
||||
const botNick = KnuddelsServer.getDefaultBotUser().getNick().escapeKCode();
|
||||
user.sendPrivateMessage('Na, Lust auf _°BB>_hnoch eine Runde|/appknuddel ' + botNick + '<°°°_?');
|
||||
user.getAppContentSessions().forEach((session: AppContentSession) => {
|
||||
session.remove();
|
||||
});
|
||||
delete this.usersPlaying[user.getNick()];
|
||||
}, 4000);
|
||||
}, 1500);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
declare let App: Server;// tell the compiler that "App" will be available
|
||||
|
||||
App = new Server();
|
||||
17
knuddels-userapps-api/tsconfig.json
Normal file
17
knuddels-userapps-api/tsconfig.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"module": "commonjs",
|
||||
"noImplicitAny": true,
|
||||
"baseUrl": "../",
|
||||
"typeRoots": [
|
||||
"../"
|
||||
],
|
||||
"types": [],
|
||||
"noEmit": true,
|
||||
"forceConsistentCasingInFileNames": true
|
||||
},
|
||||
"files": [
|
||||
"index.d.ts",
|
||||
"knuddels-userapps-api-tests.ts"
|
||||
]
|
||||
}
|
||||
137
knuddels-userapps-api/tslint.json
Normal file
137
knuddels-userapps-api/tslint.json
Normal file
@@ -0,0 +1,137 @@
|
||||
{
|
||||
"extends": ["tslint-react"],
|
||||
"rules": {
|
||||
"align": [
|
||||
true,
|
||||
"statements"
|
||||
],
|
||||
"array-type": [
|
||||
true,
|
||||
"array"
|
||||
],
|
||||
"ban": false,
|
||||
"class-name": true,
|
||||
"comment-format": [
|
||||
true,
|
||||
"check-space"
|
||||
],
|
||||
"curly": true,
|
||||
"eofline": true,
|
||||
"forin": true,
|
||||
"indent": [
|
||||
true,
|
||||
"tabs"
|
||||
],
|
||||
"interface-name": [
|
||||
false,
|
||||
"always-prefix"
|
||||
],
|
||||
"jsdoc-format": true,
|
||||
"jsx-alignment": true,
|
||||
"jsx-ban-props": true,
|
||||
"jsx-curly-spacing": "never",
|
||||
"jsx-no-multiline-js": true,
|
||||
"jsx-no-string-ref": true,
|
||||
"jsx-self-close": true,
|
||||
"jsx-wrap-multiline": true,
|
||||
"label-position": true,
|
||||
"max-line-length": [true, 100],
|
||||
"member-access": false,
|
||||
"member-ordering": [
|
||||
true,
|
||||
"static-before-instance",
|
||||
"variables-before-functions"
|
||||
],
|
||||
"no-any": false,
|
||||
"no-arg": true,
|
||||
"no-bitwise": false,
|
||||
"no-conditional-assignment": false,
|
||||
"no-consecutive-blank-lines": true,
|
||||
"no-console": [
|
||||
true,
|
||||
"debug",
|
||||
"info",
|
||||
"time",
|
||||
"timeEnd",
|
||||
"trace"
|
||||
],
|
||||
"no-construct": true,
|
||||
"no-debugger": true,
|
||||
"no-duplicate-variable": true,
|
||||
"no-empty": false,
|
||||
"no-eval": true,
|
||||
"no-inferrable-types": true,
|
||||
"no-internal-module": true,
|
||||
"no-null-keyword": false,
|
||||
"no-require-imports": false,
|
||||
"no-shadowed-variable": false,
|
||||
"no-string-literal": true,
|
||||
"no-switch-case-fall-through": false,
|
||||
"no-trailing-whitespace": true,
|
||||
"no-unused-expression": true,
|
||||
"no-use-before-declare": true,
|
||||
"no-var-keyword": true,
|
||||
"no-var-requires": false,
|
||||
"object-literal-key-quotes": [true, "consistent"],
|
||||
"object-literal-sort-keys": false,
|
||||
"one-line": [
|
||||
true,
|
||||
"check-open-brace",
|
||||
"check-catch",
|
||||
"check-else",
|
||||
"check-whitespace"
|
||||
],
|
||||
"ordered-imports": false,
|
||||
"quotemark": [
|
||||
true,
|
||||
"single",
|
||||
"jsx-double",
|
||||
"avoid-escape"
|
||||
],
|
||||
"radix": true,
|
||||
"semicolon": [true, "always"],
|
||||
"switch-default": true,
|
||||
"trailing-comma": false,
|
||||
"triple-equals": [
|
||||
true,
|
||||
"allow-null-check"
|
||||
],
|
||||
"typedef": [
|
||||
true,
|
||||
"call-signature",
|
||||
"arrow-call-signature",
|
||||
"property-declaration"
|
||||
],
|
||||
"typedef-whitespace": [
|
||||
true,
|
||||
{
|
||||
"call-signature": "nospace",
|
||||
"index-signature": "nospace",
|
||||
"parameter": "nospace",
|
||||
"property-declaration": "nospace",
|
||||
"variable-declaration": "nospace"
|
||||
},
|
||||
{
|
||||
"call-signature": "onespace",
|
||||
"index-signature": "onespace",
|
||||
"parameter": "onespace",
|
||||
"property-declaration": "onespace",
|
||||
"variable-declaration": "onespace"
|
||||
}
|
||||
],
|
||||
"variable-name": [
|
||||
true,
|
||||
"check-format",
|
||||
"allow-pascal-case",
|
||||
"ban-keywords"
|
||||
],
|
||||
"whitespace": [
|
||||
true,
|
||||
"check-branch",
|
||||
"check-decl",
|
||||
"check-operator",
|
||||
"check-separator",
|
||||
"check-type"
|
||||
]
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user