public object Action(Buttons button, int param, Coord pos) { switch (button) { case Buttons.SpawnUnit: return(IAction.SpawnUnit((Unit.typeUnit)param)); case Buttons.UpgradeTown: IAction.UpgradeTown(); break; case Buttons.Market: IAction.Market(); break; case Buttons.NextTurn: nextTurn(); break; case Buttons.Left: case Buttons.Right: switch (map.Map[pos.X, pos.Y].type) { case GameObj.typeObj.empty when button == Buttons.Left: return(IAction.MoveUnit(pos)); case GameObj.typeObj.unit when button == Buttons.Left: IAction.SelectUnit((Unit)map.Map[pos.X, pos.Y]); break; case GameObj.typeObj.unit when button == Buttons.Right: case GameObj.typeObj.town when button == Buttons.Right: return(IAction.Attack(map.Map[pos.X, pos.Y])); case GameObj.typeObj.mine when button == Buttons.Right: IAction.CaptureMine((Mine)map.Map[pos.X, pos.Y]); break; } break; } return(null); }