Показать сообщение отдельно
Старый 12.09.2016, 17:15   #1
CRASHER
Разработчик
 
Регистрация: 08.03.2007
Сообщений: 530
Написано 31 полезных сообщений
(для 36 пользователей)
Чтение записи после перезагрузки приложения

Здраствуй Булка!!! Живали еще ты?!)))
Вот код. Закоментите текстуру если лень добавлять свою пжлст.

Graphics3D 800,600,16
SetBuffer BackBuffer()

font=LoadFont("Blitz",14,True)
SetFont font
Camera=CreateCamera()
PositionEntity Camera,0,2,-2

plan=CreatePlane()
Texture=LoadTexture("text.jpg")
ScaleTexture(Texture,3,3)
EntityTexture(plan,Texture)

Global xm=3,zm=5
Global Newz,ner,Select1

Type Neur
	Field x#,y#,z#
	Field mass
	Field func
	Field Ent
	Field Child[99],CountChld
End Type

Type Buton
	Field x,y
	Field Status
End Type

Save=CreateCube();save
ScaleEntity Save,0.51,0.1,0.51
EntityPickMode Save,2
PositionEntity Save,-2,0,5
Load=CreateCube();load
ScaleEntity Load,0.51,0.1,0.51
EntityPickMode Load,2
PositionEntity Load,-4,0,5

Light=CreateLight()
RotateEntity Light,90,0,0

For i=0 To xm
For i2=0 To zm
	NewNeur.Neur=New Neur
	NewNeur\Ent=CreateCube()
	ScaleEntity NewNeur\Ent,0.3,0.1,0.3
	NameEntity(NewNeur\Ent, Handle(NewNeur)) ;"Neur"+Str( i )+","+Str(i2))
	NewNeur\x=(i2)
	NewNeur\y=0
	NewNeur\z=i
	PositionEntity(NewNeur\Ent,NewNeur\x,NewNeur\y,NewNeur\z)
	EntityPickMode NewNeur\Ent,2
Next
Next

While Not KeyDown(1)

CameraProject(camera,EntityX(Save),EntityY(Save),EntityZ(Save))
x1b=ProjectedX()
y1b=ProjectedY()
CameraProject(camera,EntityX(Load),EntityY(Load),EntityZ(Load))
x2b=ProjectedX()
y2b=ProjectedY()
select1=0
If MouseHit(1)
	CameraPick(camera,MouseX(),MouseY())
	If PickedEntity()=Save
		File=WriteFile("save01.dat")
		WriteInt(File,xm)
		WriteInt(File,zm)
		
		For NewNeur.Neur=Each Neur
			WriteInt(File,NewNeur\CountChld)
			For i=1 To NewNeur\CountChld
				WriteInt(File,NewNeur\Child[i])
				
			Next
		Next
		CloseFile(File)
	ElseIf PickedEntity()=Load 
		File=OpenFile("save01.dat")
		If File<>0
			xm=ReadInt(File)
			zm=ReadInt(File)
			For NewNeur.Neur=Each Neur
				NewNeur\CountChld=ReadInt(File)
				For i=1 To NewNeur\CountChld
					
					NewNeur\Child[i]=ReadInt(File)
					
				Next
			Next
			CloseFile(File)
		EndIf
		
	Else
		select1=1
	EndIf
ElseIf MouseHit(2)
	CameraPick(camera,MouseX(),MouseY())
	If PickedEntity()=Save
		
	ElseIf PickedEntity()=Load 
		
	Else
		select1=2
	EndIf
Else
	EntityPick(Save,0)
EndIf

