assemblyscript-dice/assembly/game_handler.ts

29 lines
1.1 KiB
TypeScript
Raw Normal View History

2019-03-15 18:30:31 +03:00
import {Action, decode, GetBalanceRequest, Request, RollRequest, UnknownRequest} from "./request";
import {ErrorResponse} from "./response";
import {GameManager} from "./dice";
let gameManager = new GameManager();
// returns string, because serialization to a byte array is not compatible with our invoke handlers
export function handler(requestBytes: Uint8Array): string {
2019-03-15 16:05:42 +03:00
let request: Request = decode(requestBytes);
2019-03-15 18:30:31 +03:00
if (request.action == Action.Join) {
return gameManager.join();
} else if (request.action == Action.Roll) {
2019-03-15 17:02:29 +03:00
let r = request as RollRequest;
2019-03-15 18:30:31 +03:00
return gameManager.roll(r.playerId, r.betPlacement, r.betSize);
} else if (request.action == Action.GetBalance) {
2019-03-15 17:02:29 +03:00
let r = request as GetBalanceRequest;
2019-03-15 18:30:31 +03:00
return gameManager.getBalance(r.playerId);
} else if (request.action == Action.Unknown) {
2019-03-15 17:02:29 +03:00
let r = request as UnknownRequest;
2019-03-15 18:30:31 +03:00
let error = new ErrorResponse(r.message);
return error.serialize();
}
2019-03-15 16:05:42 +03:00
2019-03-15 19:01:55 +03:00
let response = new ErrorResponse("Unreachable.");
2019-03-15 16:05:42 +03:00
return response.serialize();
}