API Reference of GS2-Formation SDK for Game Engine

Model

EzFormModel

Form Model

This entity represents the form status. A slot can be defined as an area that can be organized.

In the case of weapons and armor, a slot can be a part such as right hand', left hand’, body', arm’, etc., or it can be an area such as slot', slot’, or `slot’, etc. In the case of a party, positions such as “vanguard,” “middle guard,” and “rear guard” can be represented as slots.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Name
metadatastring~ 2048 charsmetadata
slotsList<EzSlotModel>1 ~ 10 itemsList of Slot Model

EzMoldModel

Area for storing form

If it is a party composition, it is intended to be saved in the form of “fire attribute party” or “water attribute party”. The number of areas that can be saved can be limited or expanded individually.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Model Name
metadatastring~ 2048 charsmetadata
formModelEzFormModel
initialMaxCapacityint1 ~ 2147483646Initial capacity to store forms
maxCapacityint1 ~ 2147483646Maximum capacity to store forms

EzPropertyFormModel

Property Form Model

An entity that represents the composition status. The difference between Mold / Form is that Mold / Form defines the number of slots and records the composition in each slot, and Property Form is used to represent compositions that are difficult to determine the number of slots in advance, such as setting skills for owned equipment.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Name
metadatastring~ 2048 charsmetadata
slotsList<EzSlotModel>1 ~ 10 itemsList of Slot Model

EzMold

Saved Form

An entity that holds information organized by the game player. Each Mold can hold multiple Forms, and the capacity of how many Forms can be held can be set individually for each Mold.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Name
userIdstring~ 128 charsUser Id
capacityint~ 2147483646Current Capacity

EzForm

Form

This entity represents the form status. A slot can be defined as an area that can be organized.

In the case of weapons and armor, a slot can be a part such as right hand', left hand’, body', arm’, etc., or it can be an area such as slot', slot’, or `slot’, etc. In the case of a party, positions such as “vanguard,” “middle guard,” and “rear guard” can be represented as slots.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Name
indexint~ 2147483646Index of storage area
slotsList<EzSlot>~ 10 itemsList of Slots

EzPropertyForm

Property Form

An entity that represents the composition status. The difference between Mold / Form is that Mold / Form defines the number of slots and records the composition in each slot, and Property Form is used to represent compositions that are difficult to determine the number of slots in advance, such as setting skills for owned equipment.

TypeRequireDefaultLimitationDescription
namestring~ 128 charsForm Name
propertyIdstring~ 1024 charsProperty Id
slotsList<EzSlot>~ 10 itemsList of Slots

EzSlot

TypeRequireDefaultLimitationDescription
namestring~ 128 charsSlot model name
propertyIdstring~ 1024 charsProperty ID
metadatastring~ 1024 charsmetadata

EzSlotModel

TypeRequireDefaultLimitationDescription
namestring~ 128 charsSlot model name
propertyRegexstring“.*”~ 512 charsRegular expressions for values that can be set as properties
metadatastring~ 512 charsmetadata

EzSlotWithSignature

TypeRequireDefaultLimitationDescription
namestring~ 128 charsSlot model name
propertyTypeenum [‘gs2_inventory’, ‘gs2_simple_inventory’, ‘gs2_dictionary’]~ 128 charsProperty Type
bodystring~ 1048576 charspayload
signaturestring~ 1024 charsSignature that proves ownership of the resource for the property ID
metadatastring~ 1024 charsmetadata

EzAcquireActionConfig

TypeRequireDefaultLimitationDescription
nameenum []~ 128 charsTypes of actions to be performed in the stamp sheet
configList<EzConfig>[]~ 1000 itemsConfig for use with stamp sheets

EzConfig

TypeRequireDefaultLimitationDescription
keystring~ 64 charsName
valuestring~ 51200 charsValue

EzAcquireAction

TypeRequireDefaultLimitationDescription
actionenum []~ 128 charsTypes of actions to be performed in the stamp sheet
requeststring~ 1048576 charsJSON of request

Methods

getMoldModel

Obtain form model information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsForm Model Name

Result

