class Program
{
public enum eBuildingType
{
SpawningPool
}
public enum eUnitType
{
Drone,
Zergling
}
static public bool spawningPoolCheck = false;
static void Main(string[] args)
{
Larva larva = new Larva();
Larva larva2 = new Larva();
Zergling zergling = larva2.TransformToZergling(eUnitType.Zergling);
Drone drone = larva2.TransformToDrone(eUnitType.Drone);
larva2 = null;
drone.Build(eBuildingType.SpawningPool);
zergling = larva.TransformToZergling(eUnitType.Zergling);
larva = null;
}
}
class Larva
{
//생성자 메서드
public Larva()
{
Console.WriteLine("Larva가 생성되었습니다.");
}
public Drone TransformToDrone(Program.eUnitType unit)
{
Console.WriteLine("{0}으로 변태를 시도합니다.", unit);
return new Drone();
}
public Zergling TransformToZergling(Program.eUnitType unit)
{
Console.WriteLine("{0}으로 변태를 시도합니다.", unit);
if (Program.spawningPoolCheck)
{
Zergling zergling = new Zergling();
Zergling zergling2 = new Zergling();
return null;
}
else
{
Console.WriteLine("스포닝풀이 필요합니다.");
return null;
}
}
}
class Drone
{
//생성자 메서드
public Drone()
{
Console.WriteLine("드론이 생성되었습니다");
}
public void Build(Program.eBuildingType building)
{
switch(building)
{
case Program.eBuildingType.SpawningPool:
Console.WriteLine("스포닝풀로 변태를 시도합니다.");
SpawningPool spawningPool = new SpawningPool();
break;
}
}
}
class SpawningPool
{
//생성자 메서드
public SpawningPool()
{
Program.spawningPoolCheck = true;
Console.WriteLine("스포닝풀이 생성되었습니다.");
}
}
class Zergling
{
//생성자 메서드
public Zergling()
{
Console.WriteLine("저글링이 생성되었습니다.");
}
}