UltimateZoneBuilder/Source/Plugins/UDBScript/RuntimeConstraint.cs
biwa 5b2b149b40
UDBScript version 5 (#819)
Improved UDBScript to version 5:

- Added Plane class
- Added BlockMap, BlockEntry, and BlackMapQueryResult classes
- Sector class
  - Added getLabelPositions method to get the position of sector labels (where tags, effects etc. are displayed)
- Added support for JavaScript BigInt for UDMF fields. This means it's not necessary anymore to use UniValue to assign integers to new UDMF fields. Instead it can be done like this: sector.fields.my_int_field = 1n;
- Added type information file (udbscript.d.ts)
2022-11-13 01:15:17 +01:00

89 lines
2 KiB
C#

#region ================== Copyright (c) 2020 Boris Iwanski
/*
* This program is free software: you can redistribute it and/or modify
*
* it under the terms of the GNU General Public License as published by
*
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
*
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the
*
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.If not, see<http://www.gnu.org/licenses/>.
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CodeImp.DoomBuilder;
using Jint;
#endregion
namespace CodeImp.DoomBuilder.UDBScript
{
class RuntimeConstraint : Constraint
{
#region ================== Constants
private const long CHECK_MILLISECONDS = 5000;
#endregion
#region ================== Variables
private Stopwatch stopwatch;
#endregion
#region ================== Constructor
public RuntimeConstraint(Stopwatch stopwatch)
{
this.stopwatch = stopwatch;
}
#endregion
#region ================== Methods
public override void Reset()
{
}
/// <summary>
/// Checks how long the script has been running and asks the user if it should abort or keep running
/// </summary>
public override void Check()
{
if(stopwatch.ElapsedMilliseconds > CHECK_MILLISECONDS)
{
DialogResult result = MessageBox.Show("The script has been running for some time, want to stop it?", "Script", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
throw new UserScriptAbortException();
else
{
stopwatch.Restart();
}
}
}
#endregion
}
}