Danke für die Unterstützung
Ich habe das Script wie folgt angepasst. Ich habe es einfach nicht hinbekommen, die Values eines Objectes auszugeben. Vielleicht hat da noch jemand einen Tipp?
Momentan nutze ich einfach weitere "Sprachen", auf die ich dann zugreife um den Text am Cursor anzuzeigen. Einmal für die linke Taste und einmal für die rechte Taste. Der Code ist sicherlich ordentlich kauderwelsch, führt jedoch auch irgendwie ans Ziel
Für Optimierungen bin ich sehr dankbar.
Jetzt würde ich gerne folgendes noch machen:
1. Anstatt auf Sprachen zuzugreifen, würde ich gerne die Values eines Objektes nutzen
2. Ein Bild bzw jeweils einen anderen Cursor vor die beiden Aktionstexte unter dem regulären Cursor darstellen
3. Weiß jemand, warum oben links am Bildschirmrand der Text angezeigt wird? Irgendwo muss ich wohl einen Haken gesetzt haben, den ich nicht mehr finde, um es zu deaktivieren
function right(obj)
local t = obj:getId().tableId -- store table ID belonging to the linked visOBJ
local txt = game.CurrentObject.ObjectName.TextTextLanguages
for i = 1, #txt do
if txt.language == Languages["right_en"]:getId().id then
return(txt.text )
end
end
end
function left(obj)
local t = obj:getId().tableId -- store table ID belonging to the linked visOBJ
local txt = game.CurrentObject.ObjectName.TextTextLanguages
for i = 1, #txt do
if txt.language == Languages["left_en"]:getId().id then
return(txt.text )
end
end
end
function draw()
local txt = ""
local activeCommand = left(game.ActiveCommand)
local currentObject = right(game.CurrentObject)
local currentObjectLines = graphics.performLinebreaks(currentObject)
if activeCommand ~= "" then
txt = activeCommand
end
local font_used = Fonts["font_main"] -- set font
graphics.font = font_used
local lines = graphics.performLinebreaks(txt)
local dim = {x=0, y=0}
local pos = getCursorPos()
local padding = 50
pos.y = pos.y + padding -- set y position for activeCommand text
-- draw the text line by line
for k,v in ipairs(lines) do
local tempdim = graphics.fontDimension(v)
local text_pos = {x = pos.x, y = pos.y}
text_pos.x = pos.x -- set x position for activeCommand text, left-aligned
text_pos.y = pos.y + (k-1) * (font_used.Size + font_used.VerticalLetterSpacing)
if #txt > 0 then graphics.drawFont(v, math.floor(text_pos.x) , math.floor(text_pos.y), 1) end
if k == 1 then
dim.x = tempdim.x -- get the dimension of the longest line
dim.y = dim.y + tempdim.y
else
dim.y = dim.y + tempdim.y + font_used.VerticalLetterSpacing
end
end
pos.y = pos.y + dim.y + 50 -- set y position for currentObject text, 30 pixels below activeCommand text
if not game.CurrentObject:isEmpty() then
for k, v in ipairs(currentObjectLines) do
local text_pos = {x = pos.x, y = pos.y}
if k > 1 then
text_pos.y = pos.y + (k - 1) * (font_used.Size + font_used.VerticalLetterSpacing)
else
text_pos.x = pos.x + (dim.x - graphics.fontDimension(v).x) / 2 -- set x position for currentObject text, centered below activeCommand text
end
graphics.drawFont(v, math.floor(text_pos.x), math.floor(text_pos.y), 1)
end
end
end
graphics.addDrawFunc("draw()", 1)