Expose WAngle to Lua API and deprecate old Facing.
This commit is contained in:
@@ -75,6 +75,20 @@ namespace OpenRA.Mods.Common.Scripting
|
||||
return init;
|
||||
}
|
||||
|
||||
// HACK: Forward compatibility for future WAngle facings
|
||||
var facingInit = init as FacingInit;
|
||||
if (facingInit != null)
|
||||
{
|
||||
WAngle angle;
|
||||
if (value.TryGetClrValue(out angle))
|
||||
{
|
||||
facingInit.Initialize(angle.Facing);
|
||||
return facingInit;
|
||||
}
|
||||
|
||||
Game.Debug("Initializing Facing with integers is deprecated. Use Angle instead.");
|
||||
}
|
||||
|
||||
var initializers = initType.GetMethods(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
|
||||
.Where(m => m.Name == "Initialize" && m.GetParameters().Length == 1);
|
||||
|
||||
|
||||
34
OpenRA.Mods.Common/Scripting/Global/AngleGlobal.cs
Normal file
34
OpenRA.Mods.Common/Scripting/Global/AngleGlobal.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* available to you 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. For more
|
||||
* information, see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using OpenRA.Scripting;
|
||||
|
||||
namespace OpenRA.Mods.Common.Scripting.Global
|
||||
{
|
||||
[ScriptGlobal("Angle")]
|
||||
public class AngleGlobal : ScriptGlobal
|
||||
{
|
||||
public AngleGlobal(ScriptContext context)
|
||||
: base(context) { }
|
||||
|
||||
public WAngle North { get { return WAngle.Zero; } }
|
||||
public WAngle NorthWest { get { return new WAngle(128); } }
|
||||
public WAngle West { get { return new WAngle(256); } }
|
||||
public WAngle SouthWest { get { return new WAngle(384); } }
|
||||
public WAngle South { get { return new WAngle(512); } }
|
||||
public WAngle SouthEast { get { return new WAngle(640); } }
|
||||
public WAngle East { get { return new WAngle(768); } }
|
||||
public WAngle NorthEast { get { return new WAngle(896); } }
|
||||
|
||||
[Desc("Create an arbitrary angle.")]
|
||||
public WAngle New(int a) { return new WAngle(a); }
|
||||
}
|
||||
}
|
||||
@@ -19,13 +19,18 @@ namespace OpenRA.Mods.Common.Scripting.Global
|
||||
public FacingGlobal(ScriptContext context)
|
||||
: base(context) { }
|
||||
|
||||
public int North { get { return 0; } }
|
||||
public int NorthWest { get { return 32; } }
|
||||
public int West { get { return 64; } }
|
||||
public int SouthWest { get { return 96; } }
|
||||
public int South { get { return 128; } }
|
||||
public int SouthEast { get { return 160; } }
|
||||
public int East { get { return 192; } }
|
||||
public int NorthEast { get { return 224; } }
|
||||
void Deprecated()
|
||||
{
|
||||
Game.Debug("The Facing table is deprecated. Use Angle instead.");
|
||||
}
|
||||
|
||||
public int North { get { Deprecated(); return 0; } }
|
||||
public int NorthWest { get { Deprecated(); return 32; } }
|
||||
public int West { get { Deprecated(); return 64; } }
|
||||
public int SouthWest { get { Deprecated(); return 96; } }
|
||||
public int South { get { Deprecated(); return 128; } }
|
||||
public int SouthEast { get { Deprecated(); return 160; } }
|
||||
public int East { get { Deprecated(); return 192; } }
|
||||
public int NorthEast { get { Deprecated(); return 224; } }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,14 +122,14 @@ namespace OpenRA.Mods.Common.Scripting
|
||||
public WPos CenterPosition { get { return Self.CenterPosition; } }
|
||||
|
||||
[Desc("The direction that the actor is facing.")]
|
||||
public int Facing
|
||||
public WAngle Facing
|
||||
{
|
||||
get
|
||||
{
|
||||
if (facing == null)
|
||||
throw new LuaException("Actor '{0}' doesn't define a facing".F(Self));
|
||||
|
||||
return facing.Facing.Facing;
|
||||
return facing.Facing;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user