openclonk/planet/Decoration.ocd/Village.ocd/Guidepost.ocd/Script.c

53 lines
1.4 KiB
C

/**
@author Graphics Dustin Neß (dness.de), Script Sven2
*/
local Name="$Name$";
local Description="$Description$";
local inscription = "";
// Players can read the sign via the interaction bar.
public func IsInteractable() { return inscription != ""; }
// Adapt appearance in the interaction bar.
public func GetInteractionMetaInfo(object clonk)
{
return { Description = "$MsgRead$", Selected = false };
}
// Called on player interaction.
public func Interact(object clonk)
{
if (!clonk) return false;
Dialogue->MessageBox(GetTranslatedString(inscription), clonk, this, clonk->GetController(), true);
return true;
}
public func SetInscription(to_text)
{
inscription = to_text ?? "";
return true;
}
// Color for messages
public func GetColor() { return 0xffcf9c1a; }
protected func Construction()
{
// Pick an angle range that looks good (some angles show it from the side, which looks weird)
var angle;
if (!Random(2)) angle = -80 + Random(105); else angle = 90 + Random(110);
this.MeshTransformation = Trans_Mul(Trans_Rotate(angle,0,10), GetID().MeshTransformation);
}
public func Definition(def)
{
// Model file is way too large
def.MeshTransformation = Trans_Scale(360);
def.PictureTransformation = Trans_Scale(900);
// Inscription props
if (!def.EditorProps) def.EditorProps = {};
def.EditorProps.inscription = { Name="$Inscription$", Type="string", EditorHelp="$InscriptionHelp$", Set="SetInscription", Save="Inscription", Translatable=true };
}