뒤끝 차트

차트 관리로 단어와 사전 csv를 관리할 수 있다. 뒤끝 콘솔에 등록할 수 있고, 차트 버전도 관리를 할 수 있다.



1)차트 조회

차트 목록을 조회한다.


Backend.Chart.GetChartList();


{
    //GetReturnValuetoJSON
    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" }
        }
    ]
}

위와 같이 json 형식의 파일 목록을 불러올 수 있다.


2)차트 내용 조회

서버에 저장된 차트 내용을 조회한다.


Backend.Chart.GetChartContents("selectedChartFileId");


{
    rows:
    [
        {
            num: { S: "1" }, // row num(번호)
            column1: { S: "contents1" },
            column2: { S: "contents2" },
            column3: { S: "contents3" }
        },
        {
            num: [Object],
            column1: [Object],
            column2: [Object],
            column3: [Object]
        }
    ]
}


3)차트 저장

차트를 기기 로컬로 다운로드 한다.


Backend.Chart.GetOneChartAndSave("chartFileId");
Backend.Chart.GetOneChartAndSave("chartFileId", "차트 이름");


처음 구현할 때에는 로컬에 빈 csv 파일을 만들고 서버에서 내용을 한줄씩 조회하여 빈 csv를 채우는 방식으로 만들었다. 그러자 문제점이 발생하였는데, csv 파일을 작성할 때 유니티 에디터에서는 잘 작동하지만, 안드로이드 환경에서 작동하지 않았다.
그래서 택한 방법이 차트를 모두 다운로드하는 방법이었다. 차트는 게임이 켜질 때 기존에 있는 차트와 서버에 있는 차트의 버전을 비교한 뒤 최신 버전이 아니라면 다시 다운로드한다.


public class ChartItem
{
    public string itemID;
    public string itemName;
    public string hpPower;
    public string percent;
    public override string ToString()
    {
        return $"itemID : {itemID}\n" +
        $"itemName : {itemName}\n" +
        $"hpPower : {hpPower}\n";
    }
}

public void GetOneChartAndSaveTest()
{
    string selectedProbabilityFileId = "560";

    var bro = Backend.Chart.GetOneChartAndSave(selectedProbabilityFileId);

    if (!bro.IsSuccess())
    {
        Debug.LogError(bro.ToString());
        return;
    }

    JsonData json = bro.FlattenRows();

    List<ChartItem> itemList = new List<ChartItem>();

    for (int i = 0; i < json.Count; i++)
    {
        ChartItem item = new ChartItem();

        item.itemID = json[i]["itemID"].ToString();
        item.itemName = json[i]["itemName"].ToString();
        item.hpPower = json[i]["hpPower"].ToString();

        itemList.Add(item);
    }

    foreach (var item in itemList)
    {
        Debug.Log(item.ToString());
    }

    Debug.Log("차트 아이템의 총 갯수 : " + itemList.Count);
}

위의 샘플 코드를 참조하여 구현하였다.