private void HandleUnitPlacedAtTile(IUnit unit, IntVector2 tileCoords)
        {
            uint?unitIndex = _unitDataIndexResolver.ResolveUnitIndex(unit.UnitData);

            if (unitIndex == null)
            {
                _logger.LogError(LoggedFeature.Units,
                                 "Error adding unit with name: {0}. Index not resolved.",
                                 unit.UnitData.Name);
                return;
            }

            var unitDataReference = new UnitDataReference(unitIndex.Value, unit.UnitData.UnitType);

            _mapSectionData.AddInitialUnit(tileCoords, unitDataReference);
        }
        public void HandleDrag(IntVector2 tileCoords)
        {
            uint?unitIndex = _unitDataIndexResolver.ResolveUnitIndex(_unit.UnitData);

            if (unitIndex == null)
            {
                _logger.LogError(LoggedFeature.Units,
                                 "Error dragging unit with name: {0}. Index not resolved.",
                                 _unit.UnitData.Name);
                return;
            }

            var unitDataReference = new UnitDataReference(unitIndex.Value, _unit.UnitData.UnitType);

            _mapSectionData.RemoveInitialUnit(_tileCoords, unitDataReference);
            var tileDistance = tileCoords - _tileCoords;

            _tileCoords = tileCoords;
            _commandQueue.Enqueue <MoveUnitCommand, MoveUnitData>(new MoveUnitData(_unit.UnitId, tileDistance),
                                                                  CommandSource.Game);
            _mapSectionData.AddInitialUnit(_tileCoords, unitDataReference);
        }