Skip to content

Instantly share code, notes, and snippets.

@agramonte
Last active December 31, 2020 20:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save agramonte/7183d3cb16e8c5f265b1abab6c2d70c6 to your computer and use it in GitHub Desktop.
Save agramonte/7183d3cb16e8c5f265b1abab6c2d70c6 to your computer and use it in GitHub Desktop.
// Version 3.0: Saving and retrieving a shared table.
// Version 2.1: Added header so that returned table gets encoded correctly.
// Version 2.0: Save and retrieve table
// Version 1.0: Login
// Change these parameters for your game
var returnFalseOnLock = true;
var requestType = Spark.getData().requestType;
var tableData = Spark.getData().params;
Spark.setScriptData("RESPONSE_HEADERS", {"content-type":"text/html; charset=utf-8"});
function playerLogin(userName, password) {
if (userName && password) {
var authenticationResponse = Spark.sendRequest(
{
"@class": ".AuthenticationRequest",
"password": password,
"userName": userName
}
)
if(authenticationResponse.userId) {
Spark.getLog().info(authenticationResponse);
return authenticationResponse.userId;
} else {
Spark.getLog().error(authenticationResponse);
return null;
}
}
}
function saveTable(uId, tableName) {
var gdsAPI = Spark.getGameDataService();
var record = gdsAPI.getItem("tables", uId + tableName);
if (record) {
record = gdsAPI.createItem("tables", uId + tableName);
}
var jsonData = JSON.parse(tableData)
record.setData(jsonData);
record.persistor().persist();
}
function saveSharedTable(tableName) {
var gdsAPI = Spark.getGameDataService();
var record = gdsAPI.getItem("tables", tableName);
if (record) {
record = gdsAPI.createItem("tables", tableName);
}
var jsonData = JSON.parse(tableData)
record.setData(jsonData);
record.persistor().persist();
}
function getTable(uId, tableName) {
var gdsAPI = Spark.getGameDataService();
var record = gdsAPI.getItem("tables", uId + tableName );
var table = record.document().getData();
return table;
}
function getSharedTable(tableName) {
var gdsAPI = Spark.getGameDataService();
var record = gdsAPI.getItem("tables", tableName );
var table = record.document().getData();
return table;
}
if (requestType === "login") {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
if (returnFalseOnLock) {
var isPlayerLocked = Spark.loadPlayer(loginResponse).getScriptData("isLocked");
if (isPlayerLocked) {
Spark.getLog().info("Player locked and tried logging in with username: "+ uName +" password: " + uPwd);
Spark.setScriptData("RESPONSE_RAW", '');
} else {
Spark.loadPlayer(loginResponse).setScriptData("isLocked", true);
Spark.setScriptData("RESPONSE_RAW", '{"Status":"Success"}');
}
} else {
Spark.loadPlayer(loginResponse).setScriptData("isLocked", true);
Spark.setScriptData("RESPONSE_RAW", '{"Status":"Success"}');
}
} else {
Spark.getLog().info("Error logging in with username: "+ uName +" password: " + uPwd);
Spark.setScriptData("RESPONSE_RAW", '');
}
} else if (requestType == "logout" ) {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
Spark.loadPlayer(loginResponse).setScriptData("isLocked", false);
Spark.setScriptData("RESPONSE_RAW", '{"Status":"Success"}');
} else {
Spark.getLog().info("Error logging out with username: "+ uName +" password: " + uPwd);
Spark.setScriptData("RESPONSE_RAW", '');
}
} else if (requestType == "saveSharedTable" ) {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var tableName = Spark.getData().tableName;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
saveSharedTable(tableName);
Spark.setScriptData("RESPONSE_RAW", '{"Status":"Success"}');
} else {
Spark.setScriptData("RESPONSE_RAW", '');
}
} else if (requestType == "saveTable" ) {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var tableName = Spark.getData().tableName;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
saveTable(loginResponse, tableName);
Spark.setScriptData("RESPONSE_RAW", '{"Status":"Success"}');
} else {
Spark.setScriptData("RESPONSE_RAW", '');
}
} else if (requestType == "getSharedTable" ) {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var tableName = Spark.getData().tableName;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
var table = getSharedTable(tableName);
Spark.setScriptData("RESPONSE_RAW", table);
} else {
Spark.getLog().info("Error logging in with username: "+ uName +" password: " + uPwd);
Spark.setScriptData("RESPONSE_RAW", '');
}
} else if (requestType == "getTable" ) {
var uName = Spark.getData().userName;
var uPwd = Spark.getData().userPassword;
var tableName = Spark.getData().tableName;
var loginResponse = playerLogin(uName, uPwd);
if (loginResponse) {
var table = getTable(loginResponse, tableName);
Spark.setScriptData("RESPONSE_RAW", table);
} else {
Spark.getLog().info("Error logging in with username: "+ uName +" password: " + uPwd);
Spark.setScriptData("RESPONSE_RAW", '');
}
} else {
Spark.setScriptData("RESPONSE_RAW", '');
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment