
-----------------------------------
tjmoore1993
Sat May 30, 2009 4:23 pm

Rewritting a buffer for my game
-----------------------------------
What is the problem you are having?
I want it so that spaces are considered illegal characters. I have got most of the buffer completed to what I need.
Example:
When a space is entered it rejects it or something :)

Describe what you have tried to solve this problem
I have tried too many things...


Post any relevant code (You may choose to attach the file instead of posting the code if it is too long)

function CharName (maxLength : int) : string
    var str : string := ""
    var ch : string (1)
    loop
        View.Set ("noecho")
        Input.Flush
        loop
            getch (ch)
            exit when ord (ch) = 10
            if ord (ch) = 8 then
                if str = "" then
                else
                    put "\b" ..
                    str := str (1 .. * -1)
                end if
            else
                if (ch < " ") or ("~" < ch) then
                else
                    if length (str) >= maxLength then
                    else
                        put ch ..
                        str := str + ch
                    end if
                end if
            end if
            View.Update
        end loop
        if whatrow = maxrow then
            locate (maxrow, maxcol)
            put ""
        else
            locate (whatrow + 1, 1)
        end if
        setscreen ("echo")
        result str
    end loop
end CharName


-----------------------------------
tjmoore1993
Sat May 30, 2009 5:03 pm

RE:Rewritting a buffer for my game
-----------------------------------
Problem solved, sorry for the inconvenience.

function CharName (maxLength : int) : string 
    var str : string := "" 
    var ch : string (1) 
    loop 
        View.Set ("noecho") 
        Input.Flush 
        loop 
            getch (ch) 
            exit when ord (ch) = 10 
            if ord (ch) = 8 then 
                if str = "" then 
                else 
                    put "\b" .. 
                    str := str (1 .. * -1) 
                end if 
            else 
                if (ch < "!") or ("~" < ch) then % FIXED
                else 
                    if length (str) >= maxLength then 
                    else 
                        put ch .. 
                        str := str + ch 
                    end if 
                end if 
            end if 
            View.Update 
        end loop 
        if whatrow = maxrow then 
            locate (maxrow, maxcol) 
            put "" 
        else 
            locate (whatrow + 1, 1) 
        end if 
        setscreen ("echo") 
        result str 
    end loop 
end CharName 


-----------------------------------
corriep
Sat May 30, 2009 8:40 pm

Re: Rewritting a buffer for my game
-----------------------------------
Quick tip, instead of this:if str = "" then 
else 
    put "\b" .. 
    str := str (1 .. * -1) 
end if Use thisif str not= "" then % you can even use ~=
    put "\b" .. 
    str := str (1 .. * -1) 
end if 

-----------------------------------
tjmoore1993
Sat May 30, 2009 9:21 pm

RE:Rewritting a buffer for my game
-----------------------------------
I heard adding more to the decision itself can cause a tiny offset. I am going for efficiency and so far I've done a good job.

Before:
Video Memory : 29MB maximum
Memory : 43MB maximum

After
Video Memory : 10MB maximum
Memory : 5MB maximum

Soon to be released.
