Skip to main content

ClientPlayerDataManager

This class is used to provide a simple unified interface for accessing PlayerData. It requires registering what data it should expect and then you can access the data's managers once they have replicated.

-- this should usually be gotten from a shared module between the server and client
local ProfileTemplate = {
    Currency = {
        Money = 0,
        Gems = 100,
    }
}

local cpdm = ClientPlayerDataManager.new({
    ProfileSchema = ProfileTemplate
})

cpdm:RegisterManager("Currency")

cpdm:PromiseManager("Currency"):andThen(function(tm: TableManager)

    tm:Observe("Money", function(money)
        print("My money is:", money)
    end)

end)

Properties

DEFAULT_MANAGER_NAME

ClientPlayerDataManager.DEFAULT_MANAGER_NAME: string

The default internal manager name.

PlayerDataReady

ClientPlayerDataManager.PlayerDataReady: Signal<Player>

A signal that fires when a Player's data is ready to be used.

Functions

new

ConstructorStatic
ClientPlayerDataManager.new(config{
ProfileSchematable,
}) → ClientPlayerDataManager

GetImmediate

ClientPlayerDataManager:GetImmediate(managerNamestring?) → TableReplicatorSingleton

Gets the TableReplicatorSingleton for this manager so you can get immediate info from it if needed.

GetManager

ClientPlayerDataManager:GetManager(managerNamestring?) → TableManager?

Gets the TableManager associated with the given name. This method may return nil if the data has not replicated yet.

PromiseManager

ClientPlayerDataManager:PromiseManager(managerNamestring?) → Promise

Promises the TableManager associated with the given name. If it doesnt exist when called then it will wait for it to be replicated and then will resolve.

RegisterManager

ClientPlayerDataManager:RegisterManager(configstring | {Namestring;DefaultDataSchematable;ConditionFn((replicatorTableReplicator) → boolean)?}) → TableReplicatorSingleton

Registers a tableManager/TableReplicatorSingleton to be watched for on the client.

Informal registration. Assumes data key in the profile template is the same as the given name.

ClientPlayerDataManager:RegisterManager("Currency")

Formal registration. Used for more complex/custom registering of managers. Equivalent to the above

ClientPlayerDataManager:RegisterManager({
    Name = "Currency",
    DefaultDataSchema = profileTemplate["Currency"],
    ConditionFn = function(replicator)
        return replicator:GetTag("UserId") == LocalPlayer.UserId
    end,
})

Start

unreleased
</>
ClientPlayerDataManager:Start() → ()

Marks the CPDM as started. This is not currently neccessary

Show raw api
{
    "functions": [
        {
            "name": "GetImmediate",
            "desc": "Gets the TableReplicatorSingleton for this manager so you can get immediate info from\nit if needed.",
            "params": [
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TableReplicatorSingleton\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 93,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "GetManager",
            "desc": "Gets the TableManager associated with the given name. This method may return `nil` if the\ndata has not replicated yet.",
            "params": [
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TableManager?\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 103,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "PromiseManager",
            "desc": "Promises the TableManager associated with the given name. If it doesnt exist when called then\nit will wait for it to be replicated and then will resolve.",
            "params": [
                {
                    "name": "managerName",
                    "desc": "",
                    "lua_type": "string?"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "Promise\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 113,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "RegisterManager",
            "desc": "Registers a tableManager/TableReplicatorSingleton to be watched for on the client.\n\nInformal registration. Assumes data key in the profile template is the same as the given name.\n```lua\nClientPlayerDataManager:RegisterManager(\"Currency\")\n```\n\nFormal registration. Used for more complex/custom registering of managers. Equivalent to the above\n```lua\nClientPlayerDataManager:RegisterManager({\n    Name = \"Currency\",\n    DefaultDataSchema = profileTemplate[\"Currency\"],\n    ConditionFn = function(replicator)\n        return replicator:GetTag(\"UserId\") == LocalPlayer.UserId\n    end,\n})",
            "params": [
                {
                    "name": "config",
                    "desc": "",
                    "lua_type": "string | {\r\n    Name: string;\r\n    DefaultDataSchema: table;\r\n    ConditionFn: ((replicator: TableReplicator) -> boolean)?\r\n}"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "TableReplicatorSingleton\r\n"
                }
            ],
            "function_type": "method",
            "source": {
                "line": 141,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "Start",
            "desc": "Marks the CPDM as started. This is not currently neccessary",
            "params": [],
            "returns": [],
            "function_type": "method",
            "unreleased": true,
            "source": {
                "line": 186,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "new",
            "desc": "",
            "params": [
                {
                    "name": "config",
                    "desc": "",
                    "lua_type": "{\r\n    ProfileSchema: table,\r\n}"
                }
            ],
            "returns": [
                {
                    "desc": "",
                    "lua_type": "ClientPlayerDataManager"
                }
            ],
            "function_type": "static",
            "tags": [
                "Constructor",
                "Static"
            ],
            "source": {
                "line": 198,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        }
    ],
    "properties": [
        {
            "name": "DEFAULT_MANAGER_NAME",
            "desc": "The default internal manager name.",
            "lua_type": "string",
            "source": {
                "line": 77,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        },
        {
            "name": "PlayerDataReady",
            "desc": "A signal that fires when a Player's data is ready to be used.",
            "lua_type": "Signal<Player>",
            "source": {
                "line": 84,
                "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
            }
        }
    ],
    "types": [],
    "name": "ClientPlayerDataManager",
    "desc": "This class is used to provide a simple unified interface for accessing PlayerData. It requires\nregistering what data it should expect and then you can access the data's managers once they have replicated.\n\n```lua\n-- this should usually be gotten from a shared module between the server and client\nlocal ProfileTemplate = {\n    Currency = {\n        Money = 0,\n        Gems = 100,\n    }\n}\n\nlocal cpdm = ClientPlayerDataManager.new({\n    ProfileSchema = ProfileTemplate\n})\n\ncpdm:RegisterManager(\"Currency\")\n\ncpdm:PromiseManager(\"Currency\"):andThen(function(tm: TableManager)\n\n    tm:Observe(\"Money\", function(money)\n        print(\"My money is:\", money)\n    end)\n\nend)\n```",
    "source": {
        "line": 33,
        "path": "lib/playerdatamanager/src/ClientPlayerDataManager.luau"
    }
}