Skip to content
This repository was archived by the owner on Jun 11, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
264 changes: 264 additions & 0 deletions GUI/Prefabs/RaiseDead.xml

Large diffs are not rendered by default.

17 changes: 17 additions & 0 deletions GUI/Prefabs/VCMapOverlay.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Prefab>
<Window>
<Widget WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" VerticalAlignment="Center" HorizontalAlignment="Right" Sprite="BlankWhiteSquare_9" Color="#999999FF" AlphaFactor="0.0">
<Children>
<ListPanel WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Right" VerticalAlignment="Center">
<Children>
<ButtonWidget WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Right" VerticalAlignment="Bottom" Brush="ButtonBrush1" Command.Click="Click" IsEnabled="true">
<Children>
<RichTextWidget DoNotAcceptEvents="true" WidthSizePolicy="CoverChildren" HeightSizePolicy="CoverChildren" HorizontalAlignment="Right" VerticalAlignment="Center" Brush="OverlayPopup.ButtonText" Brush.FontSize="20" Text="Raise Dead" />
</Children>
</ButtonWidget>
</Children>
</ListPanel>
</Children>
</Widget>
</Window>
</Prefab>
117 changes: 117 additions & 0 deletions RaiseDead/RaiseDeadBehavior.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
using System;
using TaleWorlds.CampaignSystem;
using TaleWorlds.Core;
using TaleWorlds.Engine.GauntletUI;
using TaleWorlds.Engine.Screens;
using TaleWorlds.Library;
using TaleWorlds.GauntletUI.Data;


namespace TOW_Core
{
class RaiseDeadBehavior
{
private static GauntletLayer layer;
private static GauntletMovie gauntletMovie;
private static RaiseDeadVM raiseDeadVM;

private static GauntletLayer layer2;
private static GauntletMovie gauntletMovie2;
private static VCMapOverlayVM VCMapOverlayVM;

public static void CreateRaiseDeadButton()
{
if (Game.Current != null && Game.Current.GameStateManager != null && Game.Current.GameStateManager.ActiveState != null && Game.Current.GameStateManager.ActiveState.GetType() == typeof(MapState) && !Game.Current.GameStateManager.ActiveState.IsMission && !Game.Current.GameStateManager.ActiveState.IsMenuState && Hero.MainHero.Culture.StringId == "khuzait" && layer2 == null && layer == null)
{
CreateVCMapOverlay();
}
else if(Game.Current.GameStateManager.ActiveState.GetType() != typeof(MapState) || Game.Current.GameStateManager.ActiveState.IsMission || Game.Current.GameStateManager.ActiveState.IsMenuState || Hero.MainHero.Culture.StringId != "khuzait")
{
DeleteOverlayVMLayer();
}
}

private static void CreateVCMapOverlay()
{
try
{
if (layer2 != null)
{
return;
}
layer2 = new GauntletLayer(1200);
if (VCMapOverlayVM == null)
{
VCMapOverlayVM = new VCMapOverlayVM();
}
gauntletMovie2 = (GauntletMovie)layer2.LoadMovie("VCMapOverlay", (ViewModel)VCMapOverlayVM);
layer2.InputRestrictions.SetInputRestrictions();
ScreenManager.TopScreen.AddLayer((ScreenLayer)layer2);
layer2.IsFocusLayer = true;
ScreenManager.TrySetFocus((ScreenLayer)layer2);
}
catch (Exception ex)
{
InformationManager.DisplayMessage(new InformationMessage(ex.ToString()));
Console.WriteLine((object)ex);
}
}

public static void DeleteOverlayVMLayer()
{
ScreenBase topScreen = ScreenManager.TopScreen;
if (layer2 != null)
{
if (gauntletMovie2 != null)
{
layer2.ReleaseMovie(gauntletMovie2);
}
topScreen.RemoveLayer((ScreenLayer)layer2);
}
layer2 = null;
gauntletMovie2 = null;
}

public static void CreateVMLayer()
{
try
{
if (layer != null)
{
return;
}
layer = new GauntletLayer(1000);
if (raiseDeadVM == null)
{
raiseDeadVM = new RaiseDeadVM();
}
raiseDeadVM.UpdateValues();
gauntletMovie = (GauntletMovie) layer.LoadMovie("RaiseDead", (ViewModel)raiseDeadVM);
layer.InputRestrictions.SetInputRestrictions();
ScreenManager.TopScreen.AddLayer((ScreenLayer)layer);
layer.IsFocusLayer = true;
ScreenManager.TrySetFocus((ScreenLayer)layer);
}
catch (Exception ex)
{
InformationManager.DisplayMessage(new InformationMessage(ex.ToString()));
Console.WriteLine((object)ex);
}
}

public static void DeleteVMLayer()
{
ScreenBase topScreen = ScreenManager.TopScreen;
if (layer != null)
{
if (gauntletMovie != null)
{
layer.ReleaseMovie(gauntletMovie);
}
topScreen.RemoveLayer((ScreenLayer)layer);
}
layer = null;
gauntletMovie = null;
}
}
}
Loading