private void PreviewUnitMovement(IUnit unit, IntVector2 previewCoords)
        {
            // Move the unit in space, but do not actually execute a move command (since we are previewing)
            ITransformableUnit transformableUnit = _unitTransformRegistry.GetTransformableUnit(unit.UnitId);
            Vector3            worldPosition     = _gridPositionCalculator.GetTileCenterWorldPosition(previewCoords);

            transformableUnit.Transform.position =
                new Vector3(worldPosition.x, worldPosition.y, transformableUnit.Transform.position.z);
        }
Beispiel #2
0
        public void Undo()
        {
            ITransformableUnit unit = _unitRegistry.GetTransformableUnit(_data.unitId);

            if (unit == null)
            {
                string errorMsg = $"Unit not found in registry: {_data.unitId}";
                _logger.LogError(LoggedFeature.Units, errorMsg);
                return;
            }

            // TODO: Maybe encapsulate rotation of units
            unit.Transform.Rotate(Vector3.forward, -_data.degrees);
        }
Beispiel #3
0
        public IObservable <Unit> Run()
        {
            ITransformableUnit unit = _unitRegistry.GetTransformableUnit(_data.unitId);

            if (unit == null)
            {
                string errorMsg = $"Unit not found in registry: {_data.unitId}";
                _logger.LogError(LoggedFeature.Units, errorMsg);
                return(Observable.Throw <Unit>(new Exception(errorMsg)));
            }

            // TODO: Maybe encapsulate rotation of units
            unit.Transform.Rotate(Vector3.forward, _data.degrees);
            return(Observable.ReturnUnit());
        }