using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using Newtonsoft.Json;
namespace LoadAndSaveGame
{
public class App
{
GameInfo gameInfo;
//생성자
public App()
{
InfoManager.instance.LoadData();
Hero hero = new Hero();
Item item1 = new Item(new ItemInfo(100,12));
Item item2 = new Item(new ItemInfo(101, 15));
hero.GetItem(item1);
hero.GetItem(item2);
hero.OpenBag();
hero.Equip(item1);
}
}
}
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace LoadAndSaveGame
{
internal class InfoManager
{
public static readonly InfoManager instance = new InfoManager();
GameInfo gameInfo;
private InfoManager() { }
public void LoadData()
{
if (File.Exists("./game_info.json"))
{
Console.WriteLine("기존 유저입니다.");
//파일읽기
string json = File.ReadAllText("./game_info.json");
//역직렬화
GameInfo gameinfo = JsonConvert.DeserializeObject<GameInfo>(json);
}
else
{
Console.WriteLine("신규 유저입니다.");
//새로운 gameinfo 객체 생성하여 기본값지정
GameInfo gameInfo = new GameInfo();
gameInfo.Init();
//직렬화
string json = JsonConvert.SerializeObject(gameInfo);
File.WriteAllText("./game_info.json", json);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadAndSaveGame
{
internal class GameInfo
{
public List<ItemInfo> itemInfos;
public GameInfo() { }
public void Init()
{
this.itemInfos = new List<ItemInfo>();
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadAndSaveGame
{
public class ItemInfo
{
public int id;
public int damage;
public ItemInfo(int id, int damage)
{
this.id = id;
this.damage = damage;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadAndSaveGame
{
public class Hero
{
int damage;
string name;
List<Item> bag = new List<Item>();
Item leftHand = null;
public Hero()
{
}
public void GetItem(Item item)
{
this.bag.Add(item);
}
public void Equip(Item item)
{
for(int i = 0 ; i < this.bag.Count; i++)
{
if (bag[i].GetId() == item.GetId())
{
this.bag.Remove(bag[i]);
this.leftHand = item;
Console.WriteLine("{0}장착",this.leftHand);
};
}
}
public void OpenBag()
{
for (int i=0; i<bag.Count; i++)
{
Console.WriteLine(bag[i]);
}
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace LoadAndSaveGame
{
public class Item
{
public ItemInfo info;
public Item(ItemInfo info)
{
this.info = info;
}
public int GetId()
{
return this.info.id;
}
}
}