
geht über Windows APi:
Procedure E_GRAY_SCALE(DC)
If e_show_gray_scale.b<>#True
ProcedureReturn #False
EndIf
Define COLORADJUSTMENT.COLORADJUSTMENT
GetColorAdjustment_(DC, Coloradjustment)
SetStretchBltMode_(DC, #HALFTONE)
COLORADJUSTMENT\caColorfulness = e_colorness.i
COLORADJUSTMENT\caBrightness = e_brightnes.i
SetColorAdjustment_(DC, COLORADJUSTMENT)
StretchBlt_(DC, 0, 0, e_engine_internal_screen_w,e_engine_internal_screen_h, DC, 0, 0,e_engine_internal_screen_w,e_engine_internal_screen_h,#SRCCOPY)
EndProcedure
Dass einzelne Objekte, wie die "Herzen"/Requester in Farbe sind, liegt an der Reihenfolge der Bildschirmausgabe:
Procedure E_GLOBAL_TEXT_OUTPUT()
DC=StartDrawing(ScreenOutput()) ;DC = die Adresse für den Drawingbuffer
E_SHOW_TIMER_OBJECT()
E_SHOW_MAP_NAME()
E_SHOW_INFO_ON_MAP()
E_SHOW_BOSS_NAME()
E_SCROLL_TEXT_BASE()
E_NPC_TEXT_OUTPUT()
E_SHOW_VERSION_INFO(e_version_info_text.s)
E_SHOW_DEBUG_INFO()
E_SHOW_COORDINATES()
E_GRAY_SCALE(DC) ;dass ist die wichtige Routine (DC = die Adresse für den Drawingbuffer)
StopDrawing()
EndProcedure
;-----------------------------------------------------------
Procedure E_DRAW_FINAL_RENDER_WIN()
;just a simple overlay, shows game/engine state and player data(game data)
If e_gfx_pause_valid.b=#True And e_engine_mode=#PAUSE
DisplayTransparentSprite(e_gfx_pause_id.i,0,0,240)
E_GAME_PAUSE_DIALOG()
EndIf
If e_engine_mode.b=#GAME_OVER
E_GAME_OVER()
EndIf
If e_engine_mode.b=#NO_XBOX_INPUT_DEVICE
DisplayTransparentSprite(e_gfx_no_controller_id.i,0,0,255)
E_MISSING_CONTROLLER_DIALOG()
EndIf
EndProcedure
;---------------------------------
Procedure E_SHOW_PLAY_FIELD()
;draw the mess
If e_show_play_field.b=#False
ProcedureReturn #False
EndIf
E_STAMP_OVERLAY()
E_SHOW_WORLD_START()
E_STAMP_OVERLAY_SHOW()
E_BOSS_SHOW_HEALTH_BAR()
E_GLOBAL_TEXT_OUTPUT() ;beinhaltet die Graustufenroutine und alle Drawings die über Startdrawing(ScreenOutput) laufen
E_SHOW_PLAYER_HEARD_SYMBOLS() ;deshalb in bunt

E_GLOBAL_FPS_COUNTER()
E_DRAW_FINAL_RENDER_WIN()
FlipBuffers()
EndProcedure