Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Linq;
- using System.Reflection;
- using System.Text;
- public class GameController : IGameController
- {
- private const string ManagePrefix = "Manage";
- private static readonly MethodInfo[] ManageMethods;
- private IArmy army;
- private IWareHouse wareHouse;
- private IMissionController missionController;
- static GameController()
- {
- ManageMethods = typeof(GameController).GetMethods(BindingFlags.Instance | BindingFlags.NonPublic);
- }
- public GameController(IArmy army, IMissionController missionController, IWareHouse wareHouse)
- {
- this.Army = army;
- this.WareHouse = wareHouse;
- this.MissionController = missionController;
- }
- public IArmy Army
- {
- get
- {
- return this.army;
- }
- private set
- {
- this.army = value;
- }
- }
- public IWareHouse WareHouse
- {
- get
- {
- return this.wareHouse;
- }
- private set
- {
- this.wareHouse = value;
- }
- }
- public IMissionController MissionController
- {
- get
- {
- return this.missionController;
- }
- private set
- {
- this.missionController = value;
- }
- }
- private void ManageSoldier(string commandName, string soldierType)
- {
- }
- private void ManageSoldier(string soldierTypeName, string name, int age, double experience, double endurance)
- {
- }
- private void ManageWareHouse(string name, int count)
- {
- }
- private void ManageMission(string difficultyLevel, double neededPoints)
- {
- }
- public void GiveInputToGameController(string input)
- {
- // Ideqta e da vikna opredelen metod koito da se griji za opredelno neshto
- // Chupi se kogato mi podadat Soldier Regenerate zashtoto v segashnata logika tursq
- // purviq metod koito se kazva po opredelen nachin i mi vrushta overloada na metoda koito trqbva da registrira soldier
- // za da se fixne trqbva da se proverqt i broq na poluchenite ot konzolata parametri
- string[] data = input.Split();
- string methodName = ManagePrefix + data[0];
- MethodInfo methodToInvoke = ManageMethods.First(t => t.Name.Equals(methodName, StringComparison.OrdinalIgnoreCase));
- ParameterInfo[] methodParams = methodToInvoke.GetParameters();
- object[] parsedParams = new object[methodParams.Length];
- for (int currentConvertion = 0; currentConvertion < methodParams.Length; currentConvertion++)
- {
- Type typeOfCurrentParam = methodParams[currentConvertion].ParameterType;
- parsedParams[currentConvertion] = Convert.ChangeType(data[currentConvertion + 1], typeOfCurrentParam);
- }
- methodToInvoke.Invoke(this, parsedParams);
- }
- public void RequestResult(StringBuilder result)
- {
- throw new NotImplementedException();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement