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); }
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 (); }
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; }
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"); }