Тема: Загрузка
Показать сообщение отдельно
Старый 20.09.2007, 18:55   #24
jimon
 
Сообщений: n/a
Re: Загрузка

блин, "идиоты !"
возможность программы работать с несколькими потоками
ну скажите мне хоть одну вещь которая относится здесь К ООП ?!
блин, ваще ... в блице3д просто нету встроенных средств
управления мультипоточностью
а так мультипоточность не зависит от возможностей языка на прямую

что у меня :
в TGui запихан такой код :
	Field LoadingCurrentState%
	Field LoadingMaxState% = 130
	Field LoadingCountStates% = 0
	Field LoadingBarGui:TGuiProgressBar
	Field LoadingImage:TResourceImage
	
	Function LoadingBarInit()'draw first loading screen
		SetClsColor 0,155,208
		Cls
		Flip 0
	End Function
	
	Method LoadingBar(StateValues% = 1)'work with loading screen

		'if loading bar isnt ever created - please create them
		If LoadingBarGui = Null Then
			LoadingBarGui = TGuiProgressBar.Create(GraphicsWidth() / 2 - 100,GraphicsHeight() / 2 + 32,200,20)
		End If
		
		If LoadingImage = Null Then
			LoadingImage = GetResImage("Menu_PleaseWaitLoading")
		End If
		
		'add states
		LoadingCurrentState:+StateValues
		
		'check if max states < current states .. them recalculate max states
		If LoadingCurrentState > LoadingMaxState Then
			LoadingMaxState = LoadingCurrentState
		End If
		
		'setup progress bar values
		LoadingBarGui.SetValue(LoadingCurrentState,LoadingMaxState)
		
		'update gui module
		Gui.Update()
		
		'draw loading screen
		SetClsColor 0,155,208
		Cls
		DrawImage LoadingImage.Image(),GraphicsWidth() / 2,GraphicsHeight() / 2
		Gui.Draw()
		Flip
		
		'If KeyHit(key_f6) Game.ScreenShot()
	End Method
	Method LoadingBarClose() 'close loading bar
		'free loading bar
		LoadingBarGui.Free()
		LoadingImage = Null
		
		'if we need to calculate this shit - get fuck out message
		If LoadingCountStates = 1 Then
			RuntimeError "LoadingBar Maximum up to "+LoadingMaxState+" !!!"
		End If
		
		'clear screen
		Cls
		Flip 0
	End Method
потом загрузка :
1) Инит екрана
2) создает ресур манагер
3) грузит ресурсы нужные для ядра
4) создает гуи
5) создает екран загрузки
6) все остальное

просто при каждой загрузке ресурса стоит вызов Gui.LoadingBar()
и все
 
Ответить с цитированием