Autor | Beitrag |
---|
000 24.09.2011, 18:48 Snut |
Ich suche gerade eine Möglichkeit, die Hudfarbe und dessen a-Wert zu ändern. (alpha?) |
Profil || Suche |
001 25.09.2011, 00:40 Bluthund |
Du musst einfach nur die HUD-Color wird ueber die PP-Konstanten in hud.h aendern (RGB_YELLOWISH, RGB_REDISH) fuer eine globale Aenderung oder du ersetzt die entsprechenden Vorkommnisse der Konstanten durch andere Konstanten, die du entsprechend setzt. Der Alphawert wird durch die Sprites selbst gesetzt. Die HUD-Sprites sind alle 256 Graustufen und werden additiv gerendert, d.h. je heller desto undurchsichtiger (Farbe = Spritefarbe * Faerbung + (1-Spritefarbe) * Hintergrund); scharz = komplett durchsichtig. --The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 25.09.2011 um 00:44 von Bluthund bearbeitet. |
Profil || Suche |
002 25.09.2011, 01:04 Snut |
Ja, ich weiß. Darum geht es aber nicht. Ich wollte den Farbwert abhängig davon machen, ob die Taschenlampe an ist oder nicht. Beispielsweise flashlight.cpp: if (m_fOn) Das ändert natürlich nur den Farb/Alpha Wert des Taschenlampen Hud. Ich dachte, dass es daher eine Funktion gibt, mit der ich das ganze Hud in einem Zug so umfärben kann. |
Profil || Suche |
003 25.09.2011, 18:30 Bluthund |
Nein, gibt es nicht, da sich jedes HUD-Element selbst zeichnet. Es gibt keine global zugaengliche aber das waere ja simpel zu realisieren (z.B. ueber nen Accessor in CHud und einen in CHudFlashlight). Alternativ kannst du deinem HUD (CHud) einen "Alphawert" (der Alphawert kommt wie gesagt aus den Sprites selbst, was Valve mit dem a da in CFlashlight::Draw() macht ist lediglich eine Skalierung der RGB-Werte ueber ScaleColors()) verpassen, den du dann in jedem Element beim Zeichnen entsprechend beachtest und beim Umschalten der Taschenlampe veraenderst. Oder du gehst komplett von den Konstanten weg und gibst deinem HUD die Sachen als Variablen (m_NormalColor, m_LowColor etc.). Das wuerde es dir z.B. auch ermoeglichen die Farben zur Laufzeit zu veraendern. Macht natuerlich etwas mehr Arbeit, da einige Sachen anzupassen waeren. Also: [code]-Tags --The C language combines all the power of assembly language with all the ease-of-use of assembly language. Dieser Beitrag wurde am 25.09.2011 um 18:32 von Bluthund bearbeitet. |
Profil || Suche |
004 26.09.2011, 18:28 Snut |
Wieso muss ein Accessor in die CHud? Die CFlashlight ist doch ein CHudBase. Ich bin gerade etwas konfus. -- |
Profil || Suche |
005 26.09.2011, 19:04 Bluthund |
CHudBase ist die Basisklasse von der alle HUD-Elemente ableiten, da solltest du garnichts dran machen. CHud ist die Klasse fuer das HUD als Ganzes und wird genau einmal instantiiert (global als gHUD) und ist von allen HUD-Elementen erreichbar (weil eben global). Aber kuemmer dich auch garnicht drum was ich da geschrieben hab. Ich hab das da oben auf die Annahme gestuetzt, dass die HUD-Elemente private Member von CHud sind. Dem ist aber nicht so, wie ich gerade festgestellt habe. Du kommst also ueber gHUD.m_Flash von ueberall an das Flashlight-HUD-Element heran und kannst dort mit nem entsprechenden oeffentlichen Accessor den Status direkt anfragen. --The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
Profil || Suche |
006 26.09.2011, 19:24 Snut |
Cool, danke. Klappte aber auch ohne Accessor. -- |
Profil || Suche |
007 26.09.2011, 20:21 Bluthund |
Jo, geht natuerlich auch ohne wenn du die Membervariable public deklarierst. Aber sauber ist das nicht ;) (ermoeglicht nicht nur Auslesen sondern eben auch Setzen der Variable). --The C language combines all the power of assembly language with all the ease-of-use of assembly language. |
Profil || Suche |
008 26.09.2011, 22:36 Snut |
Ja, mag ja sein. Das macht das ja gerade so einfach. Ich bin noch nicht so tief drin, aber kann den die Variable einfach so gesetzt werden? -- |
Profil || Suche |