차트 저장하기

뒤끝 콘솔에 등록한 차트를 받아오는 기능을 제공합니다.
이 차트는 뒤끝 콘솔의 차트 관리 항목에서 업로드하여 적용한 엑셀파일의 데이터 입니다.
엑셀 데이터의 형식은 첫번째 컬럼의 이름이 num이어야 하고, 그 값은 숫자이며 유일해야합니다.

차트 받아와 저장하기

뒤끝 콘솔에 작성한 차트에서 현재 적용한 파일들을 받아와 PlayerPrefs에 저장합니다.
차트의 이름이 PlayerPrefs의 키로 적용되고, 현재 적용된 차트 파일의 내용이 그 값으로 저장됩니다. 만일 현재 적용된 차트가 없다면 PlayerPrefs에 저장되지 않습니다.
새롭게 차트를 갱신한다면 PlayerPrefs에도 새로운 값이 저장됩니다. 이전에 받은 값이 같으면 새로 갱신하지 않습니다.

주의
  • 동기 방식의 GetChartAndSave()를 사용하는 경우에는 Update()에서 SaveChart(BackendReturnObject)를 호출하는 경우 오류를 유발합니다.
  • 비동기 방식은 메인 쓰레드가 아니기 때문에 리턴되는 BackendReturnObject를 Update() 문에서 SaveChart(BackendReturnObject)를 통해 처리해 주어야 합니다.

동기

GetChartAndSave ( ) -> BackendReturnObject

// example
Backend.Chart.GetChartAndSave();

비동기

GetChartAndSave ( Function callback ) -> void

// example
// isChartSuccess는 update시 PlayerPrefs에 저장 여부를 결정하는 flag값입니다.
bool isChartSuccess = false;
BackendReturnObject bro = new BackendReturnObject();
void Update( ) 
{
    if( isChartSuccess )
    {
        // SaveChart( BackendReturnObject bro ) -> void
        Backend.Chart.SaveChart( bro );   // 비동기로 작업을 진행할때 필요한 기능입니다. 
        isChartSuccess = false;
        bro.Clear();
    }
}
public void GetChartAndSaveAsync()
{ 
    Backend.Chart.GetChartAndSave ( ( callback ) => 
    {
        bro = callback;
        isChartSuccess = callback.IsSuccess();	
    });
}

결과값 예시

{ 
    rows:
    [ 
        // version 1 (old)
        // selectedChartFile 이 없는 경우
        { 
            // 차트 uuid
            uuid: { S: "538b3a20-7b7a-11e8-8002-f31a1dd37719" }, 
            // 차트 indate
            inDate: { S: "2018-06-29T08:56:35.266Z" }, 
            // 차트 설명
            chartExplain: { S: "2" },
            // 차트명
            chartName: { S: "v1" },
            // version 정보 (y: version1 , n: version2)
            old: { S: "y" } 
        },
        // version 1 (old)
        // selectedChartFile 이 있는 경우
        { 
            // 차트에 적용한 파일 정보
            selectedChartFile: 
            { 
                M: 
                { 
                    // 차트의 row 수
                    count: { N: "1000" },
                    // 차트 파일 uuid
                    uuid: { S: "780932f0-75fb-11e8-bf7a-cbcc37090d69" }, 
                    // 차트 파일 indate
                    inDate: { S: "2018-06-22T09:05:54.591Z" }, 
                    // 차트 파일 명
                    chartFileName: { S: "222222.xlsx" }  
                } 
            },
            // 차트 indate
            inDate: { S: "2018-06-22T09:05:38.562Z" }, 
            // 차트 uuid
            uuid: { S: "6e7b5e20-75fb-11e8-bf7a-cbcc37090d69" }, 
            // 차트 설명
            chartExplain: { S: "v1" }, 
            // 차트명 (이 이름으로 PlayerPrefs에 selectedChartFile에 대한 차트 내용이 저장 됨)
            chartName: { S: "23" },
            // version 정보 (y: version1 , n: version2)
            old: { S: "y" } 
        },
        // version 2 (new)
        // selectedChartFile 이 없는 경우
        {
            // 차트명
            chartName: { S: "gggg" },
            // 차트 설명
            chartExplain: { NULL: true },
            // 적용된 차트 파일 id ( 없는 경우 )
            selectedChartFileId: { NULL: true },
            // version 정보 (y: version1 , n: version2)
            old: { S: "n" } 
        },
        // version 2 (new)
        // selectedChartFile 이 있는 경우
        {
            // 차트명
            chartName: { S: "ㅎㅇㅎㅇ" },
            // 차트 설명
            chartExplain: { NULL: true },
            // 적용된 차트 파일 id ( 있는 경우 )
            selectedChartFileId: { N: "47" },
            // version 정보 (y: version1 , n: version2)
            old: { S: "n" } 
        }
    ]
}

차트 아이템

PlayerPrefs에 저장되는 값은 뒤끝 콘솔의 차트 관리 항목에서 업로드한 엑셀파일의 데이터 입니다.

PlayerPrefs의 value에 들어가는 형식

{
    rows:
    [
        {
            column1:{
                S:"68a8b0f0-d336-11e7-8b06-4fc22765a737"
            },
            column2:{
                S:"123123"
            },
            num:{
                S:"1"
            }
        }
        .......
    ]
}

PlayerPrefs의 value 사용 방법

다음은 뒤끝 콘솔에 저장되어있는 모든 차트들을 갱신하고 받아옵니다.

BackendReturnObject getchart = backend.Chart.GetChartAndSave();
var ChartName = getchart.GetReturnValuetoJSON()["rows"][0]["chartName"]["S"].ToString();

다음 작성해야 할 코드는 받아온 차트 목록 중 특정 차트의 내용을 확인하기 위한 부분입니다.

PlayerPrefs.GetString(ChartName); 

이때 받아오는 값은 위에서 설명한 것처럼 Json 형식의 String입니다. 이를 사용하기 위해 JsonObject로 변환해야 합니다.
뒤끝은 LitJson을 사용하여 구현되어 있으나 다른 것을 사용해도 무방합니다. 위의 Json을 가지고 uuid를 가지고 오는 방법을 설명하도록 하겠습니다.
이처럼 작성하시면 PlayerPrefs에 저장된 ChartName의 첫번째 uuid값을 가지고 올 수 있습니다.
["rows"] 다음에 오는 [0]은 rows의 인덱스로 rows안에 많은 jsonObject가 있다면 인덱스로 참조하면 됩니다.

JsonData chartJson = JsonMapper.ToObject( PlayerPrefs.GetString(ChartName) );