⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 levelplus.cpp

📁 一个96K的3D游戏源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		if(Temp->Type==_Command_Create_Torus) fwrite(Temp->Data,sizeof(tCommand_Create_Torus),1,F);
		if(Temp->Type==_Command_Set_Material) fwrite(Temp->Data,sizeof(tCommand_Set_Material),1,F);
		if(Temp->Type==_Command_Set_Material_Opt) WriteMaterialOpt(F,Temp->Data);
//		if(Temp->Type==_Command_Set_Material_Opt) fwrite(Temp->Data,sizeof(tCommand_Set_Material_Opt),1,F);
		if(Temp->Type==_Command_Create_Cylinder) fwrite(Temp->Data,sizeof(tCommand_Create_Cylinder),1,F);
		Temp=Temp->Next;
	}
	M=_Command_GlobalEnd;
	fwrite(&M,sizeof(char),1,F);

	
	fclose(F);
}

bool IsAChildOf(tSector *Test,tSector *Father)
{
	while(Test->Father!=NULL)
	{
		if(Test->Father==Father) return(true);
		Test=Test->Father;
	}
	return(false);
}

void SetCommand_Create_Cube(tCommand *Temp,long _PartsI,float _EckAmount)
{
	tCommand_Create_Cube *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Cube;
	Temp->Data=malloc(sizeof(tCommand_Create_Cube));
	TempC=(tCommand_Create_Cube*)Temp->Data;
	TempC->EckAmount=_EckAmount;
	TempC->PartsI=_PartsI;
}

void SetCommand_Create_Plane(tCommand *Temp,long _PartsI,float _EckAmount)
{
	tCommand_Create_Plane *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Create_Plane;
	Temp->Data=malloc(sizeof(tCommand_Create_Plane));
	TempC=(tCommand_Create_Plane*)Temp->Data;
	TempC->EckAmount=_EckAmount;
	TempC->PartsI=_PartsI;
}

void SetCommand_Create_Kegel(tCommand *Temp,long Parts,long BParts,long Rings)
{
	tCommand_Create_Kegel *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Create_Kegel;
	Temp->Data=malloc(sizeof(tCommand_Create_Kegel));
	TempC=(tCommand_Create_Kegel*)Temp->Data;
	TempC->BParts=BParts;
	TempC->Parts=Parts;
	TempC->Rings=Rings;
}

void SetCommand_Create_Torus(tCommand *Temp,long Parts,long Rings,float Radius)
{
	tCommand_Create_Torus *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Create_Torus;
	Temp->Data=malloc(sizeof(tCommand_Create_Torus));
	TempC=(tCommand_Create_Torus*)Temp->Data;
	TempC->Parts=Parts;
	TempC->Radius=Radius;
	TempC->Rings=Rings;
}

void SetCommand_Create_Cylinder(tCommand *Temp,long Parts,long Rings,float EckAmount)
{
	tCommand_Create_Cylinder *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Create_Cylinder;
	Temp->Data=malloc(sizeof(tCommand_Create_Cylinder));
	TempC=(tCommand_Create_Cylinder*)Temp->Data;
	TempC->Parts=Parts;
	TempC->Rings=Rings;
	TempC->EckAmount=EckAmount;
}

void SetCommand_Change_Attributes(tCommand *Temp,long _Nr,tP3D _Pos,tP3D _Size,float _SizeMul)
{
	tCommand_Change_Attributes *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Change_Attributes;
	Temp->Data=malloc(sizeof(tCommand_Change_Attributes));
	TempC=(tCommand_Change_Attributes*)Temp->Data;
	TempC->Nr=_Nr;
	TempC->Pos=_Pos;
	TempC->Size=_Size;
	TempC->SizeMul=_SizeMul;
}

void SetCommand_Change_Attributes_Opt(tCommand *Temp,long _Nr,tP3D _Pos,tP3D _Size,float _SizeMul,unsigned char Content)
{
	tCommand_Change_Attributes_Opt *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Change_Attributes_Opt;
	Temp->Data=malloc(sizeof(tCommand_Change_Attributes_Opt));
	TempC=(tCommand_Change_Attributes_Opt*)Temp->Data;
	TempC->Content=Content;
	TempC->Nr=_Nr;
	TempC->Pos=_Pos;
	TempC->Size=_Size;
	TempC->SizeMul=_SizeMul;
}

void SetCommand_Move_Vertice_With_Radius(tCommand *Temp,long _SNr,long _VNr,tP3D _Vek,float _Radius,char SubDivs)
{
	tCommand_Move_Vertice_With_Radius *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Move_Vertice_With_Radius;
	Temp->Data=malloc(sizeof(tCommand_Move_Vertice_With_Radius));
	TempC=(tCommand_Move_Vertice_With_Radius*)Temp->Data;
	TempC->Radius=_Radius;
	TempC->SNr=_SNr;
	TempC->Vek=_Vek;
	TempC->VNr=_VNr;
	TempC->SubDivs=SubDivs;
}
void SetCommand_Clone(tCommand *Temp,long SNr)
{
	tCommand_Clone *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Clone;
	Temp->Data=malloc(sizeof(tCommand_Clone));
	TempC=(tCommand_Clone*)Temp->Data;
	TempC->SNr=SNr;
}

void SetCommand_MoveMitte(tCommand *Temp,long SNr,tP3D Pos)
{
	tCommand_MoveMitte *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_MoveMitte;
	Temp->Data=malloc(sizeof(tCommand_MoveMitte));
	TempC=(tCommand_MoveMitte*)Temp->Data;
	TempC->Nr=SNr;
	TempC->Pos=Pos;
}

