Display current boss fight

rabi_display
wcko87 8 years ago
parent 2fe76eb65c
commit d8f44fb9b2
  1. 26
      rabi_splitter_WPF/InGameState.cs
  2. 80
      rabi_splitter_WPF/RabiRibiDisplay.cs

@ -20,12 +20,19 @@ namespace rabi_splitter_WPF
public int nDeathsAlt;
public InGameActivity currentActivity;
public BossFight currentBossFight;
public DateTime currentBossStartTime;
public BossFight lastBossFight;
public TimeSpan lastBossFightDuration;
public int lastNonZeroPlayTime = -1;
public InGameState()
{
currentActivity = InGameActivity.STARTING;
currentBossFight = null;
lastBossFight = null;
}
public bool CurrentActivityIs(InGameActivity gameActivity)
@ -38,6 +45,25 @@ namespace rabi_splitter_WPF
return !CurrentActivityIs(InGameActivity.STARTING);
}
public void StartBossFight(BossFight bossFight)
{
currentActivity = InGameActivity.BOSS_BATTLE;
currentBossStartTime = DateTime.Now;
currentBossFight = bossFight;
}
public void StopBossFight()
{
currentActivity = InGameActivity.WALKING;
currentBossFight = null;
}
public void FinishBossFight()
{
lastBossFight = currentBossFight;
lastBossFightDuration = (DateTime.Now - currentBossStartTime);
currentActivity = InGameActivity.WALKING;
currentBossFight = null;
}
}
}

@ -81,17 +81,25 @@ namespace rabi_splitter_WPF
DebugLog("IGT start?");
}
} else {
if (MusicChanged())
}
#endregion
#region Detect Reload
bool reloading = snapshot.playtime == 0 || ((prevSnapshot != null) && (snapshot.playtime < prevSnapshot.playtime));
if (inGameState.IsGameStarted() && snapshot.playtime > 0)
{
if (snapshot.playtime < inGameState.lastNonZeroPlayTime)
{
if (StaticData.IsBossMusic(snapshot.musicid))
{
inGameState.currentActivity = InGameActivity.BOSS_BATTLE;
}
else
if (InGame())
{
inGameState.currentActivity = InGameActivity.WALKING;
inGameState.nRestarts++;
UpdateTextFile();
}
DebugLog("Reload Game! " + snapshot.playtime + " <- " + inGameState.lastNonZeroPlayTime);
}
inGameState.lastNonZeroPlayTime = snapshot.playtime;
}
#endregion
@ -117,8 +125,22 @@ namespace rabi_splitter_WPF
DebugLog($"Minimap Shift! {prevSnapshot.minimapPosition} -> {snapshot.minimapPosition}");
if (snapshot.minimapPosition == 1)
{
DebugLog($"BOSS FIGHT: {BossFightIdentifier.IdentifyBossFight(snapshot).displayName}");
var bossFight = BossFightIdentifier.IdentifyBossFight(snapshot);
DebugLog($"BOSS FIGHT: {bossFight.displayName}");
DebugLog($"Fighting Bosses: {string.Join(", ", snapshot.bossList.Select(boss => StaticData.GetBossName(boss.id)))}");
inGameState.StartBossFight(bossFight);
}
else // snapshot.minimapPosition == 0
{
if (reloading)
{
inGameState.StopBossFight();
}
else
{
inGameState.FinishBossFight();
}
}
}
@ -144,25 +166,6 @@ namespace rabi_splitter_WPF
#endregion
#region Detect Reload
bool reloading = snapshot.playtime == 0 || ((prevSnapshot != null) && (snapshot.playtime < prevSnapshot.playtime));
if (inGameState.IsGameStarted() && snapshot.playtime > 0)
{
if (snapshot.playtime < inGameState.lastNonZeroPlayTime)
{
if (InGame())
{
inGameState.nRestarts++;
UpdateTextFile();
}
DebugLog("Reload Game! " + snapshot.playtime + " <- " + inGameState.lastNonZeroPlayTime);
}
inGameState.lastNonZeroPlayTime = snapshot.playtime;
}
#endregion
#region Detect Death
if (prevSnapshot != null)
@ -237,6 +240,29 @@ namespace rabi_splitter_WPF
mainContext.Text15 = $"Map Tile: ({snapshot.mapTile.x}, {snapshot.mapTile.y})";
{
if (inGameState.CurrentActivityIs(InGameActivity.BOSS_BATTLE))
{
var time = DateTime.Now - inGameState.currentBossStartTime;
mainContext.Text16 = $"Boss: {inGameState.currentBossFight.displayName}\n" +
$"Time: {time:mm\\:ss\\.ff}";
}
else
{
mainContext.Text16 = "Not in boss fight";
}
if (inGameState.lastBossFight != null)
{
mainContext.Text17 = $"Last Boss: {inGameState.lastBossFight.displayName}\n" +
$"Time: {inGameState.lastBossFightDuration:mm\\:ss\\.ff}";
}
else
{
mainContext.Text17 = "Last Boss: None";
}
}
{
string bosstext = "Boss Fight: " + (inGameState.currentActivity == InGameActivity.BOSS_BATTLE) + "\n";
bosstext += "Bosses: " + snapshot.bossList.Count + "\n";

Loading…
Cancel
Save