Lumberyard
Guía del usuario (Version 1.21)

Detalles de la implementación de la gema en la nube Message of the Day

En esta sección se describe la entidad, el componente, el script Lua y los recursos que utiliza la gema en la nube Message of the Day.

Entidad y componente

El ejemplo de mensaje del día utiliza una entidad llamada MOTDMenu que contiene el CloudGemMessageOfTheDayClientComponent.


        Entidad de mensaje del día y componente cliente

El componente CloudGemMessageOfTheDayClientComponent ofrece a la entidad acceso a las operaciones API cliente del juego para que pueda recibir los resultados de la devolución de llamada.

El script motdmainmenu.lua

La entidad MOTDmenu también contiene un componente de script Lua que ejecuta el script dev\CloudGemSamples\Scripts\motdmainmenu.lua.

El siguiente código del script muestra cómo se utiliza CloudGemMessageOfTheDayRequestBus para llamar a GetPlayerMessages.

function motdmainmenu:OnAction(entityId, actionName) Debug.Log(tostring(entityId) .. ": " .. actionName) if actionName == "GetMessages" then if CloudGemMessageOfTheDayRequestBus.Event == nil then Debug.Log("No Message Request Event found") return end local timeVal = os.date("%b %d %Y %H:%M") local lang = "Eng" Debug.Log(timeVal); CloudGemMessageOfTheDayRequestBus.Event.GetPlayerMessages(self.entityId, timeVal, lang, nil) end end

El siguiente código del script muestra el CloudGemMessageOfTheDayNotificationBus y las funciones de devolución de llamada obtenidas OnGetPlayerMessagesRequestSuccess(response) y OnGetPlayerMessagesRequestError(errorMsg) con las que establece conexión.

function motdmainmenu:OnActivate() ... self.notificationHandler = CloudGemMessageOfTheDayNotificationBus.Connect(self, self.entityId) end ... function motdmainmenu:OnGetPlayerMessagesRequestSuccess(response) Debug.Log("GetPlayerMessages succeeded") self.messageQueue = {} self.displayTimer = 0.0 Debug.Log("Response messages: "..tostring(#response.list)); --This is a callback from C++ with an object containing a vector called list. --Therefore we cannot treat it as a regular Lua table and must rely on the reflected methods and operators of the reflected vector class --for msgCount = 1, table.getn(response) do -- Debug.Log(response[msgCount]) -- table.insert(self.messageQueue, response[msgCount]) for msgCount = 1, #response.list do Debug.Log(tostring(response.list[msgCount].message)) table.insert(self.messageQueue, response.list[msgCount]) end end function motdmainmenu:OnGetPlayerMessagesRequestError(errorMsg) Debug.Log("GetPlayerMessages Error") end

Recursos de Cloud Gem Message of the Day

La muestra de Message of the Day de Cloud Canvas tiene un grupo de recursos que contiene una tabla de Amazon DynamoDB llamada Main Table (Tabla principal), la cual es la base de datos de los mensajes. Las entradas de la tabla se escriben en un ID de mensaje único generado por el servidor. Cada entrada tiene los atributos siguientes.

Atributos de Main Table

Atributo Tipo Descripción
UniqueMsgID string El ID de mensaje único generado por el servidor.
startTime datetime Hora en que el mensaje debe comenzar a aparecer.
endTime datetime Hora de caducidad del mensaje.
priority integer Prioridad relativa del mensaje. 0 es la máxima prioridad.
message string El texto del mensaje. El tamaño de la cadena se limita a 768 caracteres.