void SetCommand_CreateItem(tCommand *Temp,tP3D Pos,long Flags,long Attr)
{
	tCommand_CreateItem *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_CreateItem;
	Temp->Data=malloc(sizeof(tCommand_CreateItem));
	TempC=(tCommand_CreateItem*)Temp->Data;
	TempC->Pos=Pos;
	TempC->Attr=Attr;
	TempC->Flags=Flags;
}

void SetCommand_Rotate(tCommand *Temp,long SNr,char Dir,float Amount)
{
	tCommand_Rotate *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Rotate;
	Temp->Data=malloc(sizeof(tCommand_Rotate));
	TempC=(tCommand_Rotate*)Temp->Data;
	TempC->SNr=SNr;
	TempC->Dir=Dir;
	TempC->Amount=Amount;
}

void SetCommand_Make_Sub(tCommand *Temp,long SNr,long FNr)
{
	tCommand_Make_Sub *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Make_Sub;
	Temp->Data=malloc(sizeof(tCommand_Make_Sub));
	TempC=(tCommand_Make_Sub*)Temp->Data;
	TempC->SNr=SNr;
	TempC->FNr=FNr;
}

void SetCommand_Merge(tCommand *Temp,long SNr,long FNr)
{
	tCommand_Merge *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Merge;
	Temp->Data=malloc(sizeof(tCommand_Merge));
	TempC=(tCommand_Merge*)Temp->Data;
	TempC->SNr=SNr;
	TempC->FNr=FNr;
}

void SetCommand_ChangeFlags(tCommand *Temp,long SNr,long Flags,long Attr,long Attr2,long Attr3,long Attr4)
{
	tCommand_ChangeFlags *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_ChangeFlags;
	Temp->Data=malloc(sizeof(tCommand_ChangeFlags));
	TempC=(tCommand_ChangeFlags*)Temp->Data;
	TempC->SNr=SNr;
	TempC->Flags=Flags;
//	TempC->Attr=Attr;
	TempC->Attr=MAKELONG(MAKEWORD(Attr,Attr2),MAKEWORD(Attr3,Attr4));
}


void SetCommand_InsertLevel(tCommand *Temp,char *FName)
{
	tCommand_InsertLevel *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_InsertLevel;
	Temp->Data=malloc(sizeof(tCommand_InsertLevel));
	TempC=(tCommand_InsertLevel*)Temp->Data;
//	slength
	memcpy(&TempC->FName,FName,8);
//	TempC->FName=FName;
}

void SetCommand_Set_Material(tCommand *Temp,long SNr,long Material,long TexType,float Param1,float Param2)
{
	tCommand_Set_Material *TempC;
	if(Temp->Data!=NULL) free(Temp->Data);

	Temp->Type=_Command_Set_Material;
	Temp->Data=malloc(sizeof(tCommand_Set_Material));
	TempC=(tCommand_Set_Material*)Temp->Data;
	TempC->Material=Material;
	TempC->SNr=SNr;
	TempC->Par1=Param1;
	TempC->Par2=Param2;
	TempC->TexType=TexType;
}



long CountCommandList(tCommand *Temp)
{
	long I=0;
	while(Temp!=NULL)
	{
		I++;
		Temp=Temp->Next;
	}
	return(I);
}

long SizeOfCommandList(tCommand *Temp)
{
	long I=1;
	while(Temp!=NULL)
	{
		I+=1;
		if(Temp->Type==_Command_Cube) I+=sizeof(tCommand_Create_Cube);
		if(Temp->Type==_Command_Change_Attributes) I+=sizeof(tCommand_Change_Attributes);
		if(Temp->Type==_Command_Change_Attributes_Opt) I+=sizeof(tCommand_Change_Attributes_Opt);
		if(Temp->Type==_Command_Move_Vertice_With_Radius) I+=sizeof(tCommand_Move_Vertice_With_Radius);
//		if(Temp->Type==_Command_Modelliere) I+=sizeof(tCommand_Modelliere);
		if(Temp->Type==_Command_Clone) I+=sizeof(tCommand_Clone);
		if(Temp->Type==_Command_MoveMitte) I+=sizeof(tCommand_MoveMitte);
		if(Temp->Type==_Command_CreateItem) I+=sizeof(tCommand_CreateItem);
		if(Temp->Type==_Command_InsertLevel) I+=sizeof(tCommand_InsertLevel);
		if(Temp->Type==_Command_Insert_Opt) I+=sizeof(tCommand_InsertOpt);
		if(Temp->Type==_Command_Merge) I+=sizeof(tCommand_Merge);
		if(Temp->Type==_Command_ChangeFlags) I+=sizeof(tCommand_ChangeFlags);
		if(Temp->Type==_Command_Rotate) I+=sizeof(tCommand_Rotate);
		if(Temp->Type==_Command_Make_Sub) I+=sizeof(tCommand_Make_Sub);
		if(Temp->Type==_Command_Create_Plane) I+=sizeof(tCommand_Create_Plane);
		if(Temp->Type==_Command_Create_Kegel) I+=sizeof(tCommand_Create_Kegel);
		if(Temp->Type==_Command_Create_Torus) I+=sizeof(tCommand_Create_Torus);
		if(Temp->Type==_Command_Create_Cylinder) I+=sizeof(tCommand_Create_Cylinder);
		if(Temp->Type==_Command_Set_Material) I+=sizeof(tCommand_Set_Material);
		Temp=Temp->Next;
	}
	return(I);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -