Esempio n. 1
0
 public ArcingHitbox(Character user, Loc startPoint, AnimData anim, FiniteEmitter tileEmitter, AttachPointEmitter emitter, Loc endPoint, int speed, int item, int delay)
     : base(user, startPoint * GraphicsManager.TileSize, tileEmitter, delay)
 {
     StartPoint  = startPoint;
     EndPoint    = endPoint;
     ItemAnim    = item;
     MaxDistance = (int)Math.Sqrt(((EndPoint - StartPoint) * GraphicsManager.TileSize).DistSquared());
     Speed       = (speed > 0) ? speed : Math.Max(1, (int)Math.Ceiling((double)MaxDistance / GraphicsManager.TileSize * GraphicsManager.MAX_FPS));
     Anim        = new AnimData(anim);
     Emitter     = (AttachPointEmitter)emitter.Clone();
     Emitter.SetupEmit(User, MapLoc, User.MapLoc, user.CharDir, LocHeight);
 }
Esempio n. 2
0
 //the class will be in charge of its own hitbox movement
 //however, the current-action member of its owner may terminate early and remove this hitbox prematurely.
 //the owner class will guarantee that this hitbox will cover all the right places, as well as disposing this hitbox
 public AttachedCircleHitbox(Character user, Alignment targetAlignments, bool hitTiles, bool burstOnWall, Loc startPoint, AnimData anim, int animOffset,
                             FiniteEmitter tileEmitter, AttachPointEmitter emitter, int maxDistance, int dashTime, Dir8 dir, bool wide, int delay)
     : base(user, startPoint * GraphicsManager.TileSize, tileEmitter, delay)
 {
     TargetAlignments = targetAlignments;
     HitTiles         = hitTiles;
     BurstOnWall      = burstOnWall;
     StartPoint       = startPoint;
     MaxDistance      = maxDistance;
     DashTime         = dashTime;
     Dir        = dir;
     Wide       = wide;
     Anim       = new AnimData(anim);
     AnimOffset = animOffset;
     Emitter    = (AttachPointEmitter)emitter.Clone();
     Emitter.SetupEmit(User, MapLoc, MapLoc, user.CharDir, LocHeight);
 }
Esempio n. 3
0
 public CircleSweepHitbox(Character user, Alignment targetAlignments, bool hitTiles, bool burstOnWall, Loc startPoint, AnimData anim, FiniteEmitter tileEmitter,
                          AttachPointEmitter emitter, int speed, int delay, Dir8 dir, int maxDistance, bool boomerang, int item)
     : base(user, startPoint * GraphicsManager.TileSize + dir.GetLoc() * GraphicsManager.TileSize / 2, tileEmitter, delay)
 {
     TargetAlignments = targetAlignments;
     HitTiles         = hitTiles;
     BurstOnWall      = burstOnWall;
     StartPoint       = startPoint;
     Dir = dir;
     DistanceTraveled = GraphicsManager.TileSize / 2;
     MaxDistance      = maxDistance;
     Boomerang        = boomerang;
     Speed            = (speed > 0) ? speed : Math.Max(1, (int)Math.Ceiling((double)(MaxDistance - 0.5 + (Boomerang ? MaxDistance : 0)) * GraphicsManager.MAX_FPS));
     ItemAnim         = item;
     reverse          = 1;
     Anim             = new AnimData(anim);
     Emitter          = (AttachPointEmitter)emitter.Clone();
     Emitter.SetupEmit(User, MapLoc, User.MapLoc, user.CharDir, LocHeight);
 }