📄 levelplus.cpp
字号:
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 + -