If PickedEntity()<>0
ext=0
If select1=1
	If LastEnt=0
		
		LastEnt=PickedEntity()
		EntityColor(LastEnt,250,50,50)
	Else
		If LastEnt<>PickedEntity()
			NewNeur.Neur=Object.Neur(EntityName(LastEnt))
			mem=0
			For i=1 To NewNeur\CountChld
				If NewNeur\Child[i]=PickedEntity()
					ext=1
					Exit
				Else
					ext=0
					
				EndIf
			Next
			If ext=0
			;Stop()
				NewNeur\CountChld=NewNeur\CountChld+1
				NewNeur\Child[NewNeur\CountChld]=PickedEntity()
			EndIf
		Else
			EntityColor(LastEnt,250,250,250)
			LastEnt=0
		EndIf
	EndIf
EndIf
If select1=2
	If LastEnt<>PickedEntity() And LastEnt<>0
		NewNeur.Neur=Object.Neur(EntityName(LastEnt))
		ext=0
		For i=1 To NewNeur\CountChld
			If NewNeur\Child[i]=PickedEntity()
				ext=1
				Exit
			EndIf
		Next
		If ext=1
			NewNeur\Child[i]=NewNeur\Child[NewNeur\CountChld]
			NewNeur\CountChld=NewNeur\CountChld-1
		EndIf
	EndIf
EndIf
EndIf

mxspd#=MouseXSpeed()*0.25
myspd#=MouseYSpeed()*0.25
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2	
campitch#=EntityPitch(Camera)+myspd#
If campitch#<-85 Then campitch#=-85
If campitch#>85 Then campitch#=85
RotateEntity Camera,campitch#,EntityYaw(Camera)-mxspd#,EntityRoll(Camera)

If KeyDown(17) MoveEntity Camera,0,0,.2
If KeyDown(31) MoveEntity Camera,0,0,-.2
If KeyDown(32) MoveEntity Camera,.2,0,0
If KeyDown(30) MoveEntity Camera,-.2,0,0

RenderWorld
UpdateWorld
If KeyHit(57) Then w=1-w
WireFrame w
Text 10,10,"----------TESTING----------"
For NewNeur.Neur=Each Neur

	CameraProject(camera,EntityX(NewNeur\Ent),EntityY(NewNeur\Ent),EntityZ(NewNeur\Ent))
	xb=ProjectedX()
	yb=ProjectedY()
	Text xb,yb,EntityName(NewNeur\Ent)
	For i=1 To NewNeur\CountChld
		CameraProject(camera,EntityX(NewNeur\Child[i]),EntityY(NewNeur\Child[i]),EntityZ(NewNeur\Child[i]))
		Line(xb,yb,ProjectedX(),ProjectedY())
		Text(10,30,NewNeur\CountChld)
	Next
Next
Color(250,50,50)
Text(x1b,y1b-30,"Save")
Text(x2b,y2b-30,"Load")
Flip
Wend
End

Function UpdateNeurs()
	
End Function

;__________________________________________________________________
	EntityColor(PickedEntity(),10,210,10)
	If LastEnt<>0 
		EntityColor(LastEnt,250,250,250)		
	EndIf
	If Select1<1 Select1=Select1+1
	If Select1=2
		If LastEnt<>PickedEntity()
			NewNeur.Neur=Object.Neur(EntityName(LastEnt))

			NewNeur\CountChld=NewNeur\CountChld+1
			NewNeur\Child[NewNeur\CountChld]=PickedEntity()			
		Else
			Select1=0
			LastEnt=	0
		EndIf
	Else
		;Stop()
		If  LastEnt=0  LastEnt=PickedEntity()
	EndIf
	
;ElseIf LastEnt<>0
	If Select1=0
		EntityColor(LastEnt,250,250,250)
	ElseIf Select1=1
		EntityColor(LastEnt,250,50,50)
	EndIf
Вопрос в следующем. Если сохранять и загружать сохранения в запущенной программе то никаких проблем. Но перезагрузив программу уже считать то что было сохранено в последний раз не выходит. Подскажите нюанс, чего не доделал?
Сохраняю чилды объектов. Чтобы добавить чилд к объекту надо щелкнуть по нему, и после щелкнуть по объекту который нужно к нему подцепить. закончить добавление щелчком по объекту к которому добавляли чилды.
(Offline)
 
Ответить с цитированием