public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList <ActuatorItemData> matchedSequence)
        {
            IConstrain constrain  = null;
            Tile       targetTile = null;
            Texture2D  decoration = null;

            context.PrepareActuatorData(matchedSequence[0], out targetTile, out constrain, out decoration, putOnWall: false);

            if (matchedSequence[0].Data == 0)
            {
                constrain = new PartyConstrain();
            }
            else
            {
                constrain = new PartDirectionConstrain((MapDirection)(matchedSequence[0].Data - 1));
            }

            var res = new FloorActuator(context.GetFloorPosition(matchedSequence[0].TilePosition, currentTile), currentTile, constrain, targetTile.ToEnumerable(),
                                        matchedSequence[0].GetActionStateX().ToEnumerable());

            res.Graphics = new CubeGraphic
            {
                Position  = res.Position,
                DrawFaces = CubeFaces.All,
                Outter    = true,
                Scale     = new Vector3(0.2f),
                Texture   = decoration
            };
            return(res);
        }
Пример #2
0
 public KeyHoleActuator(Vector3 position, IEnumerable<Tile> targetTile, IEnumerable<ActionStateX> action, IConstrain constrain, bool destroyItem) : base(position)
 {
     this.targetTile = targetTile;
     this.action = action;
     Constrain = constrain;
     DestroyItem = destroyItem;
 }
Пример #3
0
 public KeyHoleActuator(Vector3 position, IEnumerable <Tile> targetTile, IEnumerable <ActionStateX> action, IConstrain constrain, bool destroyItem) : base(position)
 {
     this.targetTile = targetTile;
     this.action     = action;
     Constrain       = constrain;
     DestroyItem     = destroyItem;
 }
        public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList <ActuatorItemData> matchedSequence)
        {
            IConstrain constrain = null;

            if (matchedSequence[0].Data == 0)
            {
                constrain = new PartyConstrain();
            }
            else
            {
                constrain = new PartDirectionConstrain((MapDirection)(matchedSequence[0].Data - 1));
            }

            var res = new FloorActuator(context.GetFloorPosition(matchedSequence[0].TilePosition, currentTile), currentTile, constrain,
                                        matchedSequence.Select(context.GetTargetTile), matchedSequence.Select(x => x.GetActionStateX()));

            res.Graphics = new CubeGraphic
            {
                Position  = res.Position,
                DrawFaces = CubeFaces.All,
                Outter    = true,
                Scale     = new Vector3(0.2f),
                Texture   = context.GetTexture(matchedSequence.First(), putOnWall: false)
            };
            return(res);
        }
Пример #5
0
 public Teleport(Vector3 position, int targetMapIndex, Point targetGridPosition, MapDirection direction, bool teleportOpen, bool teleportVisible, IConstrain scopeConstrain) : base(position)
 {
     InitializeGraphics();
     NextLevelIndex     = targetMapIndex;
     TargetTilePosition = targetGridPosition;
     Direction          = direction;
     ContentActivated   = teleportOpen;
     Visible            = teleportVisible;
     ScopeConstrain     = scopeConstrain;
 }
Пример #6
0
        public FloorActuator(Vector3 position, Tile currentTile, IConstrain constrain, IEnumerable <Tile> targetTile, IEnumerable <ActionStateX> action) : base(position)
        {
            this.targetTile = targetTile.ToArray();
            this.action     = action.ToArray();
            Activated       = false;
            CurrentTile     = currentTile;
            Constrain       = constrain;

            currentTile.ObjectEntered += CurrentTile_ObjectEntered;
            currentTile.ObjectLeft    += CurrentTile_ObjectLeft;
        }
        public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList <ActuatorItemData> matchedSequence)
        {
            IConstrain constrain  = null;
            Tile       targetTile = null;
            Texture2D  decoration = null;

            context.PrepareActuatorData(matchedSequence[0], out targetTile, out constrain, out decoration, putOnWall: false);

            return(new PartyPossesionActuator(context.GetFloorPosition(matchedSequence[0].TilePosition, currentTile), currentTile,
                                              constrain, targetTile.ToEnumerable(), matchedSequence[0].GetActionStateX().ToEnumerable()));
        }