TypeDescription
itemEzMoldModelForm storage area

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->MoldModel(
        "mold-0001" // moldModelName
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->MoldModel(
        "mold-0001" // moldModelName
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FMoldModel> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

listMoldModels

Obtain list of form model information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
itemsList<EzMoldModel>List of Form storage area

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var items = await domain.MoldModelsAsync(
    ).ToListAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.MoldModels(
    );
    List<EzMoldModel> items = new List<EzMoldModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    );
    const auto It = Domain->MoldModels(
    );
    for (auto Item : *It)
    {

    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // Start event handling
    var callbackId = domain.SubscribeMoldModels(
        () => {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    domain.UnsubscribeMoldModels(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.MoldModels(
    );
    List<EzMoldModel> items = new List<EzMoldModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    );
    
    // Start event handling
    const auto CallbackId = Domain->SubscribeMoldModels(
        []() {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    Domain->UnsubscribeMoldModels(CallbackId);

getMold

Get saved form information by specifying form storage area and property ID

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsForm Name
accessTokenstring~ 128 charsUser Id

Result

TypeDescription
itemEzMoldSaved forms
moldModelEzMoldModelForm storage area

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FMold> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

listMolds

Obtain list of saved form information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
accessTokenstring~ 128 charsUser Id
pageTokenstring~ 1024 charsToken specifying the position from which to start acquiring data
limitint301 ~ 1000Number of data acquired

Result

TypeDescription
itemsList<EzMold>List of Saved Forms
nextPageTokenstringPage token to retrieve the rest of the listing

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.MoldsAsync(
    ).ToListAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.Molds(
    );
    List<EzMold> items = new List<EzMold>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    const auto It = Domain->Molds(
    );
    for (auto Item : *It)
    {

    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // Start event handling
    var callbackId = domain.SubscribeMolds(
        () => {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    domain.UnsubscribeMolds(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.Molds(
    );
    List<EzMold> items = new List<EzMold>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    
    // Start event handling
    const auto CallbackId = Domain->SubscribeMolds(
        []() {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    Domain->UnsubscribeMolds(CallbackId);

getFormModel

Obtain form model information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsForm Model Name

Result

TypeDescription
itemEzFormModelForm

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    ).FormModel(
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    ).FormModel(
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->MoldModel(
        "mold-0001" // moldModelName
    )->FormModel(
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    ).FormModel(
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).MoldModel(
        moldModelName: "mold-0001"
    ).FormModel(
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->MoldModel(
        "mold-0001" // moldModelName
    )->FormModel(
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FFormModel> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

deleteForm

Delete Form

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
indexint~ 2147483646Index of storage area

Result

TypeDescription
itemEzFormForm
moldEzMoldSaved forms
moldModelEzMoldModelForm storage area
formModelEzFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var result = await domain.DeleteFormAsync(
    );
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var future = domain.DeleteFormFuture(
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    )->Form(
        0 // index
    );
    const auto Future = Domain->DeleteForm(
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

getForm

Get Form

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
indexint~ 2147483646Index of storage area

Result

TypeDescription
itemEzFormForm
moldEzMoldSaved forms
moldModelEzMoldModelForm storage area
formModelEzFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    )->Form(
        0 // index
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    )->Form(
        0 // index
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FForm> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

getFormWithSignature

Get form with signature

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
indexint~ 2147483646Index of storage area
keyIdstring~ 1024 charsencryption key GRN

Result

TypeDescription
itemEzFormForm
bodystringValue to be signed
signaturestringSignature
moldEzMoldSaved forms
moldModelEzMoldModelForm storage area
formModelEzFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var result = await domain.GetFormWithSignatureAsync(
        keyId: "key-0001"
    );
    var item = await result.ModelAsync();
    var body = result.Body;
    var signature = result.Signature;
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var future = domain.GetFormWithSignatureFuture(
        keyId: "key-0001"
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.Model();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;
    var body = future.Result.Body;
    var signature = future.Result.Signature;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    )->Form(
        0 // index
    );
    const auto Future = Domain->GetFormWithSignature(
        "key-0001"
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (!TestFalse(WHAT, Future2->GetTask().IsError())) return false;
    const auto Result = Future2->GetTask().Result();
    const auto Body = Result->Body;
    const auto Signature = Result->Signature;

listForms

Get list of forms

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
pageTokenstring~ 1024 charsToken specifying the position from which to start acquiring data
limitint301 ~ 1000Number of data acquired

Result

TypeDescription
itemsList<EzForm>List of Form
nextPageTokenstringPage token to retrieve the rest of the listing

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var items = await domain.FormsAsync(
    ).ToListAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var it = domain.Forms(
    );
    List<EzForm> items = new List<EzForm>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    );
    const auto It = Domain->Forms(
    );
    for (auto Item : *It)
    {

    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    
    // Start event handling
    var callbackId = domain.SubscribeForms(
        () => {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    domain.UnsubscribeForms(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    );
    var it = domain.Forms(
    );
    List<EzForm> items = new List<EzForm>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    );
    
    // Start event handling
    const auto CallbackId = Domain->SubscribeForms(
        []() {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    Domain->UnsubscribeForms(CallbackId);

setForm

Update Form

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
moldModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
indexint~ 2147483646Index of storage area
slotsList<EzSlotWithSignature>1 ~ 10 itemsList of Slot
keyIdstring~ 1024 charsencryption key GRN

Result

TypeDescription
itemEzFormForm
moldEzMoldSaved forms
moldModelEzMoldModelForm storage area
formModelEzFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var result = await domain.SetFormAsync(
        slots: new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature[] {
            new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature
                {
                Name = "slot-0001",
                PropertyType = "gs2_dictionary",
                Body = "body",
                Signature = "signature",
            },
        },
        keyId: "key-0001"
    );
    var item = await result.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Mold(
        moldModelName: "mold-0001"
    ).Form(
        index: 0
    );
    var future = domain.SetFormFuture(
        slots: new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature[] {
            new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature
                {
                Name = "slot-0001",
                PropertyType = "gs2_dictionary",
                Body = "body",
                Signature = "signature",
            },
        },
        keyId: "key-0001"
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.Model();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Mold(
        "mold-0001" // moldModelName
    )->Form(
        0 // index
    );
    const auto Future = Domain->SetForm(
        []
        {
            const auto v = MakeShared<TArray<TSharedPtr<Gs2::Formation::Model::FSlotWithSignature>>>();
            v->Add({'name': 'slot-0001', 'propertyType': 'gs2_dictionary', 'body': 'body', 'signature': 'signature'});
            return v;
        }(),
        "key-0001"
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (!TestFalse(WHAT, Future2->GetTask().IsError())) return false;
    const auto Result = Future2->GetTask().Result();

getPropertyFormModel

Obtain form model information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
propertyFormModelNamestring~ 128 charsForm Name

Result

TypeDescription
itemEzPropertyFormModelForm

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).PropertyFormModel(
        propertyFormModelName: "form-0001"
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).PropertyFormModel(
        propertyFormModelName: "form-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->PropertyFormModel(
        "form-0001" // propertyFormModelName
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).PropertyFormModel(
        propertyFormModelName: "form-0001"
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).PropertyFormModel(
        propertyFormModelName: "form-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->PropertyFormModel(
        "form-0001" // propertyFormModelName
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FPropertyFormModel> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

listPropertyFormModels

Obtain list of form model information

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name

Result

TypeDescription
itemsList<EzPropertyFormModel>List of Form

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var items = await domain.PropertyFormModelsAsync(
    ).ToListAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.PropertyFormModels(
    );
    List<EzPropertyFormModel> items = new List<EzPropertyFormModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    );
    const auto It = Domain->PropertyFormModels(
    );
    for (auto Item : *It)
    {

    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    
    // Start event handling
    var callbackId = domain.SubscribePropertyFormModels(
        () => {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    domain.UnsubscribePropertyFormModels(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    );
    var it = domain.PropertyFormModels(
    );
    List<EzPropertyFormModel> items = new List<EzPropertyFormModel>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    );
    
    // Start event handling
    const auto CallbackId = Domain->SubscribePropertyFormModels(
        []() {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    Domain->UnsubscribePropertyFormModels(CallbackId);

deletePropertyForm

Delete PropertyForm

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
accessTokenstring~ 128 charsUser Id
propertyIdstring~ 1024 charsProperty Id

Result

TypeDescription
itemEzPropertyFormPropertyForm
propertyFormModelEzPropertyFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var result = await domain.DeletePropertyFormAsync(
    );
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var future = domain.DeletePropertyFormFuture(
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->PropertyForm(
        "form-0001", // propertyFormModelName
        "property-0001" // propertyId
    );
    const auto Future = Domain->DeletePropertyForm(
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

getPropertyForm

Get PropertyForm

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
propertyFormModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
propertyIdstring~ 1024 charsProperty Id

Result

TypeDescription
itemEzPropertyFormPropertyForm
propertyFormModelEzPropertyFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var item = await domain.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->PropertyForm(
        "form-0001", // propertyFormModelName
        "property-0001" // propertyId
    );
    const auto Future = Domain.Model();
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    
    // Start event handling
    var callbackId = domain.Subscribe(
        value => {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    domain.Unsubscribe(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var future = domain.Model();
    yield return future;
    var item = future.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->PropertyForm(
        "form-0001", // propertyFormModelName
        "property-0001" // propertyId
    );
    
    // Start event handling
    const auto CallbackId = Domain->Subscribe(
        [](TSharedPtr<Gs2::Formation::Model::FPropertyForm> value) {
            // Called when the value changes
            // The "value" is passed the value after the change.
        }
    );

    // Stop event handling
    Domain->Unsubscribe(CallbackId);

getPropertyFormWithSignature

Get form with signature

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
propertyFormModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
propertyIdstring~ 1024 charsProperty Id
keyIdstring~ 1024 charsencryption key GRN

Result

TypeDescription
itemEzPropertyFormPropertyForm
bodystringValue to be signed
signaturestringSignature
propertyFormModelEzPropertyFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var result = await domain.GetPropertyFormWithSignatureAsync(
        keyId: "key-0001"
    );
    var item = await result.ModelAsync();
    var body = result.Body;
    var signature = result.Signature;
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var future = domain.GetPropertyFormWithSignatureFuture(
        keyId: "key-0001"
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.Model();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;
    var body = future.Result.Body;
    var signature = future.Result.Signature;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->PropertyForm(
        "form-0001", // propertyFormModelName
        "property-0001" // propertyId
    );
    const auto Future = Domain->GetPropertyFormWithSignature(
        "key-0001"
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (!TestFalse(WHAT, Future2->GetTask().IsError())) return false;
    const auto Result = Future2->GetTask().Result();
    const auto Body = Result->Body;
    const auto Signature = Result->Signature;

listPropertyForms

Get list of forms

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
propertyFormModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
pageTokenstring~ 1024 charsToken specifying the position from which to start acquiring data
limitint301 ~ 1000Number of data acquired

Result

TypeDescription
itemsList<EzPropertyForm>List of PropertyForm
nextPageTokenstringPage token to retrieve the rest of the listing

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var items = await domain.PropertyFormsAsync(
    ).ToListAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.PropertyForms(
    );
    List<EzPropertyForm> items = new List<EzPropertyForm>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    const auto It = Domain->PropertyForms( // propertyFormModelName
    );
    for (auto Item : *It)
    {

    }
Value change event handling
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    
    // Start event handling
    var callbackId = domain.SubscribePropertyForms(
        () => {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    domain.UnsubscribePropertyForms(callbackId);
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var it = domain.PropertyForms(
    );
    List<EzPropertyForm> items = new List<EzPropertyForm>();
    while (it.HasNext())
    {
        yield return it.Next();
        if (it.Error != null)
        {
            onError.Invoke(it.Error, null);
            break;
        }
        if (it.Current != null)
        {
            items.Add(it.Current);
        }
        else
        {
            break;
        }
    }
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    
    // Start event handling
    const auto CallbackId = Domain->SubscribePropertyForms(
        []() {
            // Called when an element of the list changes.
        }
    );

    // Stop event handling
    Domain->UnsubscribePropertyForms(CallbackId);

setPropertyForm

Update PropertyForm

Request

TypeRequireDefaultLimitationDescription
namespaceNamestring~ 32 charsNamespace name
propertyFormModelNamestring~ 128 charsMold Name
accessTokenstring~ 128 charsUser Id
propertyIdstring~ 1024 charsProperty Id
slotsList<EzSlotWithSignature>1 ~ 10 itemsList of Slot
keyIdstring~ 1024 charsencryption key GRN

Result

TypeDescription
itemEzPropertyFormPropertyForm
proeprtyFormModelEzPropertyFormModelForm Model

Implementation Example

    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var result = await domain.SetPropertyFormAsync(
        slots: new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature[] {
            new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature
                {
                Name = "slot-0001",
                PropertyType = "gs2_dictionary",
                Body = "body",
                Signature = "signature",
            },
        },
        keyId: "key-0001"
    );
    var item = await result.ModelAsync();
    var domain = gs2.Formation.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).PropertyForm(
        propertyFormModelName: "form-0001",
        propertyId: "property-0001"
    );
    var future = domain.SetPropertyFormFuture(
        slots: new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature[] {
            new Gs2.Unity.Gs2Formation.Model.EzSlotWithSignature
                {
                Name = "slot-0001",
                PropertyType = "gs2_dictionary",
                Body = "body",
                Signature = "signature",
            },
        },
        keyId: "key-0001"
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.Model();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;
    const auto Domain = Gs2->Formation->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->PropertyForm(
        "form-0001", // propertyFormModelName
        "property-0001" // propertyId
    );
    const auto Future = Domain->SetPropertyForm(
        []
        {
            const auto v = MakeShared<TArray<TSharedPtr<Gs2::Formation::Model::FSlotWithSignature>>>();
            v->Add({'name': 'slot-0001', 'propertyType': 'gs2_dictionary', 'body': 'body', 'signature': 'signature'});
            return v;
        }(),
        "key-0001"
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (!TestFalse(WHAT, Future2->GetTask().IsError())) return false;
    const auto Result = Future2->GetTask().Result();