Esempio n. 1
0
    /// <summary>
    /// 세이브 코드 반환
    /// </summary>
    static StringBuilder SaveCode()
    {
        StringBuilder sb = new StringBuilder();

        // 게임 정보
        sb
        .Append(GameRule.area)
        .Append(codeData)
        .Append(GameRule.section)
        .Append(codeData)
        .Append(Cycle.now)
        .Append(codeData)
        .Append(Cycle.goal)
        .Append(codeData)
        .Append(Player.allPlayer.Count)
        .Append(codeData)
        .Append(BlockWork.plusBlockValue)
        .Append(codeData)
        .Append(BlockWork.minusBlockValue)

        .Append(codeChapter)
        ;

        // 플레이어 정보
        for (int i = 0; i < Player.allPlayer.Count; i++)
        {
            Player temp = Player.allPlayer[i];

            sb
            .Append(Turn.Index(temp))
            .Append(codeData)
            .Append((int)(temp.type))
            .Append(codeData)
            .Append(temp.character.index)
            .Append(codeData)
            .Append(temp.isAutoPlay)
            .Append(codeData)
            .Append(temp.name)
            .Append(codeData)
            .Append(temp.movement.location)
            .Append(codeData)

            .Append(temp.life.Value)
            .Append(codeData)
            .Append(temp.coin.Value)
            .Append(codeData)

            .Append(temp.dice.count)
            .Append(codeData)
            .Append(temp.dice.valueTotal)
            .Append(codeData)
            .Append(temp.dice.valueRecord)
            .Append(codeData)
            ;

            for (int j = 0; j < Player.inventoryMax; j++)
            {
                if (temp.inventory[j].count > 0)
                {
                    // 유효한 아이템
                    sb
                    .Append(temp.inventory[j].item.index)
                    .Append(codeData)
                    .Append(temp.inventory[j].count)
                    ;
                }
                else
                {
                    // 아이템 없음
                    sb
                    .Append(-1)
                    .Append(codeData)
                    .Append(0)
                    ;
                }


                if (j < Player.inventoryMax - 1)
                {
                    sb.Append(codeData);
                }
            }

            if (Player.allPlayer.Count > 1 && i != Player.allPlayer.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 아이템 오브젝트 배치
        for (int i = 0; i < ItemManager.itemObjectList.Count; i++)
        {
            DynamicItem obj = ItemManager.itemObjectList[i];

            sb
            .Append(obj.location)
            .Append(codeData)
            .Append(obj.item.index)
            .Append(codeData)
            .Append(obj.count)
            ;

            if (i > 0 && i != ItemManager.itemObjectList.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 이벤트 오브젝트 배치
        for (int i = 0; i < EventManager.eventObjectList.Count; i++)
        {
            DynamicEvent obj = EventManager.eventObjectList[i];

            sb
            .Append(obj.location)
            .Append(codeData)
            .Append(obj.iocEvent.index)
            .Append(codeData)
            .Append(obj.count)
            .Append(codeData)
            .Append(Player.Index(obj.creator))
            ;

            if (i > 0 && i != EventManager.eventObjectList.Count - 1)
            {
                sb.Append(codeLine);
            }
        }
        sb.Append(codeChapter);


        // 상황 설정
        sb
        .Append(Player.Index(Turn.now))
        .Append(codeData)
        .Append((int)GameData.gameFlow)
        .Append(codeData)
        .Append((int)Turn.turnAction)

        //.Append(codeChapter)
        ;


        // 종료 문자
        sb.Append('#');

        return(sb);
    }