Пример #8
0
        public Teleport(Vector3 position, int targetMapIndex, Point targetGridPosition, MapDirection direction, bool teleportOpen, bool teleportVisible, IConstrain scopeConstrain) : base(position)
        {
            InitializeGraphics();
            NextLevelIndex = targetMapIndex;
            TargetTilePosition = targetGridPosition;
            Direction = direction;
            ContentActivated = teleportOpen;
            Visible = teleportVisible;
            ScopeConstrain = scopeConstrain;

        }
Пример #9
0
        public FloorActuator(Vector3 position, Tile currentTile, IConstrain constrain, IEnumerable<Tile> targetTile, IEnumerable<ActionStateX> action) : base(position)
        {
            this.targetTile = targetTile.ToArray();
            this.action = action.ToArray();
            Activated = false;
            CurrentTile = currentTile;
            Constrain = constrain;

            currentTile.ObjectEntered += CurrentTile_ObjectEntered;
            currentTile.ObjectLeft += CurrentTile_ObjectLeft;
        }
Пример #10
0
        public override Actuator CreateItem(LegacyMapBuilder context, Tile currentTile, IReadOnlyList <ActuatorItemData> matchedSequence)
        {
            IConstrain constrain  = null;
            Tile       targetTile = null;
            Texture2D  decoration = null;

            context.PrepareActuatorData(matchedSequence[0], out targetTile, out constrain, out decoration, putOnWall: false);

            var res = new FloorActuator(context.GetFloorPosition(matchedSequence[0].TilePosition, currentTile), currentTile,
                                        new OrConstrain(new IConstrain[] { new PartyConstrain(), new TypeConstrain(typeof(Creature)), new TypeConstrain(typeof(GrabableItem)) }),
                                        targetTile.ToEnumerable(), matchedSequence[0].GetActionStateX().ToEnumerable());

            //TODO 14 28 actuator sends Clear message to pit(which open the pit => should be close)
            res.Graphics = new CubeGraphic
            {
                Position  = res.Position,
                DrawFaces = CubeFaces.All,
                Outter    = true,
                Scale     = new Vector3(0.2f),
                Texture   = decoration
            };
            return(res);
        }
Пример #11
0
        public bool PrepareActuatorData(ActuatorItemData i, out Tile targetTile, out IConstrain constrain, out Texture2D decoration, bool putOnWall)
        {
            targetTile = GetTargetTile(i);
            constrain  = null;
            decoration = null;


            if (i.Data > 0)
            {
                constrain = new GrabableItemConstrain(GetItemFactory(i.Data), i.IsRevertable);
            }
            else
            {
                constrain = new NoConstrain();
            }

            if (i.IsLocal)
            {
                throw new NotSupportedException("yet");
            }
            decoration = GetTexture(i, putOnWall);

            return(true);
        }
Пример #12
0
        public bool PrepareActuatorData(ActuatorItemData i, out Tile targetTile, out IConstrain constrain, out Texture2D decoration, bool putOnWall)
        {
            targetTile = GetTargetTile(i);
            constrain = null;
            decoration = null;


            if (i.Data > 0)
                constrain = new GrabableItemConstrain(GetItemFactory(i.Data), i.IsRevertable);
            else
                constrain = new NoConstrain();

            if (i.IsLocal)
                throw new NotSupportedException("yet");
            decoration = GetTexture(i, putOnWall);

            return true;
        }
Пример #13
0
 public ExchangerActuator(Vector3 position, IGrabableItem storage, IConstrain exchangeConstrain, bool onceOnly)
 {
     Constrain = exchangeConstrain;
     Storage   = storage;
     OnceOnly  = onceOnly;
 }
Пример #14
0
 public PartyPossesionActuator(Vector3 position, Tile actuatorTile, IConstrain constrain, IEnumerable<Tile> targetTile, IEnumerable<ActionStateX> action) : 
     base(position, actuatorTile, constrain,  targetTile, action)
 { }
Пример #15
0
 public PartyPossesionActuator(Vector3 position, Tile actuatorTile, IConstrain constrain, IEnumerable <Tile> targetTile, IEnumerable <ActionStateX> action) :
     base(position, actuatorTile, constrain, targetTile, action)
 {
 }
Пример #16
0
 public ExchangerActuator(Vector3 position, IGrabableItem storage, IConstrain exchangeConstrain, bool onceOnly) 
 {
     Constrain = exchangeConstrain;
     Storage = storage;
     OnceOnly = onceOnly;
 }