public void Trigger(BaseCharacter character, IEngineContext context)
        {
            String worldname = this.Parameters["World"];
            String pos = this.Parameters["EntryPointName"];

            IMapEvent tmpevent = null;
            MapHeader tmpheader = null;

            foreach(MapHeader header in context.WorldManager.GetWorld(worldname).Maps.Values)
            {
                tmpevent = context.EventProvider.GetMapsEvents(header.Map).Where( m => m.GetStringType() == "EntryPoint" && m.Parameters["Name"] == pos).FirstOrDefault();
                if(tmpevent != null)
                {
                    tmpheader = header;
                    break;
                }
            }

            if(tmpevent == null || tmpheader == null)
                return;

            context.MovementProvider.EndMove (character, false, true);

            character.WorldName = worldname;
            character.Location = new MapPoint (tmpevent.Rectangle.X + tmpheader.MapLocation.X,
                                                            tmpevent.Rectangle.Y + tmpheader.MapLocation.Y).ToScreenPoint ();
            character.CurrentMap = null;

            context.SceneProvider.Cameras["camera1"].CenterOnCharacter (character);
        }
 public void Draw(BaseCharacter character, SpriteBatch spriteBatch, BaseCamera camera)
 {
     this.DrawUnder (character, spriteBatch, camera);
     this.DrawBase (character, spriteBatch, camera);
     this.DrawMiddle (character, spriteBatch, camera);
     this.DrawTop (character, spriteBatch, camera);
 }
        private void DrawMiddle(BaseCharacter character, SpriteBatch spriteBatch, BaseCamera camera)
        {
            Vector2 location = new Vector2 ();
            location.X = (int)camera.Offset.X + character.Location.X + 32 / 2 - character.CurrentAnimation.FrameRectangle.Width / 2;
            location.Y = (int) camera.Offset.Y + character.Location.Y + 32 - character.CurrentAnimation.FrameRectangle.Height;

            spriteBatch.Draw (character.Sprite, location, character.CurrentAnimation.FrameRectangle, Color.White);
        }
Example #4
0
        public void Trigger(BaseCharacter character, IEngineContext context)
        {
            if(this.context == null)
                this.context = context;

            var soundfilename = this.lastsoundrequested = this.Parameters["FileName"];
            var loop = this.lastloop = this.Parameters["LoopSound"];

            context.SoundManager.GetSoundAsync (soundfilename, this.SoundLoaded);
        }
        public void Trigger(BaseCharacter character, IEngineContext context)
        {
            //if(!(TileEngine.Camera is PokeCamera))
            //    return;

            ////TileEngine.Camera.Scale(0.9);
            //character.IgnoreMoveInput = true;

            //Thread thread = new Thread((ParameterizedThreadStart)this.StartCinematics);
            //thread.IsBackground = false;
            //thread.Name = "Event Cinematics Test Thread";
            //thread.Start(character);
        }
        private void DrawTop(BaseCharacter character, SpriteBatch spriteBatch, BaseCamera camera)
        {
            Vector2 location = new Vector2 ();
            location.X = (int)camera.Offset.X + character.Location.X + 32 / 2 - character.CurrentAnimation.FrameRectangle.Width / 2;
            location.Y = (int)camera.Offset.Y + character.Location.Y + 32 - character.CurrentAnimation.FrameRectangle.Height;

            Color color = ((character.IsTalking) ? Color.Red : Color.Black);

            if(character is PokeCharacter)
            {
                string name = ((PokeCharacter) character).Name;
                spriteBatch.DrawString (PokeGame.font, name, new Vector2 (location.X - (PokeGame.font.MeasureString (name).X / 2) + 16, location.Y - 15), color);
            }
        }
 public void DrawLayer(BaseCharacter character, SpriteBatch spriteBatch, BaseCamera camera, MapLayers layer)
 {
     switch (layer)
     {
         case MapLayers.UnderLayer:
             this.DrawUnder (character, spriteBatch, camera);
             break;
         case MapLayers.BaseLayer:
             this.DrawBase (character, spriteBatch, camera);
             break;
         case MapLayers.MiddleLayer:
             this.DrawMiddle (character, spriteBatch, camera);
             break;
         case MapLayers.TopLayer:
             this.DrawTop (character, spriteBatch, camera);
             break;
     }
 }
 public void AddPlayer(object networkid, BaseCharacter player)
 {
     throw new NotImplementedException ();
 }
        private bool CollideBeforeMove(BaseCharacter movable, Directions directon)
        {
            float x = movable.Location.X;
            float y = movable.Location.Y;

            #region Destination calculation
            if(directon == Directions.North)
            {
                y -= movable.Speed;
            }
            else if(directon == Directions.South)
            {
                y += movable.Speed;
            }
            else if(directon == Directions.East)
            {
                x += movable.Speed;
            }
            else if(directon == Directions.West)
            {
                x -= movable.Speed;
            }
            #endregion

            ScreenPoint destination = new ScreenPoint ((int) x, (int) y);
            ScreenPoint collision = new ScreenPoint (destination.X, destination.Y);

            if(directon == Directions.South)
                collision = new ScreenPoint (destination.X, destination.Y + 32 - (int) movable.Speed);
            else if(directon == Directions.East)
                collision = new ScreenPoint (destination.X + 32 - (int) movable.Speed, destination.Y);

            var collisionevent = this.context.EventProvider.GetMapsEvents(movable.WorldName, movable.CurrentMap, collision.ToMapPoint()).Where( p => p.Activation == ActivationTypes.Collision && p.Direction == movable.Direction).FirstOrDefault();
            if(collisionevent != null)
                return false;

            return !this.context.CollisionProvider.CheckCollision (movable, collision);
        }
 public void EndTalk(BaseCharacter character)
 {
     throw new NotImplementedException ();
 }
