Gamecenter plugin
This plugins allows you to access apple gamecenter
Platforms:
iOS, tvOS, macOSLimitations:
tvOS does not support getting friends and also leaderboard.show will show achievements(I recommend making your own interface).Functions:
gc.init(listener)
handles sign in and connection status
- type(string)--"login"
- status(string)-- "signed in", "could not login", "showing login", or "could not access gamecenter"
- type(string)--"error"
- status(string)-- "error" or "other error"
- error(string)-- "feature not available", "unable to access gamecenter", "unknown error", "internet not available", or if "other error" you will get a description of error
gc.isAvailable() -- returns(boolean) true is gamecenter is available and false if not available
Nodes:
- gc.leaderboards.show("leaderboardId") --returns "showing"
- leaderboardId (string)(optional) If this is nil or blank, it will show all leaderboards. If it is a string, it will show that leaderboard based on the id
- gc.leaderboards.loadScores("leaderboardId", listener,{params}) --returns "showing"
- leaderboardId (string) the id of leaderboard that you want to get scores from
- listener (function)
- status(string)-- can be "success" or "error"
- error(string)-- explains the error
- scores(array) each array contains table:
- date(string)-- returns date of score ("HH:mm yyyy/MMM/d")(timezone GMT)
- leaderboardIdentifier(string)-- leaderboardId of the leaderboard requested
- rank(integer)-- how high the person is ranked on the the leaderboard
- playerId(string)-- id of player who got the score
- value(integer)-- the actual score
- playerAlias(string)--username of player
- formattedValue(string)--A player’s score as a localized string. You determine how your scores are formatted when you define the leaderboard on iTunes Connect.
- params (table)(optional)
- insert these values in table:
- timeScope(string)-- possible values are "today", "week", or "all"(all is default)
- playerScope(string)-- possible values are "friends" or "global"(global is default)
- rangeMin(integer)-- the starting number to start getting scores from a leaderboard(requires rangeMax and only can get up to 100 values)
- rangeMax(integer)-- the ending number to stop getting scores from a leaderboard(requires rangeMin and only can get up to 100 values)
- rangeMax(integer)-- the ending number to stop getting scores from a leaderboard(requires rangeMin and only can get up to 100 values)
- gc.leaderboards.loadScore("leaderboardId", listener) --returns (integer) your score from a leaderboard
- leaderboardId (string) the id of leaderboard that you want to get the signed users score from
- listener (function)
- status(string)-- can be "success" or "error"
- error(string)-- explains the error
- score(integer) score of player
- gc.leaderboards.submit("leaderboardId", score, listener)
- leaderboardId (string) the id of leaderboard that you want to get the signed users scores from
- score(integer) the score to be sent
- listener(function)
- status(string)-- either "score sent" or "error"
- error(string)-- explains the error
- gc.achievements.show() --returns "showing"
- show the achievement gamecenter popup
- gc.achievements.loadAll(listener)
- returns all the achievements
- listener (function)
- status(string)-- can be "success" or "error"
- error(string)-- explains the error
- achievements(array) each array contains table:
- lastReportedDate(string)-- The last time that progress on the achievement was successfully reported to Game Center.("HH:mm yyyy/MMM/d")(timezone GMT)
- percentComplete(interger)-- leaderboardId of the leaderboard requested (1-100)
- identifier(string)-- the id of the achievement
- unachievedDescription(string)-- A localized description of the achievement to be used when the local player has not completed the achievement.
- title(string)-- title of achievement
- achievedDescription(string)--A localized description to be used after the local player has completed the achievement.
- status(string)-- either "hidden" or "visible"
- replayable(string)-- either "replayable" or "not replayable"
- gc.achievements.submit("achievementId", progress, shouldDisplayNotification, listener)
- achievementId (string) the id of achievement that you want to send the signed users progress on
- shouldDisplayNotification(Boolean) set to true for showing banner on completion
- progress(integer) the progress to be sent should be between 1-100
- listener(function)
- status(string)-- either "achievement set" or "error"
- error(string)-- explains the error
- gc.achievements.reset(listener)
- resets all achievements immediately
- listener(function)
- status(string)-- either "success" or "error"
- error(string)-- explains the error
- gc.challenges.show() --returns "showing"
- show the challenges gamecenter popup
- gc.challenges.load(listener)
- returns all the challenges
- listener (function)
- status(string)-- can be "success" or "error"
- error(string)-- explains the error
- challenges(array) each array contains table:
- issuingPlayerId(string)-- the playerid of the who sent the challenge
- issuingPlayerAlias(string)-- the player name of the who sent the challenge
- receivingPlayerId(string)-- the id of the player who received
- receivingPlayerAlias(string)-- the name of the player who received
- state(string)-- state of challenge: "declined", "complete", "pending", or "invalid"
- message(string)--the message sent with a challenge
- issueDate(string)-- the date the challenge was sent ("HH:mm yyyy/MMM/d")(timezone GMT)
- completionDate(string)-- The date the challenge was completed ("HH:mm yyyy/MMM/d")(timezone GMT)
- gc.player.id() (string) --returns the gamecenter id
- gc.player.name() (string) --returns the gamecenter username
- gc.player.underage() (boolean) --returns a boolean value that indicates whether the local player is underage
- gc.player.multiplayerGamingRestricted() (boolean) --(iOS 13+)returns a Boolean value that indicates whether the player can join multiplayer games.
- gc.player.friends(listener)
- listener(function)
- status(string)-- can be "success" or "error"
- error(string)-- explains the error
- friends(array) -- returns array of tables which contain playerID(string) and displayName(string)
- gc.multiplayer.invite(minPlayers, maxPlayers, inviteMessage, showExistingMatches ,listener, recipients) --invite a new player and show existing matches
- minPlayers(optional)(integer) the minimum number of players
- maxPlayers(optional)(integer) the max number of players
- inviteMessage(optional)(string) The string displayed on another player’s device when invited to join a match
- showExistingMatches(optional (default is true))(boolean) if true the UI will show existing matches
- listener (function)
- status(string)-- can be "finish", "foundMatch","playerDidQuitForError", "playerDidQuit", "finish", "cancelled", or "error"
- creationDate(string)-- date of match creation
- matchID(string)-- matchID
- itIsMyTurn(boolean)-- boolean for whether it is your turn or not
- error(string)-- error when status is "error"
- recipients(optional)(array of strings) put player IDs in here
- gc.multiplayer.newMatch(minPlayers, maxPlayers, inviteMessage, recipients, listener) --create match without using native UI
- minPlayers(optional)(integer) the minimum number of players
- maxPlayers(optional)(integer) the max number of players
- inviteMessage(optional)(string) The string displayed on another player’s device when invited to join a match
- recipients(optional)(array of strings) put player IDs in here
- listener (function)
- status(string)-- can be "finish", "foundMatch","playerDidQuitForError", "playerDidQuit", "finish", "cancelled", or "error"
- creationDate(string)-- date of match creation
- matchID(string)-- matchID
- itIsMyTurn(boolean)-- boolean for whether it is your turn or not
- error(string)-- error when status is "error"
- gc.multiplayer.setListener(listener)-- Set Listener for multiplayer callbacks
- listener (function)
- status(string)-- can be "exchangeCancellation", "receivedExchangeReplies","receivedExchangeRequest", "requestMatchWithOtherPlayer", "matchEnded", "receivedTurnEventForMatch", or "playerWantsToQuit"
- participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string)
- message(string)-- match message message
- matchID(string)-- matchID
- itIsMyTurn(boolean)-- boolean for whether it is your turn or not
- didBecomeActive(boolean)-- when status == "receivedTurnEventForMatch"
- playerName(string)-- the name of player for the event
- playerID(string)-- the id of player for the event
- activeExchanges(table)-- contatins data(table), message(string), displayName(string), playerID(string)
- playersToInvite(table)-- contatins displayName(string), playerID(string)
- matchData(table)-- table of match data
- error(string)-- error when status is "error"
- currentParticipantDisplayName(string)-- Current Player Display Name
- currentParticipantID(string)-- Current Player PlayerId/gamePlayerID
- gc.multiplayer.getMatchData(listener)
- listener(function)
- status(string)-- can be "gotMatchData", "matchNotActive", or "error"
- participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string)
- currentParticipantDisplayName(string)-- Current Player Display Name
- currentParticipantID(string)-- Current Player PlayerId/gamePlayerID
- error(string)-- explains the error
- matchID(string) -- matchID
- data(table) -- data from match
- gc.multiplayer.getMatchStatus(listener)
- listener(function)
- status(string)-- can be "open", "matching", "matchNotActive", or "ended"
- gc.multiplayer.updateData(data,listener)
- data(table)-- data to update
- listener(function)
- status(string)-- "dataUpdated" or "error"
- error(string)-- explains the error
- gc.multiplayer.deleteMatch(matchId,listener)
- matchId(string (optional will delete active match if nil))-- matchId to delete match
- listener(function)
- status(string)-- "matchDeleted" or "error"
- error(string)-- explains the error
- gc.multiplayer.quitOutOfTurn(outcome,listener)
- outcome(string)(optional default "none") -- can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", or "none"
- listener(function)
- status(string)-- "quitOutOfTurn" or "error"
- error(string)-- explains the error
- gc.multiplayer.quitInTurn(outcome, turnTimeout, data, listener)
- outcome(string)(optional default "none") -- can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", or "none"
- turnTimeout(integer)-- number of seconds before a players turn is skipped
- data(table)-- data quit in turn with
- listener(function)
- status(string)-- "quitInTurn", "matchNotActive", or "error"
- error(string)-- explains the error
- gc.multiplayer.endTurn(data, turnTimeout, listener)
- data(table)-- data to end turn
- turnTimeout(integer)-- number of seconds before a players turn is skipped
- listener(function)
- status(string)-- "turnEnded", "matchNotActive", or "error"
- error(string)-- explains the error
- gc.multiplayer.endMatch(data, listener)
- data(table)-- data to end match
- listener(function)
- status(string)-- "endMatch", "matchNotActive", or "error"
- error(string)-- explains the error
- gc.multiplayer.isItMyTurn(listener)
- data(table)-- data to end match
- listener(function)
- status(string)-- can be "matchNotActive", "notMyTurn", "itIsMyTurn"
- playerName(string)-- the name of player for the event
- playerID(string)-- the id of player for the event
- gc.multiplayer.listMatches(listener)
- listener(function)
- isError(boolean)
- error(string)-- explains the error
- matches(array)--contains array of tables which has matchID(string), creationDate(string which in HH:mm yyyy/MMM/d format), matchData(table), and participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string), currentParticipantDisplayName(string), currentParticipantID(string)
- gc.multiplayer.startMatchWithId(matchId,listener)
- matchId(string)
- listener(function)
- status(string) -- can be "error" or "startedMatchWithId"
- participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string)
- error(string)-- explains the error
- itIsMyTurn(boolean)-- boolean for whether it is your turn or not
- matchData(table)-- table of match data
- gc.multiplayer.rematch(listener) -- rematch current game
- listener(function)
- status(string) -- can be "error" or "rematchStarted"
- participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string)
- error(string)-- explains the error
- itIsMyTurn(boolean)-- boolean for whether it is your turn or not
- currentParticipantDisplayName(string)-- Current Player Display Name
- currentParticipantID(string)-- Current Player PlayerId/gamePlayerID
- matchData(table)-- table of match data
- gc.multiplayer.sendReminderToAllParticipants(localizableMessageKey, arguments, listener) -- send a reminder to all participants
- localizableMessageKey(string)
- arguments(array of strings)
- listener(function)
- status(string) -- can be "error" or "reminderSent"
- gc.multiplayer.sendReminderToParticipantWithId(participantId, localizableMessageKey, arguments, listener) -- send a reminder to participant with Id
- participantId(string) -- the id of participant(either PlayerId or gamePlayerID)
- localizableMessageKey(string)
- arguments(array of strings)
- listener(function)
- status(string) -- can be "error", "playerNotFound", or "reminderSent"
- gc.multiplayer.listParticipants(listener) -- list participants
- listener(function)
- status(string)-- can be "gotParticipants", "matchNotActive", or "error"
- participants(array)-- contatins table which contain playerOutcome(string)(can be "won", "lost", "quit", "tied", "first", "second", "third", "fourth", "timeExpired", "customRange", "none") ,displayName(string), playerID(string)
- currentParticipantDisplayName(string)-- Current Player Display Name
- currentParticipantID(string)-- Current Player PlayerId/gamePlayerID
- error(string)-- explains the error
- gc.multiplayer.setMatchOutcome(participantId,listener) -- list participants
- participantId(string) -- the id of participant(either PlayerId or gamePlayerID)
- listener(function)
- status(string)-- can be "outcomeSet", "matchNotActive", or "playerNotFound"
- gc.accessPoint -- handles gamecenter access point for iOS 14+
- gc.accessPoint.setActive(shouldEnable)
- shouldEnable(boolean) -- A Boolean value that determines whether to display the access point
- gc.accessPoint.setLocation(location)
- location(string) -- location of access point icon "bottomLeading", "bottomTrailing","topLeading", or "topTrailing"
- gc.accessPoint.setShowHighlights(shouldEnable)
- shouldEnable(boolean) -- A Boolean value that indicates whether to display highlights for achievements and current ranks for leaderboards.
- gc.accessPoint.setFocused(shouldFocus)
- shouldFocus(boolean) -- only tvOS, A Boolean value that indicates whether the access point is in focus on tvOS.
- gc.accessPoint.triggerAccessPoint() -- Displays the Game Center dashboard
- gc.accessPoint.triggerAccessPointWithType(accessPointType) -- Displays the Game Center dashboard in the specified state
- accessPointType(string) -- can be "default", "leaderboards","achievements", "challenges", "localPlayer", or "dashboard"