private MarkerTimeline CreateDummyMarkerTimeline() { MarkerTimeline DummyTimeline = new MarkerTimeline(); DummyTimeline.DeathFrame = 60; Squad DummySquad = CreateDummySquad(); Squad EnemySquad = CreateDummySquad(); DummyTimeline.AnimationMarker = new AnimationScreen("", DummyMap, DummySquad, EnemySquad, DummySquad.CurrentLeader.CurrentAttack, new GameScreens.BattleMapScreen.BattleMap.SquadBattleResult(), new AnimationScreen.AnimationUnitStats(DummySquad, EnemySquad, false), null, null, "", false); DummyTimeline.AnimationMarker.ListAnimationLayer = new AnimationClass.AnimationLayerHolder(); DummyTimeline.AnimationMarker.ListAnimationLayer.EngineLayer = AnimationClass.GameEngineLayer.EmptyGameEngineLayer(DummyTimeline.AnimationMarker); DummyTimeline.AnimationMarker.LoopEnd = 60; DummyTimeline.AnimationMarker.AnimationOrigin.Position = new Vector2(580, 300); DummyTimeline.AnimationMarker.AnimationOrigin.DicAnimationKeyFrame[0].Position = new Vector2(580, 300); DummyTimeline.Add(0, new VisibleAnimationObjectKeyFrame(new Vector2(50, 300), true, -1)); AnimationClass.AnimationLayer DummyLayer = new AnimationClass.AnimationLayer(DummyTimeline.AnimationMarker, "Layer 1"); DummyLayer.AddTimelineEvent(0, new BlankTimeline(580, 300, 30, 50)); DummyTimeline.AnimationMarker.ListAnimationLayer.Add(DummyLayer); return(DummyTimeline); }
private MarkerTimeline CreateDummyMarkerTimeline(Vector2 Position) { MarkerTimeline DummyTimeline = new MarkerTimeline(); DummyTimeline.DeathFrame = 60; DummyTimeline.AnimationMarker = new AnimationClass(""); DummyTimeline.AnimationMarker.ListAnimationLayer = new AnimationClass.AnimationLayerHolder(); DummyTimeline.AnimationMarker.ListAnimationLayer.EngineLayer = AnimationClass.GameEngineLayer.EmptyGameEngineLayer(DummyTimeline.AnimationMarker); DummyTimeline.AnimationMarker.LoopEnd = 60; DummyTimeline.AnimationMarker.AnimationOrigin.Position = new Vector2(580, 300); DummyTimeline.AnimationMarker.AnimationOrigin.DicAnimationKeyFrame[0].Position = new Vector2(580, 300); DummyTimeline.Add(0, new VisibleAnimationObjectKeyFrame(Position, true, -1)); DummyTimeline.Position = Position; AnimationClass.AnimationLayer DummyLayer = new AnimationClass.AnimationLayer(DummyTimeline.AnimationMarker, "Layer 1"); DummyLayer.AddTimelineEvent(0, new BlankTimeline(580, 300, 30, 50)); DummyTimeline.AnimationMarker.ListAnimationLayer.Add(DummyLayer); return(DummyTimeline); }
private void CreateDummyAnimation(Squad DummySquad, Squad EnemySquad, int AnimationIndex = 0) { this.DummySquad = DummySquad; this.EnemySquad = EnemySquad; DummyAnimation = new AnimationScreen("", DummyMap, DummySquad, EnemySquad, DummySquad.CurrentLeader.CurrentAttack, new GameScreens.BattleMapScreen.BattleMap.SquadBattleResult(), new AnimationScreen.AnimationUnitStats(DummySquad, EnemySquad, false), null, null, "", false); DummyAnimation.ListAnimationLayer = new AnimationClass.AnimationLayerHolder(); DummyAnimation.ListAnimationLayer.EngineLayer = AnimationClass.GameEngineLayer.EmptyGameEngineLayer(DummyAnimation); DummyAnimation.LoopEnd = 30; DummyAnimation.AnimationOrigin.Position = new Vector2(580, 300); DummyAnimation.AnimationOrigin.DicAnimationKeyFrame[0].Position = new Vector2(580, 300); DummyLayer = new AnimationClass.AnimationLayer(DummyAnimation, "Layer 1"); if (AnimationIndex > 0) { MarkerTimeline DummyMarker = CreateDummyMarkerTimeline(); DummyLayer.AddTimelineEvent(0, DummyMarker); } DummyAnimation.ListAnimationLayer.Add(DummyLayer); DummyAnimation.UpdateKeyFrame(0); foreach (KeyValuePair <int, Timeline> ActiveExtraTimeline in DummySquad.CurrentLeader.ListAttack[1].Animations[0].Animations.ArrayAnimationPath[AnimationIndex].GetExtraTimelines(DummyAnimation)) { DummyLayer.AddTimelineEvent(ActiveExtraTimeline.Key, ActiveExtraTimeline.Value); } }
public static void InitBattleAnimation(AnimationClass EnemyUnitAnimation, AnimationClass EnemyUnitAnimationAfterDamage, string EnemyUnitDeathAnimation) { int NumberOfEnemies = EnemyUnitAnimation.ListAnimationLayer[0].ListActiveMarker.Count; int NumberOfEnemiesAfterDamage = EnemyUnitAnimationAfterDamage.ListAnimationLayer[0].ListActiveMarker.Count; int NumberOfDeadEnemies = NumberOfEnemies - NumberOfEnemiesAfterDamage; List <int> ListUnitAnimationIndex = new List <int>(); Random Random = new Random(); int DeathFrame = EnemyUnitAnimation.ListAnimationLayer[0].ListActiveMarker[0].DeathFrame; for (int i = 0; i < NumberOfEnemies; ++i) { ListUnitAnimationIndex.Add(i); } for (int i = 0; i < NumberOfDeadEnemies; ++i) { int ActiveIndex = ListUnitAnimationIndex[Random.Next(ListUnitAnimationIndex.Count)]; MarkerTimeline ActiveUnitTimeline = EnemyUnitAnimation.ListAnimationLayer[0].ListActiveMarker[ActiveIndex]; ActiveUnitTimeline.AnimationMarker = new AnimationClass(EnemyUnitDeathAnimation); ActiveUnitTimeline.AnimationMarker.DicTimeline = EnemyUnitAnimation.DicTimeline; ActiveUnitTimeline.AnimationMarker.Load(); } }
public override void Load() { fntFinlanderFont = Content.Load <SpriteFont>("Fonts/Finlander Font"); foreach (KeyValuePair <string, Timeline> Timeline in LoadTimelines(typeof(CoreTimeline))) { if (Timeline.Value is AnimationOriginTimeline) { continue; } DicTimeline.Add(Timeline.Key, Timeline.Value); } base.Load(); InitRessources(); for (int L = ListAnimationLayer.Count - 1; L >= 0; --L) { #region Markers foreach (List <Timeline> ListActiveEvent in ListAnimationLayer[L].DicTimelineEvent.Values) { foreach (Timeline ActiveTimeline in ListActiveEvent) { MarkerTimeline ActiveMarkerEvent = ActiveTimeline as MarkerTimeline; if (ActiveMarkerEvent == null) { continue; } switch (ActiveMarkerEvent.MarkerType) { case "Card": ActiveMarkerEvent.Sprite = sprEnemyCard; break; } ActiveMarkerEvent.Sprite = sprEnemyCard; } } #endregion #region Init renderTarget ListAnimationLayer[L].renderTarget = new RenderTarget2D( GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth, GraphicsDevice.PresentationParameters.BackBufferHeight); #endregion } }
public override void Load() { if (IsLoaded) { return; } IsLoaded = true; fntFinlanderFont = Content.Load <SpriteFont>("Fonts/Finlander Font"); sprBarExtraLargeBackground = Content.Load <Texture2D>("Battle/Bars/Extra Long Bar"); sprBarExtraLargeEN = Content.Load <Texture2D>("Battle/Bars/Extra Long Energy"); sprBarExtraLargeHP = Content.Load <Texture2D>("Battle/Bars/Extra Long Health"); sprInfinity = Content.Load <Texture2D>("Battle/Infinity"); foreach (KeyValuePair <string, Timeline> Timeline in LoadTimelines(typeof(CoreTimeline))) { if (Timeline.Value is AnimationOriginTimeline) { continue; } DicTimeline.Add(Timeline.Key, Timeline.Value); } foreach (KeyValuePair <string, Timeline> Timeline in LoadTimelines(typeof(DeathmatchMapTimeline), this, Content)) { DicTimeline.Add(Timeline.Key, Timeline.Value); } base.Load(); InitRessources(); Unit ActiveUnit = AttackingSquad.CurrentLeader; Unit EnemyUnit = EnemySquad.CurrentLeader; for (int L = ListAnimationLayer.Count - 1; L >= 0; --L) { #region Markers foreach (List <Timeline> ListActiveEvent in ListAnimationLayer[L].DicTimelineEvent.Values) { foreach (Timeline ActiveTimeline in ListActiveEvent) { MarkerTimeline ActiveMarkerEvent = ActiveTimeline as MarkerTimeline; if (ActiveMarkerEvent == null) { continue; } string AnimationPath = ""; switch (ActiveMarkerEvent.MarkerType) { case "Support Stand": case "Support Standing": case "Enemy Standing": case "Enemy Stand": case "Enemy Default": ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemyUnit.Animations.Default.AnimationName); break; case "Enemy Wingman A Standing": case "Enemy Wingman 1 Standing": if (EnemySquad.CurrentWingmanA != null) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemySquad.CurrentWingmanA.Animations.Default.AnimationName); } break; case "Enemy Wingman B Standing": case "Enemy Wingman 2 Standing": if (EnemySquad.CurrentWingmanB != null) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemySquad.CurrentWingmanB.Animations.Default.AnimationName); } break; case "Enemy Hit": if (BattleResult.ArrayResult[0].AttackMissed) { AnimationPath = EnemyUnit.Animations.Default.AnimationName; } else { AnimationPath = EnemyUnit.Animations.Hit.AnimationName; } if (File.Exists("Content/Animations/" + AnimationPath + ".pea")) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(AnimationPath); } else { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemyUnit.Animations.Default.AnimationName); } break; case "Player Stand": case "Player Standing": case "Player Default": ActiveMarkerEvent.AnimationMarker = new AnimationClass(ActiveUnit.Animations.Default.AnimationName); break; default: AnimationPath = EnemyUnit.Animations.Default.AnimationName; if (ActiveMarkerEvent.MarkerType.StartsWith("Player ")) { AnimationPath = ActiveMarkerEvent.MarkerType.Split(new string[] { "Player " }, StringSplitOptions.RemoveEmptyEntries)[0]; } ActiveMarkerEvent.AnimationMarker = new AnimationClass(AnimationPath); break; } ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); } } #endregion #region Quotes foreach (QuoteSetTimeline.QuoteSetKeyFrame ActiveKeyFrame in ((QuoteSetTimeline)ListAnimationLayer.EngineLayer.DicTimelineEvent[0][1]).DicAnimationKeyFrame.Values) { Quote ActiveQuote = ActiveKeyFrame.QuoteSet; int QuoteSetIndex = 0; int QuoteSetCount = 0; //Once a Quote is selected, keep it, if random quotes are needed, use multiple QuoteSet. //If the number of QuoteSet changed, assume the user did something wrong and get a new index. if (ActiveQuote.ListQuoteSet.Count > 1 && QuoteSetCount != ActiveQuote.ListQuoteSet.Count) { QuoteSetCount = ActiveQuote.ListQuoteSet.Count; QuoteSetIndex = Random.Next(ActiveQuote.ListQuoteSet.Count); ActiveQuote.SelectedQuoteSet = QuoteSetIndex; } Quote.Targets ActiveTarget = ActiveQuote.Target; QuoteSet ActiveQuoteSet = ActiveQuote.ActiveQuoteSet; Character ActivePilot = ActiveUnit.Pilot; Character EnemyPilot = EnemyUnit.Pilot; if (ActiveTarget == Quote.Targets.Defender) { ActivePilot = EnemyUnit.Pilot; EnemyPilot = ActiveUnit.Pilot; } bool UseRandomIndex = !ActiveQuoteSet.QuoteSetUseLast && ActiveQuoteSet.QuoteSetChoice == QuoteSet.QuoteSetChoices.Random; QuoteSet.QuoteStyles QuoteStyle = ActiveQuoteSet.QuoteStyle; int QuoteIndex = 0; if (ActiveQuoteSet.QuoteSetChoice == QuoteSet.QuoteSetChoices.Fixed) { QuoteIndex = ActiveQuoteSet.QuoteSetChoiceValue; } Tuple <string, string> ActiveQuoteTuple; switch (QuoteStyle) { case QuoteSet.QuoteStyles.Reaction: QuoteTypes ActiveQuoteType = QuoteTypes.Damaged; ActiveQuoteTuple = GetQuote(ActiveQuoteType, ActivePilot, EnemyPilot, UseRandomIndex, ref QuoteIndex); ActiveQuote.ActiveText = ActiveQuoteTuple.Item2; ActiveQuote.PortraitPath = ActiveQuoteTuple.Item1; break; case QuoteSet.QuoteStyles.QuoteSet: ActiveQuoteTuple = GetAttackQuote(ActiveQuoteSet.QuoteSetName, ActivePilot, EnemyPilot, UseRandomIndex, ref QuoteIndex); ActiveQuote.ActiveText = ActiveQuoteTuple.Item2; ActiveQuote.PortraitPath = ActiveQuoteTuple.Item1; break; case QuoteSet.QuoteStyles.Custom: ActiveQuote.ActiveText = ActiveQuoteSet.CustomText; break; case QuoteSet.QuoteStyles.MoveIn: ActiveQuoteTuple = GetQuote(QuoteTypes.BattleStart, ActivePilot, EnemyPilot, UseRandomIndex, ref QuoteIndex); ActiveQuote.ActiveText = ActiveQuoteTuple.Item2; ActiveQuote.PortraitPath = ActiveQuoteTuple.Item1; break; } if (!string.IsNullOrEmpty(ActiveQuote.PortraitPath)) { if (ActiveQuote.PortraitPath.StartsWith("Animations")) { ActiveQuote.ActiveCharacter = new SimpleAnimation("", ActiveQuote.PortraitPath, new AnimationLooped(ActiveQuote.PortraitPath)); ActiveQuote.ActiveCharacter.ActiveAnimation.Content = Content; ActiveQuote.ActiveCharacter.ActiveAnimation.Load(); } else { ActiveQuote.ActiveCharacter = new SimpleAnimation("", ActiveQuote.PortraitPath, Content.Load <Texture2D>(ActiveQuote.PortraitPath)); } } } #endregion #region Init renderTarget ListAnimationLayer[L].renderTarget = new RenderTarget2D( GraphicsDevice, GraphicsDevice.PresentationParameters.BackBufferWidth, GraphicsDevice.PresentationParameters.BackBufferHeight); #endregion } }
public override void Load() { foreach (KeyValuePair <string, Timeline> Timeline in LoadTimelines(typeof(CoreTimeline))) { if (Timeline.Value is AnimationOriginTimeline) { continue; } DicTimeline.Add(Timeline.Key, Timeline.Value); } base.Load(); InitRessources(); for (int L = ListAnimationLayer.Count - 1; L >= 0; --L) { #region Markers foreach (List <Timeline> ListActiveEvent in ListAnimationLayer[L].DicTimelineEvent.Values) { foreach (Timeline ActiveTimeline in ListActiveEvent) { MarkerTimeline ActiveMarkerEvent = ActiveTimeline as MarkerTimeline; if (ActiveMarkerEvent == null) { continue; } switch (ActiveMarkerEvent.MarkerType) { case "Player Idle": case "Player Stand": case "Player Standing": case "Player Default": ActiveMarkerEvent.AnimationMarker = new AnimationClass("Conquest/" + ActiveUnit.ArmourType + "/Idle"); break; case "Player Attack": case "Player Attacking": ActiveMarkerEvent.AnimationMarker = new AnimationClass("Conquest/" + ActiveUnit.ArmourType + "/Attack"); break; } ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); } } #endregion #region Init renderTarget ListAnimationLayer[L].renderTarget = new RenderTarget2D( GraphicsDevice, ScreenWidth, ScreenHeight); #endregion } }
public override void OnMarkerTimelineSpawn(AnimationLayer ActiveLayer, MarkerTimeline ActiveMarker) { base.OnMarkerTimelineSpawn(ActiveLayer, ActiveMarker); ActiveMarker.UpdateAnimationObject(ActiveMarker.SpawnFrame); }
private void InitMarkers(AnimationLayer ActiveLayer, Squad AttackingSquad, Squad EnemySquad) { Unit ActiveUnit = AttackingSquad.CurrentLeader; Unit EnemyUnit = EnemySquad.CurrentLeader; foreach (List <Timeline> ListActiveEvent in ActiveLayer.DicTimelineEvent.Values) { foreach (Timeline ActiveTimeline in ListActiveEvent) { MarkerTimeline ActiveMarkerEvent = ActiveTimeline as MarkerTimeline; if (ActiveMarkerEvent == null) { continue; } string AnimationPath; switch (ActiveMarkerEvent.MarkerType) { case "Support Stand": case "Support Standing": case "Enemy Standing": case "Enemy Stand": case "Enemy Default": ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemyUnit.Animations.Default.AnimationName); ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], EnemySquad, AttackingSquad); } break; case "Enemy Wingman A Standing": case "Enemy Wingman 1 Standing": if (EnemySquad.CurrentWingmanA != null) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemySquad.CurrentWingmanA.Animations.Default.AnimationName); ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], EnemySquad, AttackingSquad); } } break; case "Enemy Wingman B Standing": case "Enemy Wingman 2 Standing": if (EnemySquad.CurrentWingmanB != null) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemySquad.CurrentWingmanB.Animations.Default.AnimationName); ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], EnemySquad, AttackingSquad); } } break; case "Enemy Hit": if (BattleResult.ArrayResult[0].AttackMissed) { AnimationPath = EnemyUnit.Animations.Default.AnimationName; } else { AnimationPath = EnemyUnit.Animations.Hit.AnimationName; } if (File.Exists("Content/Animations/" + AnimationPath + ".pea")) { ActiveMarkerEvent.AnimationMarker = new AnimationClass(AnimationPath); } else { ActiveMarkerEvent.AnimationMarker = new AnimationClass(EnemyUnit.Animations.Default.AnimationName); } ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], EnemySquad, AttackingSquad); } break; case "Player Stand": case "Player Standing": case "Player Default": ActiveMarkerEvent.AnimationMarker = new AnimationClass(ActiveUnit.Animations.Default.AnimationName); ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], AttackingSquad, EnemySquad); } break; default: AnimationPath = EnemyUnit.Animations.Default.AnimationName; if (ActiveMarkerEvent.MarkerType.StartsWith("Player ")) { AnimationPath = ActiveMarkerEvent.MarkerType.Split(new string[] { "Player " }, StringSplitOptions.RemoveEmptyEntries)[0]; } ActiveMarkerEvent.AnimationMarker = new AnimationClass(AnimationPath); ActiveMarkerEvent.AnimationMarker.DicTimeline = DicTimeline; ActiveMarkerEvent.AnimationMarker.Load(); for (int L = ActiveMarkerEvent.AnimationMarker.ListAnimationLayer.Count - 1; L >= 0; --L) { InitMarkers(ActiveMarkerEvent.AnimationMarker.ListAnimationLayer[L], AttackingSquad, EnemySquad); } break; } } } }