Код:
using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
using System.Diagnostics;
public class Mission : AMission
{
bool AIGroundDestr = false;
bool AIAircraftDestr = false;
bool TestTimer1 = false;
bool TestTimer2 = false;
Stopwatch Test = new Stopwatch();
Stopwatch Test2 = new Stopwatch();
public override void OnBattleStarted()
{
base.OnBattleStarted();
MissionNumberListener = -1;
Test.Start();
}
public override void OnTickGame()
{
base.OnTickGame();
if ((Test.Elapsed.Seconds >=30) && (TestTimer1 == true))
{
Test.Reset();
GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/test-sub.mis");
GamePlay.gpLogServer(null, "blue flight loaded", new object[] { });
}
if ((Test2.Elapsed.Seconds >=40) && (TestTimer2 == true))
{
Test2.Reset();
GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/InterceptR1.mis");
GamePlay.gpLogServer(null, "red flight loaded", new object[] { });
}
}
public override void OnActorCreated(int missionNumber, string shortName, AiActor actor)
{
base.OnActorCreated(missionNumber, shortName, actor);
if ((actor is AiGroundActor) && (AIGroundDestr == true))
Timeout(15, () =>
{
if (actor != null)
{
(actor as AiGroundActor).Destroy();
GamePlay.gpHUDLogCenter(null, " Groundunits destroyed 15seconds after creation", new object[] {});
}
}
);
else if ((actor is AiAircraft) && (AIAircraftDestr == true))
{
Timeout(30, () =>
{
AiAircraft aircraft = actor as AiAircraft;
Player player = null;
for (int i = 0; i < aircraft.Places(); i++)
{
if (aircraft.Player(i) != null)
{
player = aircraft.Player(i);
break;
}
}
if (player != null)
{
GamePlay.gpHUDLogCenter(new Player[] { player }, "You were removed!", new object[] { });
return;
}
else
(actor as AiAircraft).Destroy();
GamePlay.gpHUDLogCenter(null, " AiAircrafts destroyed 30 seconds after creation", new object[] {});
}
);
}
}
bool dmgOn = false;
private void setMainMenu(Player player)
{
GamePlay.gpSetOrderMissionMenu(player, false, 0, new string[] { "Options 1 - blue flight loading", "Options 2 - red flight loading" }, new bool[] { true, true });
}
private void setSubMenu(Player player)
{
GamePlay.gpSetOrderMissionMenu(player, true, 1, new string[] { "Load Blue Flight", "AirGroundDestr true - Grondunits will be destroyed after 15sec", "AIAircraftDestr true - Aircraft will be destroyed after 30sec", "AIGroundDestr false - Groundunits will not be destroyed", "AIAircraftDestr false - Aircraft will not be destroyed" }, new bool[] {true, true, true, true, true });
}
private void setSubMenu2(Player player)
{
GamePlay.gpSetOrderMissionMenu(player, true, 2, new string[] { "Load Red Flight", "TestTimer 1 True - blue flights loaded every 30 sec", "TestTimer 2 True - red flights load every 40 sec", }, new bool[] { true, true, true });
}
public override void OnOrderMissionMenuSelected(Player player, int ID, int menuItemIndex)
{
base.OnOrderMissionMenuSelected(player, ID, menuItemIndex);
if (ID == 0)
{ // main menu
if (menuItemIndex == 1)
{
GamePlay.gpHUDLogCenter(new Player[] { player }, "Options 1 - blue flight loading/switching destroying OnActorCreated", new object[] {});
setSubMenu(player);
}
if (menuItemIndex == 2)
{
GamePlay.gpHUDLogCenter(new Player[] { player }, "Options 2 - red flight loading/ repeated loading on timer on ", new object[] { });
setSubMenu2(player);
}
}
else if (ID == 1)
{ // sub menu
switch (menuItemIndex)
{
case 1:
GamePlay.gpLogServer(null, "Load Blue Flight", null);
GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/test-sub.mis");
setMainMenu(player);
break;
case 2:
GamePlay.gpLogServer(new Player[] { player }, "AiGroundDestroy true", null);
AIGroundDestr = true;
setMainMenu(player);
break;
case 3:
GamePlay.gpLogServer(new Player[] { player }, "AIAircraftDestroy true", null);
AIAircraftDestr = true;
setMainMenu(player);
break;
case 4:
GamePlay.gpLogServer(new Player[] { player }, "AIGround Destroy false", null);
AIGroundDestr = false;
setMainMenu(player);
break;
case 5:
GamePlay.gpLogServer(new Player[] { player }, "AIAircraft Destroy false", null);
AIAircraftDestr = false;
setMainMenu(player);
break;
case 0:
setMainMenu(player);
break;
}
}
else if (ID == 2)
{ // sub menu
switch (menuItemIndex)
{
case 1:
GamePlay.gpLogServer(new Player[] { player }, "Load Red Flight", null);
GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/test/InterceptR1.mis");
setMainMenu(player);
break;
case 2:
GamePlay.gpLogServer(new Player[] { player }, "TestTimer1 true", null);
TestTimer1 = true;
Test.Start();
setMainMenu(player);
break;
case 3:
GamePlay.gpLogServer(new Player[] { player }, "TestTimer2 true", null);
TestTimer2 = true;
Test.Start();
setMainMenu(player);
break;
case 0:
setMainMenu(player);
break;
}
}
}
public override void OnPlaceEnter(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceEnter(player, actor, placeIndex);
if(player != null)
{
setMainMenu(player);
}
}
}