public void SetScreenEffect(ActionArguments args, WarUnit doer, Point2 center, IEnumerable<Point2> areaPoints, IEnumerable<Point2> validAreaPoints, int times, Action<int, int> callbackFunc) { var model = args.Model; int delay = 0; for (int i = 1; i <= times; i++) { foreach (var p in areaPoints) { var anime = model.CreateDirectedUniformMotionAnimationOnMap(_surfaces, doer.Location, p, 0.125f); anime = new ExtendTimeAnimationSprite(anime, delay, 0); model.ChipAnimations.Add(anime, callbackFunc.GetCurrying(i, times)); delay += 300; } } }
/// <summary> /// 指定したサーフェイスが等速に直線移動するアニメーションをマップチップ上に配置する /// </summary> /// <param name="surface"></param> /// <param name="points"></param> /// <param name="unitTotalTime"></param> /// <param name="changeTime"></param> /// <param name="endAnimationEvent"></param> public void SetContinuouslyMovingAnimationOnMap(Surface surface, IEnumerable<Point2> points, float unitTotalTime, float changeTime, Action endAnimationEvent) { var animes = _mapWindow.CreateContinuouslyMovingAnimationOnMap(surface, points, unitTotalTime); var count = animes.Count - 1; for (int i = 0; i < count; i++) { animes[i] = new ExtendTimeAnimationSprite(animes[i], changeTime); } _chipAnimations.Add(new ComplexAnimationSprite(animes), endAnimationEvent); }