there is any idea for make simple text input in LOVE?
similar to inputbox.. but more simpler , and maybe without API call.
any help would be appreciated
( sry for my english )
any idea for make simple text input in LOVE?
- nevon
- Commander of the Circuloids
- Posts: 938
- Joined: Thu Feb 14, 2008 8:25 pm
- Location: Stockholm, Sweden
- Contact:
Re: any idea for make simple text input in LOVE?
Löve does not include any kind of gui toolkit. There are a few floating around, such as goo. But nothing I can really wholeheartedly recommend (because I haven't tried them).
If you're just going to have a single text input, you might as well just make a custom one.
If you're just going to have a single text input, you might as well just make a custom one.
Re: any idea for make simple text input in LOVE?
i see..nevon wrote:Löve does not include any kind of gui toolkit. There are a few floating around, such as goo. But nothing I can really wholeheartedly recommend (because I haven't tried them).
If you're just going to have a single text input, you might as well just make a custom one.
hmm, how about simple text input command prompt like, have idea?
i'm new in lua and LOVE. if you mind, do you have idea how to code that in LOVE? ( with sample code )
or any one have better idea?
( sry if my english bad )
- nevon
- Commander of the Circuloids
- Posts: 938
- Joined: Thu Feb 14, 2008 8:25 pm
- Location: Stockholm, Sweden
- Contact:
Re: any idea for make simple text input in LOVE?
I don't even know what that means. Do you mean a text input widget or something like a terminal?baby_nux wrote:how about simple text input command prompt like, have idea?
I could, but I have a feeling you'd learn a lot more by doing it yourself.baby_nux wrote:i'm new in lua and LOVE. if you mind, do you have idea how to code that in LOVE? ( with sample code )
Re: any idea for make simple text input in LOVE?
both of them, but the last one is simpler ( better than nothing )nevon wrote: I don't even know what that means. Do you mean a text input widget or something like a terminal?
yes, sure... i will trybaby_nux wrote:I could, but I have a feeling you'd learn a lot more by doing it yourself.
i just curious if somebody has better one.
Re: any idea for make simple text input in LOVE?
I've found that coding your own widgets really helps increase your understanding of how the engine works, and how the game should work in general, so I would advise to try and have a go by yourself. At least that way you know how it works and you get to make it how you want.
- nevon
- Commander of the Circuloids
- Posts: 938
- Joined: Thu Feb 14, 2008 8:25 pm
- Location: Stockholm, Sweden
- Contact:
Re: any idea for make simple text input in LOVE?
No. A regular text input would be much, much easier. You'd only have to draw the input, see whether or not it's active, detect key strokes and add chars to a string, and then print that text on top of the input. Easy as math.pi.baby_nux wrote:both of them, but the last one is simpler ( better than nothing )nevon wrote: I don't even know what that means. Do you mean a text input widget or something like a terminal?
Re: any idea for make simple text input in LOVE?
do you mean like activeX visual component ( GUI ) in visualbasic?nevon wrote: No. A regular text input would be much, much easier. You'd only have to draw the input, see whether or not it's active, detect key strokes and add chars to a string, and then print that text on top of the input. Easy as math.pi.
easier for win user, but my OS is ubuntu linux.
my another clue is using wxWidgets.
wxWidgets, like visual component ( GUI ) in visualbasic. Cross-Platform GUI Programming.
but i dont have much programming skill for using wxWidgets in linux, especially with lua and LOVE.
i dont have any choice now, maybe i want try the last one. terminal text input like , more simpler i think ...
Re: any idea for make simple text input in LOVE?
i have GUI widget code library in glbasic ( BASIC language for game programming ).
glbasic based from opengl and SDL, the code similiar like LOVE. maybe i can convert it to lua/LOVE code.
this code library has:
this is some initial global variable,const, data type:
if i already finished convert entire of this code ( for practice ), maybe i will try to convert for "inputbox" code.
PS:
this is sample widget for display text on screen ( glbasic language )
if someone has familiar with BASIC language, will see more clear.
( again, sry if my english very unclear )
glbasic based from opengl and SDL, the code similiar like LOVE. maybe i can convert it to lua/LOVE code.
this code library has:
- input ( inputbox )
- text << for example i will show for this code below (this code for display text on screen)
- button
- list ( listbox )
- toolbar
- combo ( combobox )
- button ( radiobutton )
- chechbox
- slider
- frame
- tab
- file dialog
- etc.
Code: Select all
//! ------------------------------------------ //
//! Text
//! ------------------------------------------ //
FUNCTION DDgui_text: id$, text$, width%=0, height%=0
DDgui_widget(id$, text$, width, height)
DDgui_set(id$, "TYPE", "TEXT")
ENDFUNCTION
Code: Select all
// ------------------------------------------ //
//! widget c'tor - can be used as a static text widget
// ------------------------------------------ //
FUNCTION DDgui_widget%: id$, caption$, width%=0, height%=0
LOCAL count%
LOCAL fx%, fy%
LOCAL wdg AS DDGUI_WDG
count = 1 + LEN(ddgui_stack[-1].widgets[])
IF id$="" THEN id$="iwdg%"+count
GETFONTSIZE fx, fy
IF width <=gDDguiMinControlDimension% THEN width = MAX(gDDguiMinControlDimension%, MAX(width, DDGui_TextWidthIntern(caption$) + fx))
IF height<=gDDguiMinControlDimension% THEN height = MAX(gDDguiMinControlDimension%, MAX(height, fy+6))
LOCAL i% = DDgui_index(ddgui_stack[-1], id$, TRUE)
ddgui_stack[-1].widgets[i].wid$ = id$
ddgui_stack[-1].widgets[i].wwidth=width
ddgui_stack[-1].widgets[i].wheight=height
ddgui_stack[-1].widgets[i].wtype$ = "WIDGET"
ddgui_stack[-1].widgets[i].wtext$=caption$
ENDFUNCTION
Code: Select all
FUNCTION DDgui_set: id$, name$, val$
IF LEN(id$)=0
SELECT name$
CASE "FOCUS"; ddgui_stack[-1].focus$=val$
CASE "INKEY"; ddgui_stack[-1].dlg_inkey$=val$
CASE "COL_BRIGHT"; ddgui_stack[-1].col_bright%=val$
CASE "COL_NORM"; ddgui_stack[-1].col_norm%=val$
CASE "COL_HOVER_BRIGHT"; ddgui_stack[-1].col_hover_bright%=val$
CASE "COL_HOVER_NORM"; ddgui_stack[-1].col_hover_norm%=val$
CASE "TEXT"; ddgui_stack[-1].main.wtext$=val$
CASE "XPOS"; ddgui_stack[-1].xpos%=val$
CASE "YPOS"; ddgui_stack[-1].ypos%=val$
CASE "WIDTH"; ddgui_stack[-1].main.wwidth%=val$
CASE "HEIGHT"; ddgui_stack[-1].main.wheight%=val$
CASE "MOVEABLE"; ddgui_stack[-1].moveable%=val$
CASE "SCALEABLE"; ddgui_stack[-1].scaleable%=val$
DEFAULT
DEBUG "DDgui_set dialog (\"\") property: "+name$+" is unknown\n"
ENDSELECT
ELSE
LOCAL iw = DDgui_index(ddgui_stack[-1], id$, TRUE)
ALIAS wdg AS ddgui_stack[-1].widgets[iw]
SELECT name$
CASE "TEXT"; wdg.wtext$ = val$
CASE "CLICKED"; wdg.wclicked% = val$
CASE "WIDTH"; wdg.wwidth% = val$
CASE "HEIGHT"; wdg.wheight% = val$
CASE "SELECT"; wdg.wselect% = val$
CASE "COUNT"; wdg.wcount% = val$
CASE "HOVER"; wdg.whover% = val$
CASE "READONLY"; wdg.wreadonly% = val$
CASE "SELSTART"; wdg.wselstart% = val$
CASE "SELEND"; wdg.wselend% = val$
CASE "HIDE"; wdg.whide% = val$
CASE "TYPE"; wdg.wtype$ = val$
CASE "FILTER"; wdg.wfilter$ = val$
CASE "TIPTEXT"; wdg.tiptext$ = val$
CASE "MINVAL"; wdg.wminval = val$
CASE "MAXVAL"; wdg.wmaxval = val$
CASE "STEP"; wdg.wstep = val$
CASE "SCROLL"; wdg.wscroll = val$
CASE "ALIGN"; wdg.walign% = val$
DEFAULT
DEBUG "DDgui_set: Widget property "+name$+" is unknown\n"
ENDSELECT
ENDIF
ENDFUNCTION
Code: Select all
// ------------------------------------------ //
//! Get index in ddgui_vals$[] for given string
//! New sorting algorithm for much faster access
// ------------------------------------------ //
FUNCTION DDgui_index%: ddgui_vals AS DDGUI_DLG, BYREF name$, create%
LOCAL up%, dn%, mid%
up=0; dn=LEN(ddgui_vals.widgets[])-1
WHILE up < dn
mid = (up+dn) / 2
IF ddgui_vals.widgets[mid].wid$ > name$
dn=MAX(mid-1, up)
ELSE
IF ddgui_vals.widgets[mid].wid$ < name$
up=MIN(dn, mid+1)
ELSE
RETURN mid // not bigger, not smaller, guess what!?
ENDIF
ENDIF
WEND
IF LEN(ddgui_vals.widgets[]) AND ddgui_vals.widgets[up].wid$ = name$ THEN RETURN up
// not found. But must be at [up].
IF create%
dn = LEN(ddgui_vals.widgets[]) // one below last
REDIM ddgui_vals.widgets[dn+1]
FOR mid = dn TO up+1 STEP -1
ddgui_vals.widgets[mid] = ddgui_vals.widgets[mid-1]
NEXT
IF dn>0 AND ddgui_vals.widgets[up].wid$ < name$ THEN up=up+1
LOCAL widg AS DDGUI_WDG
widg.wid$ = name$
ddgui_vals.widgets[up] = widg // copy a fresh on there, clear old junk
// also make a new drawing order entry!!
LOCAL order AS DDGUI_ORDER
order.id$ = name$
DIMPUSH ddgui_vals.draworder[], order
// Internally fixed the drawing oder, when pushing new
// widgets to the quick-dictionary array.
FOREACH od IN ddgui_vals.draworder[]
od.index = DDgui_index(ddgui_vals, od.id$, FALSE)
NEXT
RETURN up
ENDIF
RETURN -1
ENDFUNCTION
Code: Select all
// Globals you can use to tweak the DDgui experience:
GLOBAL gDDguiCaretColour% = 0x000000
GLOBAL gDDguiMinControlDimension% // min size of button etc.
TYPE DDGUI_ENTRY
key$
val$
ENDTYPE
TYPE DDGUI_WDG
// public:
// all widgets
wid$
wtype$
wtext$
wxpos% // readonly
wypos% // readonly
wwidth%
wheight%
whover%
whide%=0
wfilter$
tiptext$ // tooltip
// button, slider, checkbox, radio, file, list, text, tab
wclicked%
// checkbox, list, tab
wselect%
// list, radio
wcount%
// text
wreadonly%
wselstart%
wselend%
// slider
wminval=0
wmaxval=1.0
wstep =0.01
// protected:
wscroll%
wscrollmax%
wcaretx% // in pixels
wcarety% // in pixels
wframe%=0 // frame index (0=dialog's main frame)
walign%=-1 // -1=left, 0=center, 1=right
ENDTYPE
TYPE DDGUI_ORDER
id$ // widget id
index% // index in widgets list
ENDTYPE
TYPE DDGUI_AUTO
idfrom$; idto$; objfrom$; objto$
ENDTYPE
TYPE DDGUI_DLG
// public: (with DDgui_get/set)
focus$ // focus widget id$
moveable%
moving%
scaling%
scaleable%
col_bright%
col_norm%
col_hover_bright%
col_hover_norm%
dlg_inkey$
xpos%; ypos%
// protected: (not in DDgui_get/set)
realheight%;
kick_intern_dlg% // want a colour picker dlg? 1=color, 2=osd keyboard,
kick_intern_id$ // id for kicking
main AS DDGUI_WDG // dialog "widget" - used for scrollbar, only
autos[] AS DDGUI_AUTO
widgets[] AS DDGUI_WDG
draworder[] AS DDGUI_ORDER // indices for drawing order
// pairs[] AS DDGUI_ENTRY
// some globals that speed drawing up
ENDTYPE
// for internal use, only - quicker drawing
GLOBAL ddgui_stack[] AS DDGUI_DLG // dialog stack for dawing background stuff
// GLOBAL ddgui_vals AS DDGUI_DLG // current values
TYPE DDGUI_FONT
left%[] // left side of first pixel per char
width%[] // width of that char (with 1 pixel space already)
bHasKerning%=TRUE
ENDTYPE
GLOBAL ddgui_font_kerning AS DDGUI_FONT
GLOBAL DDGUI_AUTO_INPUT_DLG // auto-open DDgui_input, when you click a text?
GLOBAL DDGUI_IN_INPUT_DLG // for text to know, that clicking again should not pop up
PS:
this is sample widget for display text on screen ( glbasic language )
if someone has familiar with BASIC language, will see more clear.
( again, sry if my english very unclear )
- Robin
- The Omniscient
- Posts: 6506
- Joined: Fri Feb 20, 2009 4:29 pm
- Location: The Netherlands
- Contact:
Re: any idea for make simple text input in LOVE?
No. You are writing the whole damn thing from scratch.baby_nux wrote:do you mean like activeX visual component ( GUI ) in visualbasic?
Don't think that is simpler. A terminal text input has much more features than a simple text input. You need to worry about scrolling text etc.baby_nux wrote:i dont have any choice now, maybe i want try the last one. terminal text input like , more simpler i think ...
Help us help you: attach a .love.
Who is online
Users browsing this forum: No registered users and 8 guests