Полная версия, с таблицей достижений:
Код:
//$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Xaml.dll"
//$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\WindowsBase.dll"
//$reference "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\PresentationFramework.dll"
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Windows;
using maddox.game;
using maddox.game.world;
public class Mission : AMission
{
private void Log(string format, params object[] args)
{
GamePlay.gpLogServer(new[] { GamePlay.gpPlayer() }, string.Format(CultureInfo.InvariantCulture, format, args), null);
}
public override void OnBattleInit()
{
base.OnBattleInit();
try
{
// Master-mission
if (true)
{
var player = GamePlay.gpPlayer();
var pscore = PlayerScore.Get(player.Name());
Log("********Initial PlayerScore {0}", pscore);
}
// Submission
Timeout(5, () =>
{
var player = GamePlay.gpPlayer();
var pscore = PlayerScore.Get(player.Name());
pscore.KillsGnd++;
pscore.Score += 10;
Log("********PlayerScore After Tank Destroyed {0}", pscore);
});
// Another submission
Timeout(10, () =>
{
var player = GamePlay.gpPlayer();
var pscore = PlayerScore.Get(player.Name());
pscore.KillsAir++;
pscore.Score += 50;
Log("********PlayerScore After Aircraft Killed {0}", pscore);
});
}
catch (Exception error)
{
Log("********EXCEPTION: {0}", error);
}
}
class PlayerScore
{
public string Name { get; private set; }
public double Score { get; set; }
public int KillsAir { get; set; }
public int KillsGnd { get; set; }
public override string ToString()
{
return string.Format(CultureInfo.InvariantCulture,
"Name:{0} Score:{1} KillsAir/Ground: {2}/{3}", Name, Score, KillsAir, KillsGnd);
}
public static PlayerScore Get(string pname)
{
if (Application.Current == null)
{
new Application();
}
string token = "AF2505FCA";
Dictionary<string, PlayerScore> table = null;
if (Application.Current.Properties.Contains(token))
{
table = (Dictionary<string, PlayerScore>)Application.Current.Properties[token];
}
else Application.Current.Properties.Add(token, table = new Dictionary<string, PlayerScore>());
PlayerScore pscore = null;
if (table.TryGetValue(pname, out pscore) == false)
{
table.Add(pname, pscore = new PlayerScore() { Name = pname });
}
return pscore;
}
}
}