--
[ Picked text/plain from multipart/alternative ]
Well I should be flattered that I inspired a best use guide :P Am I really
that bad :P

Well I'm taking what's being written and I've nearlly finished a second
version :)

On 3/30/06, Alfred Reynolds <[EMAIL PROTECTED]> wrote:
>
> I have added a new page to the wiki with some VGUI2 programming best
> practices to follow:
> http://developer.valvesoftware.com/wiki/VGUI2_Programming_Best_Practices
>
> - Alfred
>
> Alfred Reynolds wrote:
> >>> OnThink() would work as well. You can use the ::OnTick() function by
> > making the ivgui()->AddTickSignal( GetVPanel() ) to subscribe your
> > panel
> > to tick events. The AddTickSignal() lets you optionally choose the
> > tick
> > interval (rather than just once per frame) which can be a useful
> > feature.
> >
> > Just make the label large enough to contain any text it could
> > potentially display rather than dynamically resizing it (or use the
> >>> SizeToContents() function if you really need to resize it).
> >
> > - Alfred
> >
> > Benjamin Davison wrote:
> >> --
> >> [ Picked text/plain from multipart/alternative ]
> >> Thanks for the tip, but I implemented your sizeof(); suggestion :) It
> >> ain't crashing anymore, but it's not displaying text weirdly enough.
> >> Debug is still working :E
> >>
> >> Well anyway I'll be rewriting it anyway :D I'm thinking of how I am
> >> gonna do that. Do you think using an ::OnThink() function like most
> >> hud elements use would be the best way? Possibly in the OnThink();
> >> Check if pRules->foo has changed. If it has call a function to
> >> change the size and text of the label?
> >>
> >> And ::OnTick() There are only a couple of examples around the SDK
> >> and I was trying to find the base function and I came across this in
> >> vgui_BasePanel.cpp and found this:
> >>
> >> void CBasePanel::OnTick( void )
> >> {
> >>     // Nothing
> >> }
> >>
> >> How is this function called within the engine? And what is it good
> >> for?
> >>
> >> On 3/30/06, Alfred Reynolds <[EMAIL PROTECTED]> wrote:
> >>>
> >>> Debug mode has a lot more padding between memory allocations
> >>> typically. This call: vgui::localize()->ConvertANSIToUnicode(
> >>> sString, unicode, 1024)
> >>>
> >>> Would cause a random piece of memory 512 bytes beyond the end of
> >>> "unicode" to be zero to 0 (null terminating the unicode string). In
> >>> debug you were probably zeroing unused memory so it had no impact,
> >>> in release you were smashing the stack or the like causing a crash.
> >>> Moral is, use sizeof(<variable>) when passing in buffer length
> >>> parameters, never hard code them :)
> >>>
> >>> - Alfred
> >>>
> >>> Benjamin Davison wrote:
> >>>> --
> >>>> [ Picked text/plain from multipart/alternative ]
> >>>> Thanks Jay, I'll take those pointers away(rim shot) when I rewrite
> >>>> it in accordance with Alfred's suggestions.
> >>>>
> >>>> Still confusing that it worked in debug mode but displayed nothing
> >>>> in release mode.
> >>>>
> >>>> On 3/30/06, Jay Stelly <[EMAIL PROTECTED]> wrote:
> >>>>>
> >>>>> Actually looking at the code you're using, you probably should
> >>>>> just skip string_t entirely (since the unicode conversion takes a
> >>>>> char * anyway):
> >>>>>
> >>>>> const char *pString = "";
> >>>>>
> >>>>> then replace sString with pString...
> >>>>>
> >>>>> Jay
> >>>>>
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: [EMAIL PROTECTED]
> >>>>>> [mailto:[EMAIL PROTECTED] On Behalf Of Jay
> >>>>>> Stelly Sent: Thursday, March 30, 2006 11:02 AM
> >>>>>> To: hlcoders@list.valvesoftware.com
> >>>>>> Subject: RE: [hlcoders] Works in debug mode, does not it release
> >>>>>> mode.
> >>>>>>
> >>>>>> Unless someone has defined a valid assignment or conversion
> >>>>>> path for this that I don't normally use you have to do this
> >>>>>> to your constant
> >>>>>> strings:
> >>>>>>
> >>>>>>>         sString = MAKE_STRING("Find the case!");
> >>>>>>
> >>>>>> at least that's why MAKE_STRING exists in the first place.
> >>>>>>
> >>>>>> It's not surprising that ConvertANSIToUnicode() would crash
> >>>>>> if these assignments were producing an invalid pointer.
> >>>>>>
> >>>>>> Jay
> >>>>>>
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: [EMAIL PROTECTED]
> >>>>>>> [mailto:[EMAIL PROTECTED] On Behalf Of
> >>>>>>> Benjamin Davison Sent: Thursday, March 30, 2006 10:50 AM
> >>>>>>> To: hlcoders@list.valvesoftware.com
> >>>>>>> Subject: [hlcoders] Works in debug mode, does not it release
> >>>>>>> mode.
> >>>>>>>
> >>>>>>> --
> >>>>>>> [ Picked text/plain from multipart/alternative ] Very weird
> >>>>>>> indeed, I'm working on some VGUI code and for some reason it
> >>>>>>> works in debug mode with the IDE attatched and fails to work in
> >>>>>>> release mode, and for the life of me I am stumped for a
> >>>>>>> soloution. Here is some code to see if you guys have run into
> >>>>>>> this problem.
> >>>>>>>
> >>>>>>> void CBBHudTaskList::Paint( void )
> >>>>>>> {
> >>>>>>>     // getting a pointer to the game rules
> >>>>>>>     CHL2MPRules *pRules = HL2MPRules();
> >>>>>>>     if ( !pRules )
> >>>>>>>         return;
> >>>>>>>     // local player
> >>>>>>>     C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
> >>>>>>> if         ( !pPlayer ) return;
> >>>>>>>
> >>>>>>>     string_t sString = "";
> >>>>>>>     wchar_t unicode[256];
> >>>>>>>
> >>>>>>>     int x, y;
> >>>>>>>     int textSizeWide, textSizeTall;
> >>>>>>>     int iShown = 0; // number of lines shown
> >>>>>>>     int fontTall = vgui::surface()->GetFontTall( m_hLargeFont
> >>>>>>> ); int border = 20;
> >>>>>>>
> >>>>>>>     x = border / 2; // ScreenWidth() - border - textSizeWide;
> >>>>>>>     y = iShown * fontTall; // border + iShown * fontTall;
> >>>>>>>
> >>>>>>>     SetSize( 300 + border, 40 );
> >>>>>>>
> >>>>>>>
> >>>>>>>     if (pRules->m_bCaptureObjectActive == true)
> >>>>>>>     {
> >>>>>>>         sString = "Find the case!";
> >>>>>>>     }
> >>>>>>>     else if (pRules->m_bCaptureZoneActivated == true)     {
> >>>>>>>         sString = "Get to this location and do something";
> >>>>>>>         }     else { sString = "No mission selected!";
> >>>>>>>     }
> >>>>>>>
> >>>>>>>     vgui::localize()->ConvertANSIToUnicode( sString, unicode,
> >>>>>>> 256);
> >>>>>>>
> >>>>>>>     // --- Set up default font and get character height for line
> >>>>>>>     spacing vgui::surface()->DrawSetTextFont( m_hLargeFont );
> >>>>>>>     //vgui::surface()->DrawSetTextFont( m_hLargeFont );
> >>>>>>>     vgui::surface()->DrawSetTextPos(x, y);
> >>>>>>>     vgui::surface()->DrawPrintText( unicode, wcslen(unicode) );
> >>>>>>> // print text
> >>>>>>>
> >>>>>>>     BaseClass::Paint();
> >>>>>>> }
> >>>>>>>
> >>>>>>> Now for some reason vgui::localize()->ConvertANSIToUnicode(
> >>>>>>> sString, unicode, 256); was crashing the release mode(not the
> >>>>>>> debug) if I put the buffer to 1024
> >>>>>>>
> >>>>>>> Have any of you guys run into this problem? Or can you see some
> >>>>>>> error I have overlooked?
> >>>>>>>
> >>>>>>> --
> >>>>>>> - Benjamin Davison
> >>>>>>> --
> >>>>>>>
> >>>>>>> _______________________________________________
> >>>>>>> To unsubscribe, edit your list preferences, or view the list
> >>>>>>> archives, please visit:
> >>>>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> To unsubscribe, edit your list preferences, or view the list
> >>>>>> archives, please visit:
> >>>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>>>>
> >>>>>>
> >>>>>
> >>>>> _______________________________________________
> >>>>> To unsubscribe, edit your list preferences, or view the list
> >>>>> archives, please visit:
> >>>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>>>
> >>>>>
> >>>>
> >>>>
> >>>> --
> >>>> - Benjamin Davison
> >>>> --
> >>>>
> >>>> _______________________________________________
> >>>> To unsubscribe, edit your list preferences, or view the list
> >>>> archives, please visit:
> >>>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>
> >>> _______________________________________________
> >>> To unsubscribe, edit your list preferences, or view the list
> >>> archives, please visit:
> >>> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >>>
> >>>
> >>
> >>
> >> --
> >> - Benjamin Davison
> >> --
> >>
> >> _______________________________________________
> >> To unsubscribe, edit your list preferences, or view the list
> >> archives, please visit:
> >> http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >
> > _______________________________________________
> > To unsubscribe, edit your list preferences, or view the list
> > archives, please visit:
> > http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>


--
- Benjamin Davison
--

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to