Ejemplo n.º 1
0
 public void RemoveInitialUnit(IntVector2 tileCoords, UnitDataReference unitDataReference)
 {
     TileMetadata.TileMetadata tileMetadata = GetTileMetadata(tileCoords);
     tileMetadata.units.RemoveAll(x => x.UnitIndex == unitDataReference.UnitIndex);
     _unitRemovedSubject.OnNext(Tuple.Create(tileCoords, unitDataReference));
     ClearTileMetadataIfNecessary(tileCoords);
 }
        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);
        }
        private void SpawnUnit(UnitDataReference unitDataReference, IntVector2 tileCoords)
        {
            IUnitData unitData =
                _unitDataIndexResolver.ResolveUnitData(unitDataReference.UnitType, unitDataReference.UnitIndex);

            if (unitData == null)
            {
                _logger.LogError(LoggedFeature.Units, "UnitData reference not found: {0}", unitDataReference);
                return;
            }

            UnitCommandData unitCommandData = _unitCommandDataFactory.Create(unitData);
            SpawnUnitData   spawnUnitData   = new SpawnUnitData(unitCommandData, tileCoords, isInitialSpawn: true);

            _commandQueue.Enqueue <SpawnUnitCommand, SpawnUnitData>(spawnUnitData, CommandSource.Game);
        }
        public void Remove()
        {
            uint?unitIndex = _unitDataIndexResolver.ResolveUnitIndex(_unit.UnitData);

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

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

            _mapSectionData.RemoveInitialUnit(_tileCoords, unitDataReference);
            _commandQueue.Enqueue <DespawnUnitCommand, DespawnUnitData>(new DespawnUnitData(_unit.UnitId),
                                                                        CommandSource.Game);
        }
        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);
        }
Ejemplo n.º 6
0
 public UnitCommandData(SerializationInfo info, StreamingContext context)
 {
     unitDataReference = (UnitDataReference)info.GetValue("unitDataReference", typeof(UnitDataReference));
     unitId            = (UnitId)info.GetValue("unitId", typeof(UnitId));
     pets = (UnitCommandData[])info.GetValue("pets", typeof(UnitCommandData[]));
 }
Ejemplo n.º 7
0
 public UnitCommandData(UnitId unitId, uint unitIndex, UnitType unitType, UnitCommandData[] pets)
 {
     this.unitId            = unitId;
     this.unitDataReference = new UnitDataReference(unitIndex, unitType);
     this.pets = pets;
 }
Ejemplo n.º 8
0
 public void AddInitialUnit(IntVector2 tileCoords, UnitDataReference unitDataReference)
 {
     TileMetadata.TileMetadata tileMetadata = GetTileMetadata(tileCoords);
     tileMetadata.units.Add(unitDataReference);
     _unitAddedSubject.OnNext(Tuple.Create(tileCoords, unitDataReference));
 }