forked from Mirrors/openclonk
Add user action evaluators: Player wealth, clonk energy, object mass, object speed
parent
bf35f92228
commit
2f4ffa0a0c
|
@ -262,6 +262,10 @@ func Definition(def)
|
|||
} } );
|
||||
AddEvaluator("Integer", nil, "$NumberOfObjects$", "$NumberOfObjectsHelp$", "object_count", [def, def.EvalCount, "ObjectList"], { }, new Evaluator.ObjectList { }, "Array");
|
||||
AddEvaluator("Integer", nil, "$NumberOfPlayers$", "$NumberOfPlayersHelp$", "player_count", [def, def.EvalCount, "PlayerList"], { }, new Evaluator.PlayerList { }, "Array");
|
||||
AddEvaluator("Integer", nil, "$PlayerWealth$", "$PlayerWealthHelp$", "player_wealth", [def, def.EvalInt_Wealth], { }, new Evaluator.Player { }, "Player");
|
||||
AddEvaluator("Integer", nil, "$ClonkEnergy$", "$ClonkEnergyHelp$", "clonk_energy", [def, def.EvalInt_ClonkHealth], { }, GetObjectEvaluator("IsClonk", "$Clonk$"), "Clonk");
|
||||
AddEvaluator("Integer", nil, "$ObjectMass$", "$ObjectMassHelp$", "object_mass", [def, def.EvalInt_ObjectMass], { }, new Evaluator.Object { }, "Object");
|
||||
AddEvaluator("Integer", nil, "$ObjectSpeed$", "$ObjectSpeedHelp$", "object_speed", [def, def.EvalInt_ObjectSpeed], { }, new Evaluator.Object { }, "Object");
|
||||
// String evaluators
|
||||
AddEvaluator("String", nil, ["$Constant$", ""], "$ConstantHelp$", "string_constant", [def, def.EvalConstant], { Value="" }, { Type="string", Name="$Value$" });
|
||||
AddEvaluator("String", nil, ["$ValueToString$", ""], "$ValueToStringHelp$", "value_to_string", [def, def.EvalStr_ValueToString], { }, new Evaluator.Any { });
|
||||
|
@ -489,6 +493,14 @@ private func EvaluateOffset(proplist props, object context)
|
|||
return EvaluateValue("Offset", props, context) ?? [0,0];
|
||||
}
|
||||
|
||||
private func EvaluatePlayer(proplist props, object context)
|
||||
{
|
||||
// Execute player evaluator; nil means NO_OWNER
|
||||
var plr = EvaluateValue("Player", props, context);
|
||||
if (!GetType(plr)) plr = NO_OWNER;
|
||||
return plr;
|
||||
}
|
||||
|
||||
private func ResumeAction(proplist context, proplist resume_props)
|
||||
{
|
||||
//Log("ResumeAction %v %v", context, resume_props);
|
||||
|
@ -722,7 +734,7 @@ private func EvalAct_CreateObject(proplist props, proplist context)
|
|||
// Create a new object
|
||||
var create_id = EvaluateValue("Definition", props.ID, context);
|
||||
if (!create_id) return;
|
||||
var owner = EvaluateValue("Player", props.Owner, context);
|
||||
var owner = EvaluatePlayer(props.Owner, context);
|
||||
var container = EvaluateValue("Object", props.Container, context);
|
||||
var obj;
|
||||
if (container)
|
||||
|
@ -754,7 +766,7 @@ private func EvalAct_CastObjects(proplist props, proplist context)
|
|||
// Cast objects in multiple directions
|
||||
var create_id = EvaluateValue("Definition", props.ID, context);
|
||||
if (!create_id) return;
|
||||
var owner = EvaluateValue("Player", props.Owner, context);
|
||||
var owner = EvaluatePlayer(props.Owner, context);
|
||||
var amount = EvaluateValue("Integer", props.Amount, context);
|
||||
var speed = EvaluateValue("Integer", props.Speed, context);
|
||||
var mean_angle = EvaluateValue("Integer", props.MeanAngle, context);
|
||||
|
@ -1013,6 +1025,29 @@ private func EvalInt_Distance(proplist props, proplist context)
|
|||
return Distance(pA[0], pA[1], pB[0], pB[1]);
|
||||
}
|
||||
|
||||
private func EvalInt_Wealth(proplist props, proplist context) { return GetWealth(EvaluatePlayer(props.Player, context)); }
|
||||
|
||||
private func EvalInt_ClonkHealth(proplist props, proplist context)
|
||||
{
|
||||
var clonk = EvaluateValue("Object", props.Clonk, context);
|
||||
if (!clonk) return 0;
|
||||
return clonk->GetEnergy();
|
||||
}
|
||||
|
||||
private func EvalInt_ObjectMass(proplist props, proplist context)
|
||||
{
|
||||
var obj = EvaluateValue("Object", props.Object, context);
|
||||
if (!obj) return 0;
|
||||
return obj->GetMass();
|
||||
}
|
||||
|
||||
private func EvalInt_ObjectSpeed(proplist props, proplist context)
|
||||
{
|
||||
var obj = EvaluateValue("Object", props.Object, context);
|
||||
if (!obj) return 0;
|
||||
return obj->GetSpeed();
|
||||
}
|
||||
|
||||
private func EvalStr_ValueToString(proplist props, proplist context)
|
||||
{
|
||||
return Format("%v", EvaluateValue("Any", props.Value, context));
|
||||
|
|
|
@ -256,3 +256,12 @@ Div=Division
|
|||
DivHelp=Teilt den linken Operanden durch den rechten Operanden. Das Ergebnis wird zur Null gerundet.
|
||||
Mod=Modulo
|
||||
ModHelp=Teilt den linken Operanden durch den rechten Operanden und gibt den Rest der Division zurueck.
|
||||
PlayerWealth=Spieler Clunker
|
||||
PlayerWealthHelp=Vermoegen eines Spielers (Geld, Gold, Clunker...).
|
||||
ClonkEnergy=Clonk Energie
|
||||
ClonkEnergyHelp=Lebenspunkte des Clonks.
|
||||
Clonk=Clonk
|
||||
ObjectMass=Objektmasse
|
||||
ObjectMassHelp=Gewicht des angegebenen Objektes.
|
||||
ObjectSpeed=Objektgeschwindigkeit
|
||||
ObjectSpeedHelp=Geschwindigkeit des angegebenen Objektes in 1/10 Pixeln pro Frame.
|
|
@ -256,3 +256,12 @@ Div=Division
|
|||
DivHelp=Divides the left operand by the right operand. The result is rounded towards zero.
|
||||
Mod=Modulo
|
||||
ModHelp=Returns the remainder of the division of the left operand by the right operand.
|
||||
PlayerWealth=Player wealth
|
||||
PlayerWealthHelp=Wealth of a player (Money, gold, clunkers...).
|
||||
ClonkEnergy=Clonk energy
|
||||
ClonkEnergyHelp=Life points of the clonk.
|
||||
Clonk=Clonk
|
||||
ObjectMass=Object mass
|
||||
ObjectMassHelp=Weight of the specified object.
|
||||
ObjectSpeed=Object speed
|
||||
ObjectSpeedHelp=Velocity of the specified object in 1/10th pixels per frame.
|
Loading…
Reference in New Issue