У меня есть 2 класса: Entity и Control.
Entity:
public class Entity
{
public float Rotate {get; private set;}
readonly Control m_Control
public Entity(float rot)
{
Rotate = rot;
m_control = new Control();
}
public void Update(float time)
{
switch (m_control.Rotating())
{
case Control.Rotator.Right:
Rotate += time * 1.5f;
break;
case Control.Rotator.Left:
Rotate -= time * 1.5f;
break;
case Control.Rotator.Still:
break;
default:
break;
}
}
}
Control:
public class Control
{
private Random rnd = new Random();
private int _randomTurn;
public enum Rotator
{
Still,
Right,
Left
}
public Control()
{
TimerSetup(); // Initialize timer for Entity
}
public Rotator Rotating()
{
switch(_randomTurn)
{
case 1:
return Rotator.Right;
case 2:
return Rotator.Left;
default:
return Rotator.Still;
}
}
private void TimerSetup()
{
DispatcherTimer dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(GameTickTimer_Tick);
dispatcherTimer.Interval = new TimeSpan(0, 0, 2);
dispatcherTimer.Start();
}
private void GameTickTimer_Tick(object sender, EventArgs e)
{
RandomTurn();
}
private void RandomTurn()
{
_randomTurn = rnd.Next(1, 4);
}
}
По сути, я хочу сделать класс 'Control' базовым классом и создать два подкласса: PlayerControl и AIControl. В настоящее время как управляющие входы Игрока, так и управляющие входы AI обрабатываются в одном классе Control.
Моя дилемма в том, как в классе Entity определить, какой класс Control будет использовать Entity?
Класс Entity в настоящее время назначает класс Control следующим образом:
readonly Control m_Control
public Entity(float rot)
{
Rotate = rot;
m_control = new Control();
}
Я создаю несколько экземпляров классов Entity в другом классе следующим образом:
public class Environment
{
readonly Entity m_entity;
readonly Entity m_entity2;
public Environment()
{
m_entity = new Entity(90.0f);
m_entity2 = new Entity(180.0f);
}
Есть ли способ определить, какой элемент управления подкласс сущность будет использовать при ее создании?