using System.Collections.Generic;
using System.Linq;
using System.Xml;
using System.Xml.Linq;
using HarmonyLib;
//
public class MinEventActionExecuteConsoleCommandCVars : MinEventActionTargetedBase
{
private string command = string.Empty;
private List cvars;
private List cvarsValues;
public override void Execute(MinEventParams _params)
{
if (string.IsNullOrEmpty(command))
return;
foreach (var t in targets)
{
if (t == null) continue;
var entity = t;
cvarsValues = new List();
cvarsValues.Clear();
foreach (var cvar in cvars)
{
var value = entity.Buffs.CVars.GetValueSafe(cvar);
cvarsValues.Add(value);
}
command = AssembleString(command, cvarsValues);
if (!SingletonMonoBehaviour.Instance.IsClient)
{
SingletonMonoBehaviour.Instance.ExecuteSync(command, null);
}
else
{
SingletonMonoBehaviour.Instance.SendToServer(
NetPackageManager.GetPackage().Setup(command), false);
}
}
}
private string AssembleString(string _command, List _cvars)
{
string str = _command;
for (int index = 0; index < _cvars.Count; index++)
{
str = str.Replace("{" + index + "}", _cvars[index].ToString());
}
return str;
}
public override bool ParseXmlAttribute(XAttribute _attribute)
{
bool flag = base.ParseXmlAttribute(_attribute);
if (!flag)
{
var name = _attribute.Name.LocalName;
if (name != null)
{
if (name == "command")
{
command = _attribute.Value;
return true;
}
if (name == "cvars")
{
cvars = _attribute.Value.Split(',').ToList();
return true;
}
}
}
return flag;
}
}