Example #11
0
        public void Trigger(BaseCharacter character, IEngineContext context)
        {
            if(!(character is PokePlayer))
                return;

            PokePlayer player = (PokePlayer)character;
            player.IgnoreMoveInput = true;
            player.StartedMoving += this.Event_StartedMoving;
            player.StoppedMoving += this.Event_StoppedMoving;

            ScreenPoint dest = new ScreenPoint(player.Location.X, player.Location.Y);
            MapPoint lookvalue = player.GetLookValue();
            ScreenPoint newDest = dest + (new ScreenPoint((lookvalue.X * 32) * 2,  (lookvalue.Y * 32) * 2));

            if(string.IsNullOrEmpty (player.AnimationTag.ToString()))
            {
                player.AnimationTag = "Jumping";
                player.CurrentAnimationName = "Jump";
            }

            context.MovementProvider.BeginMoveDestination(character, newDest);
        }
        private void UpdateCurrentMap(BaseCharacter player)
        {
            Check.NullArgument<IPositionable>(player, "player");

            // Update players current map
            if (player.CurrentMap == null
                || player.LocalTileLocation.X < 0
                || player.LocalTileLocation.Y < 0
                || player.LocalTileLocation.X > player.CurrentMap.Map.MapSize.X
                || player.LocalTileLocation.Y > player.CurrentMap.Map.MapSize.Y)
            {
                this.ResolvePositionableCurrentMap(player);
                this.context.EventProvider.HandleEvent(player, ActivationTypes.OnMapEnter);
            }
        }
        /// <summary>
        /// Garentees the return of the positionables local map if they are on one
        /// </summary>
        /// <param name="positionable"></param>
        /// <returns></returns>
        public MapHeader GetPositionableLocalMap(BaseCharacter positionable)
        {
            Check.NullArgument<BaseCharacter>(positionable, "positionable");

            if (positionable.CurrentMap != null)
                return positionable.CurrentMap;
            else
            {
                this.ResolvePositionableCurrentMap(positionable);
                this.context.EventProvider.HandleEvent(positionable, ActivationTypes.OnMapEnter);
            }

            return positionable.CurrentMap;
        }
        public void DrawPlayer(BaseCharacter player)
        {
            Check.NullArgument (player, "player");

            if (!player.IsVisible)
                return;

            Vector2 location = new Vector2 ();
            location.X = player.Location.X;// +(32 / 2) - (player.CurrentAnimation.FrameRectangle.Width / 2);
            location.Y = player.Location.Y + 32 - player.CurrentAnimation.FrameRectangle.Height;

            spritebatch.Draw (player.Sprite, location, player.CurrentAnimation.FrameRectangle, Color.White);

            //if(this.FogRenderer.Texture != null)
            //	spriteBatch.Draw(this.FogRenderer.Texture, new Rectangle((int)location.X, (int)location.Y, 32, 32), Color.White);
        }
 public void Trigger(BaseCharacter character, IEngineContext context)
 {
     throw new NotImplementedException();
 }
 private void DrawUnder(BaseCharacter character, SpriteBatch spriteBatch, BaseCamera camera)
 {
 }
        public bool HandleEvent(BaseCharacter player, ActivationTypes activation)
        {
            MapPoint pos = player.GlobalTileLocation;
            IEnumerable<IMapEvent> events = null;
            bool handledevents = false;

            if(player.CurrentMap == null)
                player.CurrentMap = this.context.SceneProvider.GetPositionableLocalMap (player);

            if(activation == ActivationTypes.OnMapEnter)
            {
                events = this.GetMapsEvents(player.CurrentMap.Map).Where (e => e.Activation == ActivationTypes.OnMapEnter);
            }
            else if(activation == ActivationTypes.Activate || activation == ActivationTypes.Collision)
            {
                MapPoint newpt = player.GetLookValue();
                pos = new MapPoint(pos.X + newpt.X, pos.Y + newpt.Y);

                events = this.GetMapsEvents (player.WorldName, player.CurrentMap, pos);
            }
            else if(activation == ActivationTypes.Movement)
            {
                events = this.GetMapsEvents (player.WorldName, player.CurrentMap, pos);
            }

            // If we didn't find any events, return.
            if(events == null)
                return false;

            foreach(IMapEvent mapevent in events)
            {
                if(mapevent.Activation == ActivationTypes.Static)
                    continue;

                if(mapevent.Direction == Directions.Any || mapevent.Direction == player.Direction
                    && mapevent.Activation == activation)
                {
                    mapevent.Trigger(player, this.context);
                    handledevents = true;
                }
            }

            return handledevents;
        }
Example #18
0
 public virtual void CenterOnCharacter(BaseCharacter Char)
 {
     this.worldname = Char.WorldName;
     this.CenterOnPoint(new ScreenPoint(
                                 Char.Location.IntX + (Char.CurrentAnimation.FrameRectangle.Width / 2),
                                 Char.Location.IntY + (Char.CurrentAnimation.FrameRectangle.Height / 2) + 8));
 }
        private void Test_RequestEvent(BaseCharacter player)
        {
            ClientEventRequestMessage message = new ClientEventRequestMessage ()
            {
                NetworkID = (uint)player.ID,
                Activation = ActivationTypes.Activate
            };

            this.network.Send (message);
        }
 public void Trigger(BaseCharacter character, IEngineContext context)
 {
     Process.Start("http://www.youtube.com/watch?v=Yu_moia-oVI");
 }