first source submit into svn

This commit is contained in:
codeimp 2007-06-13 19:39:38 +00:00
commit 41a3a41edf
60 changed files with 46301 additions and 0 deletions

0
Build/Builder.cfg Normal file
View file

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,152 @@
/*******************************************************************\
Doom Builder Script highlighting definitions for DED
\*******************************************************************/
casesensitive = 0;
insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
linecomment = "#";
commentopen = "";
commentclose = "";
string = "\"";
escape = "\\";
terminator = "";
scopeopen = "{";
scopeclose = "}";
delimiters = " \n\r\t(){}[]:;!%^&*-+=.,<>/\?|\"";
functionopen = "";
functionclose = "";
argumentdelimiter = "";
keywordhelp = "";
keywords
{
[CODEPTR] = "[CODEPTR]";
[PARS] = "[PARS]";
[STRINGS] = "[STRINGS]";
Action.sound = "Action sound";
Alert.sound = "Alert sound";
Ammo = "Ammo";
Ammo.&.Keys = "Ammo & Keys";
Ammo.type = "Ammo type";
Attack.sound = "Attack sound";
Auto-map = "Auto-map";
BEHOLD.menu = "BEHOLD menu";
Berserk = "Berserk";
BFG.Cells/Shot = "BFG Cells/Shot";
Bits = "Bits";
Blue.Armor.Class = "Blue Armor Class";
Bobbing.frame = "Bobbing frame";
Chainsaw = "Chainsaw";
Change.music = "Change music";
Cheat = "Cheat";
Close.attack.frame = "Close attack frame";
Codep.Frame = "Codep Frame";
Death.frame = "Death frame";
Death.sound = "Death sound";
Deselect.frame = "Deselect frame";
Doom.version = "Doom version";
Duration = "Duration";
Exploding.frame = "Exploding frame";
Far.attack.frame = "Far attack frame";
Firing.frame = "Firing frame";
First.moving.frame = "First moving frame";
Frame = "Frame";
God.mode = "God mode";
God.Mode.Health = "God Mode Health";
Green.Armor.Class = "Green Armor Class";
Height = "Height";
Hit.points = "Hit points";
ID.# = "ID #";
IDFA.Armor = "IDFA Armor";
IDFA.Armor.Class = "IDFA Armor Class";
IDKFA.Armor = "IDKFA Armor";
IDKFA.Armor.Class = "IDKFA Armor Class";
INCLUDE = "INCLUDE";
INCLUDE.NOTEXT = "INCLUDE NOTEXT";
Initial.Bullets = "Initial Bullets";
Initial.frame = "Initial frame";
Initial.Health = "Initial Health";
Injury.frame = "Injury frame";
Invincibility = "Invincibility";
Invisibility = "Invisibility";
Level.Warp = "Level Warp";
Lite-amp.Goggles = "Lite-amp Goggles";
Mass = "Mass";
Max.ammo = "Max ammo";
Max.Armor = "Max Armor";
Max.Health = "Max Health";
Max.Soulsphere = "Max Soulsphere";
Megasphere.Health = "Megasphere Health";
Misc = "Misc";
Missile.damage = "Missile damage";
Monsters.Infight = "Monsters Infight";
Next.frame = "Next frame";
No.Clipping.1 = "No Clipping 1";
No.Clipping.2 = "No Clipping 2";
Offset = "Offset";
Pain.chance = "Pain chance";
Pain.sound = "Pain sound";
par = "par";
Patch.format = "Patch format";
Per.ammo = "Per ammo";
Player.Position = "Player Position";
Pointer = "Pointer";
Radiation.Suit = "Radiation Suit";
Reaction.time = "Reaction time";
Respawn.frame = "Respawn frame";
Select.frame = "Select frame";
Shooting.frame = "Shooting frame";
Soulsphere.Health = "Soulsphere Health";
Sound = "Sound";
Speed = "Speed";
Sprite = "Sprite";
Sprite.number = "Sprite number";
Sprite.subnumber = "Sprite subnumber";
Text = "Text";
Thing = "Thing";
Unknown.1 = "Unknown 1";
Unknown.2 = "Unknown 2";
Weapon = "Weapon";
Width = "Width";
Zero.1 = "Zero 1";
Zero.2 = "Zero 2";
Zero.3 = "Zero 3";
Zero.4 = "Zero 4";
Zero/One = "Zero/One";
}
constants
{
AMBUSH;
BOUNCES;
CORPSE;
COUNTITEM;
COUNTKILL;
DROPOFF;
DROPPED;
FLOAT;
FRIEND;
INFLOAT;
JUSTATTACKED;
JUSTHIT;
MISSILE;
NOBLOCKMAP;
NOBLOOD;
NOCLIP;
NOGRAVITY;
NOSECTOR;
NOTDMATCH;
PICKUP;
SHADOW;
SHOOTABLE;
SKULLFLY;
SLIDE;
SOLID;
SPAWNCEILING;
SPECIAL;
TELEPORT;
TOUCHY;
TRANSLATION1;
TRANSLATION2;
TRANSLUCENT;
}

View file

@ -0,0 +1,105 @@
/*******************************************************************\
Doom Builder Script highlighting definitions for DED
\*******************************************************************/
casesensitive = 0;
insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
linecomment = "#";
commentopen = "#>";
commentclose = "<#";
string = "\"";
escape = "\\";
terminator = "";
scopeopen = "{";
scopeclose = "}";
delimiters = " \n\r\t(){}[]:;!%^&*-+=.,<>/\?|\"";
functionopen = "";
functionclose = "";
argumentdelimiter = "";
keywordhelp = "http://deng.sourceforge.net/dew/Editing/%K";
keywords
{
Blending.Mode = "Blending Mode";
Copy.Model = "Copy Model";
File = "File";
Flags = "Flags";
Frame = "Frame";
Frame.Range = "Frame Range";
Group = "Group";
ID = "ID";
Include = "Include";
IncludeIf = "IncludeIf";
IncludeIf.Not = "IncludeIf Not";
Inter = "Inter";
Interpolate = "Interpolate";
MD2 = "MD2";
Model = "Model";
ModelPath = "ModelPath";
Off = "Off";
Offset = "Offset";
Offset.XYZ = "Offset XYZ";
Parm = "Parm";
Resize = "Resize";
Scale = "Scale";
Scale.XYZ = "Scale XYZ";
Selector = "Selector";
Selskin = "Selskin";
Selskin.Mask = "Selskin Mask";
Selskin.Shift = "Selskin Shift";
Selskins = "Selskins";
Shadow.Radius = "Shadow Radius";
Shiny = "Shiny";
Shiny.Color = "Shiny Color";
Shiny.Reaction = "Shiny Reaction";
Shiny.Skin = "Shiny Skin";
Skin = "Skin";
Skin.File = "Skin File";
Skin.Range = "Skin Range";
Skin.Ticks = "Skin Ticks";
SkipIf = "SkipIf";
SkipIf.Not = "SkipIf Not";
Sprite = "Sprite";
Sprite.Frame = "Sprite Frame";
State = "State";
Sub = "Sub";
Transparent = "Transparent";
}
constants
{
add;
alignpitch;
alignyaw;
autoscale;
brightshadow;
brightshadow2;
dark;
darkshadow;
fullbright;
idangle;
idframe;
idskin;
invmul;
litshiny;
movpitch;
movyaw;
mul;
nointerpol;
nomaxz;
noptc;
normal;
notexcomp;
noz;
ptoffsub1;
revsub;
selskin;
shadow1;
shadow2;
skintrans;
specular;
spin;
sub;
sub2;
worldtime;
}

View file

@ -0,0 +1,87 @@
/*******************************************************************\
Doom Builder Script highlighting definitions for LUA
\*******************************************************************/
casesensitive = 1;
insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
linecomment = "--";
commentopen = "--[";
commentclose = "]--";
string = "\"";
escape = "\\";
terminator = ";";
scopeopen = "";
scopeclose = "";
delimiters = " \n\r\t(){}[]:;!%^&*-+=.,<>/\?|\"'";
functionopen = "(";
functionclose = ")";
argumentdelimiter = ",";
keywordhelp = "";
keywords
{
// Reserved keywords
and = "and";
break = "break";
do = "do";
else = "else";
elseif = "elseif";
end = "end";
false = "false";
for = "for";
function = "function";
if = "if";
in = "in";
local = "local";
nil = "nil";
not = "not";
or = "or";
repeat = "repeat";
return = "return";
then = "then";
true = "true";
until = "until";
while = "while";
type = "type(v);";
// Debug methods
ConsoleLine = "ConsoleLine(text)";
// Scripting methods
DelayedCall = "DelayedCall(delay, method, [arguments])";
CancelCall = "CancelCall(callid)";
// Object methods
IsValidObjectID = "IsValidObjectID(id)";
GetObjectType = "GetObjectType(id)";
GetObjectAngle = "GetObjectAngle(id)";
GetObjectPosition = "GetObjectPosition(id)";
GetObjectsByTag = "GetObjectsByTag(tag)";
// Player methods
GetCurrentPlayers = "GetCurrentPlayers()";
GetPlayerName = "GetPlayerName(id)";
GetPlayerPlainTextName = "GetPlayerPlainTextName(id)";
LookAtPlayer = "LookAtPlayer(id)";
LookAtObject = "LookAtObject(playerid, targetid, speed)";
LookAtPosition = "LookAtPosition(playerid, x, y, z, angle, speed)";
// Map methods
GetCeilingTexture = "GetCeilingTexture(tag)";
GetFloorTexture = "GetFloorTexture(tag)";
ChangeCeilingTexture = "ChangeCeilingTexture(tag, texture)";
ChangeFloorTexture = "ChangeFloorTexture(tag, texture)";
GetCeilingHeight = "GetCeilingHeight(tag)";
GetFloorHeight = "GetFloorHeight(tag)";
MoveCeiling = "MoveCeiling(tag, targetheight, speed)";
MoveFloor = "MoveFloor(tag, targetheight, speed)";
}
constants
{
ACTIVATOR; // Object that activated the script
GAMETYPE; // Game type of the game currently running
SKILL; // Skill of the game currently running
MAPPACK; // Current map pack name
MAPNAME; // Current map name
}

View file

@ -0,0 +1,172 @@
/*******************************************************************\
Doom Builder Script highlighting definitions for FS
\*******************************************************************/
casesensitive = 1;
insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
linecomment = "//";
commentopen = "/*";
commentclose = "*/";
string = "\"";
escape = "\\";
terminator = ";";
scopeopen = "{";
scopeclose = "}";
delimiters = " \n\r\t(){}[]:;!%^&*-+=.,<>/\?|\"";
functionopen = "(";
functionclose = ")";
argumentdelimiter = ",";
keywordhelp = "";
keywords
{
Abs = "Abs(x)";
ACos = "ACos(x)";
AmbientSound = "AmbientSound(soundname)";
ASin = "ASin(x)";
ATan = "ATan(x)";
Beep = "Beep()";
Break = "Break()";
CeilingHeight = "CeilingHeight(tag, height)";
CeilingText = "CeilingText(tag, flat)";
ChangemMusic = "ChangemMusic(musicname)";
CheckCVar = "CheckCVar(cvar)";
CheckLife = "CheckLife(obj)";
ClearCamera = "ClearCamera()";
Clock = "Clock()";
CloseDoor = "CloseDoor(tag, speed)";
ColorMap = "ColorMap(tag, colormap)";
Const = "Const identifier = value";
Continue = "Continue()";
CopyInto = "CopyInto(source, target)";
Cos = "Cos(x)";
CreatePic = "CreatePic(lumpname, x, y, draw, trans, priority)";
DamageObj = "DamageObj(obj, damage)";
ElementAt = "ElementAt(array, index)";
Else = "Else";
ElseIf = "ElseIf(expression)";
ExitLevel = "ExitLevel()";
ExitSecret = "ExitSecret()";
Exp = "Exp(x)";
FadeLight = "FadeLight(tag, level, speed)";
Fixed = "Fixed expression";
Floor = "Floor(x)";
FloorHeight = "FloorHeight(tag, height)";
FloorText = "FloorText(tag, flat)";
For = "For(initialization, condition, iteration)";
GameMode = "GameMode()";
GameSkill = "GameSkill()";
GetFriction = "GetFriction(tag)";
GetPicAttr = "GetPicAttr(handle, selector)";
GetPicHandle = "GetPicHandle(lumpname, x, y)";
GetPicHP = "GetPicHP()";
GetPicLP = "GetPicLP()";
GetPicPriority = "GetPicPriority(handle)";
Goto = "Goto(label)";
HealObj = "HealObj(obj, heal)";
Hub = "Hub";
If = "If(expression)";
Include = "Include(lumpname)";
Int = "Int expression";
IsPlayerObj = "IsPlayerObj(obj)";
Kill = "Kill(obj)";
Length = "Length(array)";
LightLevel = "LightLevel(tag, level)";
LineAttack = "LineAttack(obj, angle, damage)";
LineTrigger = "LineTrigger(special, tag)";
Log = "Log(x)";
MapThingNumExist = "MapThingNumExist(mapthing)";
MapThings = "MapThings()";
Max = "Max(x, y)";
MaxPlayerAmmo = "MaxPlayerAmmo(plnum, ammonum, amount)";
Message = "Message(message)";
Min = "Min(x, y)";
MObj = "MObj expression";
ModifyPic = "ModifyPic(handle, lumpname, x, y)";
MoveCamera = "MoveCamera(target, targetheight, movespeed, targetangle, anglespeed)";
MoveCeil = "MoveCeil(tag, destheight, speed)";
MoveFloor = "MoveFloor(tag, destheight, speed)";
NewArray = "NewArray(array)";
ObjAngle = "ObjAngle(obj)";
ObjAwaken = "ObjAwaken(obj)";
ObjFlag = "ObjFlag()";
ObjFlag2 = "ObjFlag2()";
ObjHealth = "ObjHealth(obj)";
ObjMomX = "ObjMomX(obj, momx)";
ObjMomY = "ObjMomY(obj, momy)";
ObjMomZ = "ObjMomZ(obj, momz)";
ObjSector = "ObjSector(obj)";
ObjState = "ObjState(obj, state)";
ObjTarget = "ObjTarget(source, target)";
ObjType = "ObjType(obj)";
ObjX = "ObjX(obj)";
ObjY = "ObjY(obj)";
ObjZ = "ObjZ(obj)";
OpenDoor = "OpenDoor(tag, waittime, speed)";
PlayDemo = "PlayDemo(demolump)";
Player = "Player(playerobj)";
PlayerAddFrag = "PlayerAddFrag(playerid, modifier)";
PlayerAmmo = "PlayerAmmo(plnum, ammonum, amount)";
PlayerInGame = "PlayerInGame(playerid)";
PlayerKeys = "PlayerKeys(plnum, keynum, givetake)";
PlayerMsg = "PlayerMsg(player, message)";
PlayerName = "PlayerName(playerid)";
PlayerObj = "PlayerObj(playerid)";
PlayerSelWep = "PlayerSelWep(playerid, weapon)";
PlayerSkin = "PlayerSkin(playerid)";
PlayerTimedTip = "PlayerTimedTip(message)";
PlayerTip = "PlayerTip(message)";
PlayerWeapon = "PlayerWeapon(playerid, weapon, givetake)";
PointToAngle = "PointToAngle(x1, y1, x2, y2)";
PointToDist = "PointToDist(x1, y1, x2, y2)";
Pow = "Pow(x, y)";
Print = "Print(message)";
PRnd = "PRnd()";
PushThing = "PushThing(obj, angle, force)";
RadiusAttack = "RadiusAttack(spot, source, damage)";
ReactionTime = "ReactionTime(obj, val)";
RemoveObj = "RemoveObj(obj)";
Ressurect = "Ressurect(obj)";
Return = "Return()";
Rnd = "Rnd()";
RunCommand = "RunCommand(command)";
Script = "Script expression";
ScriptRunning = "ScriptRunning(scriptid)";
ScriptWait = "ScriptWait(scriptid)";
ScriptWaitPre = "ScriptWaitPre(scriptid)";
SetCamera = "SetCamera(obj, angle, height, pitch)";
SetCoronas = "SetCoronas()";
SetElementAt = "SetElementAt(array, index, element)";
SetFriction = "SetFriction(tag, friction)";
SetLineBlocking = "SetLineBlocking(tag, block)";
SetLineMnBlock = "SetLineMnBlock(tag, block)";
SetLineTexture = "SetLineTexture(tag, side, position, texture)";
SetPicPriority = "SetPicPriority(handle, priority)";
SetPicTrans = "SetPicTrans(handle, trans)";
SetPicVisible = "SetPicVisible(handle, visible)";
SilentTeleport = "SilentTeleport(obj, sectortag)";
Sin = "Sin(x)";
SkinColor = "SkinColor(playerid)";
Spawn = "Spawn(type, x, y, angle, z)";
SpawnExplosion = "SpawnExplosion(damage, spot, source)";
SpawnMissile = "SpawnMissile(obj, target, missile)";
SpawnShot = "SpawnShot(type, source, target, face)";
Sqrt = "Sqrt(x)";
StartScript = "StartScript(scriptid)";
StartSectorSound = "StartSectorSound(tag, soundname)";
StartSkill = "StartSkill(skill)";
StartSound = "StartSound(obj, soundname)";
String = "String expression";
TagWait = "TagWait(tag)";
Tan = "Tan(x)";
Teleport = "Teleport(obj, sectortag)";
TestLocation = "TestLocation(obj)";
TimedTip = "TimedTip(message)";
Tip = "Tip(message)";
Wait = "Wait(time)";
While = "While(expression)";
}
constants
{
}

View file

@ -0,0 +1,676 @@
/*******************************************************************\
Doom Builder Script highlighting definitions for ACS
\*******************************************************************/
casesensitive = 0;
insertcase = 0; // 0=Normal, 1=Lowercase, 2=Uppercase
linecomment = "//";
commentopen = "/*";
commentclose = "*/";
string = "\"";
escape = "\\";
terminator = ";";
scopeopen = "{";
scopeclose = "}";
delimiters = " \n\r\t(){}[]:;!%^&*-+=.,<>/\?|\"";
functionopen = "(";
functionclose = ")";
argumentdelimiter = ",";
keywordhelp = "http://www.zdoom.org/wiki/index.php?title=%K";
keywords
{
#Define = "#Define identifier expression";
#Include = "#Include \"\"";
#Library = "#Library \"\"";
ACS_Execute = "ACS_Execute(script, map, arg1, arg2, arg3)";
ACS_ExecuteAlways = "ACS_ExecuteAlways(script, map, arg1, arg2, arg3)";
ACS_ExecuteWait = "ACS_ExecuteWait(script, map, arg1, arg2, arg3)";
ACS_ExecuteWithResult = "ACS_ExecuteWithResult(script, arg1, arg2, arg3)";
ACS_LockedExecute = "ACS_LockedExecute(script, map, arg1, arg2, lock)";
ACS_Suspend = "ACS_Suspend(script, map)";
ACS_Terminate = "ACS_Terminate(script, map)";
ActivatorSound = "ActivatorSound(name, volume)";
ActivatorTID = "ActivatorTID()";
AmbientSound = "AmbientSound(name, volume)";
Autosave = "Autosave()";
bool = "bool expression";
Break = "Break";
CancelFade = "CancelFade()";
Case = "Case expression:";
Ceiling_CrushAndRaise = "Ceiling_CrushAndRaise(tag, speed, crush)";
Ceiling_CrushAndRaiseA = "Ceiling_CrushAndRaiseA(tag, dspeed, uspeed, crush)";
Ceiling_CrushAndRaiseSilentA = "Ceiling_CrushAndRaiseSilentA(tag, dspeed, uspeed, crush)";
Ceiling_CrushRaiseAndStay = "Ceiling_CrushRaiseAndStay(tag, speed, crush)";
Ceiling_CrushRaiseAndStayA = "Ceiling_CrushRaiseAndStayA(tag, dspeed, uspeed, crush)";
Ceiling_CrushRaiseAndStaySilA = "Ceiling_CrushRaiseAndStaySilA(tag, dspeed, uspeed, crush)";
Ceiling_CrushStop = "Ceiling_CrushStop(tag)";
Ceiling_LowerAndCrush = "Ceiling_LowerAndCrush(tag, speed, crush)";
Ceiling_LowerByValue = "Ceiling_LowerByValue(tag, speed, height)";
Ceiling_LowerByValueTimes8 = "Ceiling_LowerByValueTimes8(tag, speed, height)";
Ceiling_LowerInstant = "Ceiling_LowerInstant(tag, arg1, height)";
Ceiling_LowerToFloor = "Ceiling_LowerToFloor(tag, speed)";
Ceiling_LowerToHighestFloor = "Ceiling_LowerToHighestFloor(tag, speed)";
Ceiling_LowerToLowest = "Ceiling_LowerToLowest(tag, speed)";
Ceiling_MoveToValueTimes8 = "Ceiling_MoveToValueTimes8(tag, speed, height, neg)";
Ceiling_RaiseByValue = "Ceiling_RaiseByValue(tag, speed, height)";
Ceiling_RaiseByValueTimes8 = "Ceiling_RaiseByValueTimes8(tag, speed, height)";
Ceiling_RaiseInstant = "Ceiling_RaiseInstant(tag, arg1, height)";
Ceiling_RaiseToNearest = "Ceiling_RaiseToNearest(tag, speed)";
Ceiling_Waggle = "Ceiling_Waggle(tag, amp, freq, offset, time)";
ChangeCamera = "ChangeCamera(tid, who, revert)";
ChangeCeiling = "ChangeCeiling(tag, flat)";
ChangeFloor = "ChangeFloor(tag, flat)";
ChangeSkill = "ChangeSkill(skill)";
ChangeSky = "ChangeSky(sky1, sky2)";
CheckInventory = "CheckInventory(type)";
CheckWeapon = "CheckWeapon(weapon)";
ClearInventory = "ClearInventory()";
ClearLineSpecial = "ClearLineSpecial()";
ClearForceField = "ClearForceField(tag)";
Const = "Const";
Continue = "Continue";
cos = "cos(angle)";
CreateTranslation = "CreateTranslation(transnumber, translation, translation, translation, ...)";
DamageThing = "DamageThing(amount)";
Default = "Default:";
Delay = "Delay(tics)";
Do = "Do";
Door_Close = "Door_Close(tag, speed)";
Door_CloseWaitOpen = "Door_CloseWaitOpen(tag, speed, delay)";
Door_LockedRaise = "Door_LockedRaise(tag, speed, delay, lock)";
Door_Open = "Door_Open(tag, speed)";
Door_Raise = "Door_Raise(tag, speed, delay)";
Elevator_LowerToNearest = "Elevator_LowerToNearest(tag, speed)";
Elevator_MoveToFloor = "Elevator_MoveToFloor(tag, speed)";
Elevator_RaiseToNearest = "Elevator_RaiseToNearest(tag, speed)";
Else = "Else";
Exit_Normal = "Exit_Normal(pos)";
Exit_Secret = "Exit_Secret(pos)";
FadeRange = "FadeRange(red1, green1, blue1, red2, green2, blue2, amount, seconds)";
FadeTo = "FadeTo(red, green, blue, amount, seconds)";
FixedDiv = "FixedDiv(fa, fb)";
FixedMul = "FixedMul(fa, fb)";
Floor_CrushStop = "Floor_CrushStop(tag)";
Floor_Donut = "Floor_Donut(ptag, pspeed, sspeed)";
Floor_LowerByValue = "Floor_LowerByValue(tag, speed, height)";
Floor_LowerByValueTimes8 = "Floor_LowerByValueTimes8(tag, speed, height)";
Floor_LowerInstant = "Floor_LowerInstant(tag, arg1, height)";
Floor_LowerToHighest = "Floor_LowerToHighest(tag, speed, adjust)";
Floor_LowerToLowest = "Floor_LowerToLowest(tag, speed)";
Floor_LowerToLowestTxTy = "Floor_LowerToLowestTxTy(tag, speed)";
Floor_LowerToNearest = "Floor_LowerToNearest(tag, speed)";
Floor_MoveToValueTimes8 = "Floor_MoveToValueTimes8(tag, speed, height, neg)";
Floor_RaiseAndCrush = "Floor_RaiseAndCrush(tag, speed, crush)";
Floor_RaiseByTexture = "Floor_RaiseByTexture(tag, speed)";
Floor_RaiseByValue = "Floor_RaiseByValue(tag, speed, height)";
Floor_RaiseByValueTimes8 = "Floor_RaiseByValueTimes8(tag, speed, height)";
Floor_RaiseByValueTxTy = "Floor_RaiseByValueTxTy(tag, speed, height)";
Floor_RaiseInstant = "Floor_RaiseInstant(tag, arg1, height)";
Floor_RaiseToHighest = "Floor_RaiseToHighest(tag, speed)";
Floor_RaiseToLowestCeiling = "Floor_RaiseToLowestCeiling(tag, speed)";
Floor_RaiseToNearest = "Floor_RaiseToNearest(tag, speed)";
Floor_TransferNumeric = "Floor_TransferNumeric(tag)";
Floor_TransferTrigger = "Floor_TransferTrigger(tag)";
Floor_Waggle = "Floor_Waggle(tag, amp, freq, offset, time)";
FloorAndCeiling_LowerByValue = "FloorAndCeiling_LowerByValue(tag, speed, height)";
FloorAndCeiling_LowerRaise = "FloorAndCeiling_LowerRaise(tag, fspeed, cspeed)";
FloorAndCeiling_RaiseByValue = "FloorAndCeiling_RaiseByValue(tag, speed, height)";
For = "For(initialization, condition, iteration)";
Function = "Function Void expression (Void)";
GameSkill = "GameSkill()";
GameType = "GameType()";
Generic_Ceiling = "Generic_Ceiling(tag, speed, height, target, flag)";
Generic_Crusher = "Generic_Crusher(tag, dspeed, uspeed, silent, crush)";
Generic_Door = "Generic_Door(tag, speed, kind, delay, lock)";
Generic_Floor = "Generic_Floor(tag, speed, height, target, flags)";
Generic_Lift = "Generic_Lift(tag, speed, delay, type, height)";
Generic_Stairs = "Generic_Stairs(tag, speed, height, flags, reset)";
GetActorAngle = "GetActorAngle(tid)";
GetActorProperty = "GetActorProperty(tid, property)";
GetAmmoCapacity = "GetAmmoCapacity(typename)";
GetActorFloorZ = "GetActorFloorZ(tid)";
GetActorX = "GetActorX(tid)";
GetActorY = "GetActorY(tid)";
GetActorZ = "GetActorZ(tid)";
GetCVar = "GetCVar(name)";
GetLevelInfo = "GetLevelInfo(levelinfo)";
GetLineRowOffset = "GetLineRowOffset()";
GetScreenHeight = "GetScreenHeight()";
GetScreenWidth = "GetScreenWidth()";
GetSectorCeilingZ = "GetSectorCeilingZ(tag, x, y)";
GetSectorFloorZ = "GetSectorFloorZ(tag, x, y)";
GiveInventory = "GiveInventory(type, amount)";
HealThing = "HealThing(amount)";
HudMessage = "HudMessage(text; type, id, color, x, y, holdtime)";
HudMessageBold = "HudMessageBold(text; type, id, color, x, y, holdtime)";
If = "If(expression)";
int = "int expression";
Light_ChangeToValue = "Light_ChangeToValue(tag, value)";
Light_Fade = "Light_Fade(tag, value, tics)";
Light_Flicker = "Light_Flicker(tag, upper, lower)";
Light_ForceLightning = "Light_ForceLightning()";
Light_Glow = "Light_Glow(tag, upper, lower, tics)";
Light_LowerByValue = "Light_LowerByValue(tag, value)";
Light_MaxNeighbor = "Light_MaxNeighbor(tag)";
Light_MinNeighbor = "Light_MinNeighbor(tag)";
Light_RaiseByValue = "Light_RaiseByValue(tag, value)";
Light_Stop = "Light_Stop(tag)";
Light_Strobe = "Light_Strobe(tag, upper, lower, u-tics, l-tics)";
Light_StrobeDoom = "Light_StrobeDoom(tag, u-tics, l-tics)";
Line_AlignCeiling = "Line_AlignCeiling(lineid, side)";
Line_AlignFloor = "Line_AlignFloor(lineid, side)";
LineSide = "LineSide()";
LocalAmbientSound = "LocalAmbientSound(name, volume)";
LocalSetMusic = "LocalSetMusic(song, pattern, transition)";
NoiseAlert = "NoiseAlert(target, emitter)";
Open = "Script expression Open";
Pillar_Build = "Pillar_Build(tag, speed, height)";
Pillar_BuildAndCrush = "Pillar_BuildAndCrush(tag, speed, height, crush)";
Pillar_Open = "Pillar_Open(tag, speed, fdist, cdist)";
Plat_DownByValue = "Plat_DownByValue(tag, speed, delay, height)";
Plat_DownWaitUpStay = "Plat_DownWaitUpStay(tag, speed, delay)";
Plat_DownWaitUpStayLip = "Plat_DownWaitUpStayLip(tag, speed, delay, lip)";
Plat_PerpetualRaise = "Plat_PerpetualRaise(tag, speed, delay)";
Plat_PerpetualRaiseLip = "Plat_PerpetualRaiseLip(tag, speed, delay, lip)";
Plat_RaiseAndStayTx0 = "Plat_RaiseAndStayTx0(tag, speed)";
Plat_Stop = "Plat_Stop(tag)";
Plat_ToggleCeiling = "Plat_ToggleCeiling(tag)";
Plat_UpByValue = "Plat_UpByValue(tag, speed, delay, height)";
Plat_UpByValueStayTx = "Plat_UpByValueStayTx(tag, speed, height)";
Plat_UpNearestWaitDownStay = "Plat_UpNearestWaitDownStay(tag, speed, delay)";
Plat_UpWaitDownStay = "Plat_UpWaitDownStay(tag, speed, delay)";
Player_GiveItem = "Player_GiveItem(item, message)";
Player_RemoveItem = "Player_RemoveItem(item, message)";
Player_SetTeam = "Player_SetTeam(team)";
PlayerCount = "PlayerCount()";
PlayerInGame = "PlayerInGame(playernum)";
PlayerIsBot = "PlayerIsBot(playernum)";
PlayerNumber = "PlayerNumber()";
PlayMovie = "PlayMovie(moviename)";
Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)";
Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)";
Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)";
Polyobj_MoveTimes8 = "Polyobj_MoveTimes8(po, speed, angle, dist)";
Polyobj_OR_Move = "Polyobj_OR_Move(po, speed, angle, distance)";
Polyobj_OR_MoveTimes8 = "Polyobj_OR_MoveTimes8(po, speed, angle, distance)";
Polyobj_OR_RotateLeft = "Polyobj_OR_RotateLeft(po, speed)";
Polyobj_OR_RotateRight = "Polyobj_OR_RotateRight(po, speed, angle)";
Polyobj_RotateLeft = "Polyobj_RotateLeft(po, speed, angle)";
Polyobj_RotateRight = "Polyobj_RotateRight(po, speed, angle)";
PolyWait = "PolyWait(po)";
Print = "Print(type:expression)";
PrintBold = "PrintBold(type:expression)";
Radius_Quake = "Radius_Quake(intensity, duration, damrad, tremrad, tid)";
Random = "Random(low, high)";
Restart = "Restart";
Script = "Script expression (Void)";
ScriptWait = "ScriptWait(scriptid)";
Scroll_Ceiling = "Scroll_Ceiling(tag, scrollbits, 0, xmove, ymove)";
Scroll_Floor = "Scroll_Floor(tag, scrollbits, method xmove, ymove)";
Scroll_Texture_Both = "Scroll_Texture_Both(lineid, left, right, down, up)";
Sector_ChangeSound = "Sector_ChangeSound(tag, newsequence)";
Sector_SetCeilingPanning = "Sector_SetCeilingPanning(tag, u-int, u-frac, v-int, v-frac)";
Sector_SetCeilingScale = "Sector_SetCeilingScale(tag, u-int, u-frac, v-int, v-frac)";
Sector_SetColor = "Sector_SetColor(tag, r, g, b)";
Sector_SetDamage = "Sector_SetDamage(tag, amount, mod)";
Sector_SetFade = "Sector_SetFade(tag, r, g, b)";
Sector_SetFloorPanning = "Sector_SetFloorPanning(tag, u-int, u-frac, v-int, v-frac)";
Sector_SetFloorScale = "Sector_SetFloorScale(tag, u-int, u-frac, v-int, v-frac)";
Sector_SetFriction = "Sector_SetFriction(tag, amount)";
Sector_SetGravity = "Sector_SetGravity(tag, ipart, fpart)";
Sector_SetRotation = "Sector_SetRotation(tag, floor-angle, ceiling-angle)";
SectorSound = "SectorSound(name, volume)";
SetActorProperty = "SetActorProperty(tid, property, value)";
SetAirControl = "SetAirControl(amount)";
SetAmmoCapacity = "SetAmmoCapacity(typename, maxamount)";
SetCameraToTexture = "SetCameraToTexture(tid, texture, fov)";
SetCeilingTrigger = "SetCeilingTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)";
SetFloorTrigger = "SetFloorTrigger(tag, height, special, arg1, arg2, arg3, arg4, arg5)";
SetFont = "SetFont(fontname)";
SetGravity = "SetGravity(amount)";
SetHudSize = "SetHudSize(width, height, statusbar)";
SetLineBlocking = "SetLineBlocking(line, blocking)";
SetLineMonsterBlocking = "SetLineMonsterBlocking(line, blocking)";
SetLineSpecial = "SetLineSpecial(line, special, arg1, arg2, arg3, arg4, arg5)";
SetLineTexture = "SetLineTexture(line, side, position, texture)";
SetMarineSprite = "SetMarineSprite(tid, actorclass)";
SetMarineWeapon = "SetMarineWeapon(tid, weapon)";
SetMusic = "SetMusic(song, pattern, transition)";
SetPlayerProperty = "SetPlayerProperty(who, set, which)";
SetResultValue = "SetResultValue(value)";
SetThingSpecial = "SetThingSpecial(tid, special, arg1, arg2, arg3, arg4, arg5)";
SetWeapon = "SetWeapon(weaponname)";
sin = "sin(angle)";
SoundSequence = "SoundSequence(name)";
Spawn = "Spawn(type, x, y, z, thingid, angle)";
SpawnSpot = "SpawnSpot(type, spotid, thingid, angle)";
Special = "Special";
Stairs_BuildDown = "Stairs_BuildDown(tag, speed, height, delay, reset)";
Stairs_BuildDownSync = "Stairs_BuildDownSync(tag, speed, height, reset)";
Stairs_BuildUp = "Stairs_BuildUp(tag, speed, height, delay, reset)";
Stairs_BuildUpDoom = "Stairs_BuildUpDoom(tag, speed, height, delay, reset)";
Stairs_BuildUpSync = "Stairs_BuildUpSync(tag, speed, height, reset)";
str = "str expression";
strlen = "strlen(string)";
Suspend = "Suspend";
Switch = "Switch(expression)";
TagWait = "TagWait(tag)";
TakeInventory = "TakeInventory(type, amount)";
Team_Score = "Team_Score(amount, nogrin)";
Teleport = "Teleport(tid)";
Teleport_EndGame = "Teleport_EndGame()";
Teleport_Line = "Teleport_Line(thisid, destid, flip)";
Teleport_NewMap = "Teleport_NewMap(map, pos)";
Teleport_NoFog = "Teleport_NoFog(tid)";
TeleportGroup = "TeleportGroup(groupid, sourceid, destinationid, movesource, fog)";
TeleportInSector = "TeleportInSector(tag, sourceid, destinationid, fog, groupid)";
TeleportOther = "TeleportOther(tid, destinationid, fog)";
Teleport_ZombieChanger = "Teleport_ZombieChanger(tid, tag)";
Terminate = "Terminate";
Thing_Activate = "Thing_Activate(tid)";
Thing_ChangeTID = "Thing_ChangeTID(oldtid, newtid)";
Thing_Damage = "Thing_Damage(tid, amount, mod)";
Thing_Deactivate = "Thing_Deactivate(tid)";
Thing_Destroy = "Thing_Destroy(tid, extreme)";
Thing_Hate = "Thing_Hate(hater, hatee, type)";
Thing_Move = "Thing_Move(tid, destid)";
Thing_Projectile = "Thing_Projectile(tid, type, angle, speed, vspeed)";
Thing_Projectile2 = "Thing_Projectile2(tid, type, angle, speed, vspeed, gravity, newtid)";
Thing_ProjectileAimed = "Thing_ProjectileAimed(tid, type, speed, target, newtid)";
Thing_ProjectileGravity = "Thing_ProjectileGravity(tid, type, angle, speed, vspeed)";
Thing_ProjectileIntercept = "Thing_ProjectileIntercept(tid, type, speed, target, newtid)";
Thing_Remove = "Thing_Remove(tid)";
Thing_SetFrame = "Thing_SetFrame(tid, frame)";
Thing_SetGoal = "Thing_SetGoal(tid, goal, delay)";
Thing_SetSpecial = "Thing_SetSpecial(tid, special, arg1, arg2, arg3)";
Thing_SetTranslation = "Thing_SetTranslation(tid, translation)";
Thing_Spawn = "Thing_Spawn(tid, type, angle, newtid)";
Thing_SpawnFacing = "Thing_SpawnFacing(tid, type, nofog, newtid)";
Thing_SpawnNoFog = "Thing_SpawnNoFog(tid, type, angle, newtid)";
ThingCount = "ThingCount(type, id)";
ThingSound = "ThingSound(thingid, name, volume)";
ThrustThing = "ThrustThing(angle, force)";
ThrustThingZ = "ThrustThingZ(tid, speed, upordown, addorset)";
Timer = "Timer()";
TranslucentLine = "TranslucentLine(lineid, amount, additive)";
Until = "Until(expression)";
UsePuzzleItem = "UsePuzzleItem(item, script)";
VectorAngle = "VectorAngle(x, y)";
Void = "Void";
While = "While(expression)";
World = "World Int expression:identifier";
}
constants
{
TRUE;
FALSE;
ON;
OFF;
YES;
NO;
LINE_FRONT;
LINE_BACK;
SIDE_FRONT;
SIDE_BACK;
TEXTURE_TOP;
TEXTURE_MIDDLE;
TEXTURE_BOTTOM;
GAME_SINGLE_PLAYER;
GAME_NET_COOPERATIVE;
GAME_NET_DEATHMATCH;
GAME_NET_TEAMGAME;
TEAM_BLUE;
TEAM_RED;
CLASS_FIGHTER;
CLASS_CLERIC;
CLASS_MAGE;
SKILL_VERY_EASY;
SKILL_EASY;
SKILL_NORMAL;
SKILL_HARD;
SKILL_VERY_HARD;
BLOCK_NOTHING;
BLOCK_CREATURES;
BLOCK_EVERYTHING;
SCROLL;
CARRY;
SCROLL_AND_CARRY;
MOD_UNKNOWN;
MOD_FIST;
MOD_PISTOL;
MOD_SHOTGUN;
MOD_CHAINGUN;
MOD_ROCKET;
MOD_R_SPLASH;
MOD_PLASMARIFLE;
MOD_BFG_BOOM;
MOD_BFG_SPLASH;
MOD_CHAINSAW;
MOD_SSHOTGUN;
MOD_WATER;
MOD_SLIME;
MOD_LAVA;
MOD_CRUSH;
MOD_TELEFRAG;
MOD_FALLING;
MOD_SUICIDE;
MOD_BARREL;
MOD_EXIT;
MOD_SPLASH;
MOD_HIT;
MOVIE_Played;
MOVIE_Played_NoVideo;
MOVIE_Played_Aborted;
MOVIE_Failed;
PROP_FROZEN;
PROP_NOTARGET;
PROP_INSTANTWEAPONSWITCH;
PROP_FLY;
PROP_TOTALLYFROZEN;
CR_UNTRANSLATED;
CR_BRICK;
CR_TAN;
CR_GRAY;
CR_GREY;
CR_GREEN;
CR_BROWN;
CR_GOLD;
CR_RED;
CR_BLUE;
CR_ORANGE;
CR_WHITE;
CR_YELLOW;
HUDMSG_PLAIN;
HUDMSG_FADEOUT;
HUDMSG_TYPEON;
HUDMSG_LOG0x80000;
MARINEWEAPON_Dummy;
MARINEWEAPON_Fist;
MARINEWEAPON_BerserkFis;
MARINEWEAPON_Chainsaw;
MARINEWEAPON_Pistol;
MARINEWEAPON_Shotgun;
MARINEWEAPON_SuperShotgu;
MARINEWEAPON_Chaingun;
MARINEWEAPON_RocketLaunche;
MARINEWEAPON_PlasmaRifl;
MARINEWEAPON_Railgun;
MARINEWEAPON_BFG;
APROP_Health;
APROP_Speed;
APROP_Damage;
APROP_Alpha;
APROP_RenderStyl;
APROP_Ambush;
APROP_Invulnerable;
APROP_SeeSound;
APROP_AttackSoun;
APROP_PainSound;
APROP_DeathSoun;
APROP_ActiveSoun;
STYLE_None;
STYLE_Normal;
STYLE_Fuzzy;
STYLE_SoulTrans;
STYLE_OptFuzzy;
STYLE_Translucen;
STYLE_Add;
T_ROCK1;
T_ROCK2;
T_ROCK3;
T_DIRT1;
T_DIRT2;
T_DIRT3;
T_DIRT4;
T_DIRT5;
T_DIRT6;
T_STAINEDGLASS1;
T_STAINEDGLASS2;
T_STAINEDGLASS3;
T_STAINEDGLASS4;
T_STAINEDGLASS5;
T_STAINEDGLASS6;
T_STAINEDGLASS7;
T_STAINEDGLASS8;
T_STAINEDGLASS9;
T_STAINEDGLASS0;
T_NONE;
T_SHOTGUY;
T_CHAINGUY;
T_BARON;
T_ZOMBIE;
T_IMP;
T_ARACHNOTRON;
T_SPIDERMASTERMIND;
T_DEMON;
T_SPECTRE;
T_IMPFIREBALL;
T_CLIP;
T_SHELLS;
T_CACODEMON;
T_REVENANT;
T_BRIDGE;
T_ARMORBONUS;
T_STIMPACK;
T_MEDKIT;
T_SOULSPHERE;
T_SHOTGUN;
T_CHAINGUN;
T_ROCKETLAUNCHER;
T_PLASMAGUN;
T_BFG;
T_CHAINSAW;
T_SUPERSHOTGUN;
T_PLASMABOLT;
T_TRACER;
T_GREENARMOR;
T_BLUEARMOR;
T_CELL;
T_BLUEKEYCARD;
T_REDKEYCARD;
T_YELLOWKEYCARD;
T_YELLOWSKULLKEY;
T_REDSKULLKEY;
T_BLUESKULLKEY;
T_TEMPLARGEFLAME;
T_STEALTHBARON;
T_STEALTHKNIGHT;
T_STEALTHZOMBIE;
T_STEALTHSHOTGUY;
T_LOSTSOUL;
T_VILE;
T_MANCUBUS;
T_HELLKNIGHT;
T_CYBERDEMON;
T_PAINELEMENTAL;
T_WOLFSS;
T_STEALTHARACHNOTRON;
T_STEALTHVILE;
T_STEALTHCACODEMON;
T_STEALTHCHAINGUY;
T_STEALTHSERGEANT;
T_STEALTHIMP;
T_STEALTHMANCUBUS;
T_STEALTHREVENANT;
T_BARREL;
T_CACODEMONSHOT;
T_ROCKET;
T_BFGSHOT;
T_ARACHNOTRONPLASMA;
T_BLOOD;
T_PUFF;
T_MEGASPHERE;
T_INVULNERABILITY;
T_BERSERK;
T_INVISIBILITY;
T_IRONFEET;
T_COMPUTERMAP;
T_LIGHTAMP;
T_AMMOBOX;
T_ROCKETAMMO;
T_ROCKETBOX;
T_BATTERY;
T_SHELLBOX;
T_BACKPACK;
T_GUTS;
T_BLOODPOOL;
T_BLOODPOOL1;
T_BLOODPOOL2;
T_FLAMINGBARREL;
T_BRAINS;
T_SCRIPTEDMARINE;
T_HEALTHBONUS;
T_MANCUBUSSHOT;
T_BARONBALL;
T_GRENADE;
T_DARKIMP;
T_BLOODDEMON;
T_SSGGUY;
T_HECTEBUS;
T_CACOLANTERN;
T_BELPHEGOR;
T_SAUSAGEHEAD;
T_SAUSAGESPITTER;
T_PISTOL;
T_GRENADELAUNCHER;
T_RAILGUN;
T_BFG10000;
T_MINIGUN;
T_MAXHEALTHBONUS;
T_MASARMORBONUS;
T_REDARMOR;
T_TURBOSPHERE;
T_ANTIGRAVBELT;
T_TIMEFREEZER;
T_INFRAGOGGLES;
T_INFRATRACKER;
T_TRANSLUCENCY;
T_DOOMSPHERE;
T_RANDOMPOWERUP;
T_BLUEFLAG;
T_REDFLAG;
T_WHITEFLAG;
T_STRENGTH;
T_RAGE;
T_DRAIN;
T_SPREAD;
T_RESISTANCE;
T_REGENERATION;
T_PROSPERITY;
T_REFLECTION;
T_HIGHJUMP;
T_HASTE;
T_DEADCYBERDEMON;
T_BOBBINGSKULLINFLAMES;
T_IMPALINGSPIKE;
T_IMPALINGSPIKECGUN;
T_IMPALINGSPIKEZOMB;
T_IMPSTATUE;
T_DEMONSTATUE;
T_ARCHSTATUE;
T_BARONSTATUE;
T_CYBERDEMONSTATUE;
T_MASSMOUTHSTATUE;
T_GREYSTALAGMITE;
T_SHORTGREYPILLAR;
T_TALLGREYPILLAR;
T_GREYPILLARHEART;
T_TALLGOTHICPILLAR;
T_REVENANTHAND;
T_IMPHEAD;
T_HISSY;
T_HELLPILLAR;
T_GOTHICPILLAR;
T_STARBASEPILLAR;
T_MILITARYPILLAR;
T_LABORTORYPILLAR;
T_CLINK;
T_MUMMYLEADER;
T_BEAST;
T_MUMMY;
T_KNIGHT;
T_IMPLEADER;
T_MUMMYGHOST;
T_MUMMYLEADERGHOST;
T_WIMPYWANDAMMO;
T_HEFTYWANDAMMO;
T_ITEMEGG;
T_ITEMFLIGHT;
T_ITEMTELEPORT;
T_WIZARD;
T_IRONLICH;
T_ITEMHEALTHPOTION;
T_ITEMHEALTHFLASH;
T_ITEMHEALTHFULL;
T_CROSSBOW;
T_BLASTER;
T_PHOENIXROD;
T_SKULLROD;
T_MACE;
T_GAUNTLETS;
T_WIMPYCROSSBOWAMMO;
T_HEFTYCROSSBOWAMMO;
T_WIMPYMACEAMMO;
T_HEFTYMACEAMMO;
T_WIMPYBLASTERAMMO;
T_HEFTYBLASTERAMMO;
T_MORPHBLAST;
T_SHIELD1;
T_SHIELD2;
T_ITEMTIMEBOMB;
T_ITEMTORCH;
T_BLUEKEY;
T_GREENKEY;
T_YELLOWKEY;
T_SOUND_WIND;
T_SOUND_WATERFALL;
T_BEASTBALL;
T_FEATHER;
T_CHICKEN;
T_VOLCANOBALL;
T_TINYVOLCANOBALL;
T_POD;
T_PODGENERATOR;
T_KNIGHTAXE;
T_KNIGHTBLOODAXE;
T_KNIGHTGHOST;
T_MUMMYHEAD;
T_SNAKE;
T_ITEMINVULNERABILITY;
T_ITEMTOME;
T_ITEMINVISIBILITY;
T_ITEMBAGOFHOLDING;
T_ITEMALLMAP;
T_SNAKEPROJECTILE;
T_SNAKEPROJECTILEBIG;
T_WIZARDSHOT;
T_DSPARILTELEPORTDEST;
T_DSPARILONSERPENT;
T_DSPARILALONE;
T_SERPENTFIREBALL;
T_DSPARILBLUESHOT;
T_DSPARILWIZARDSPAWNER;
T_CROSSBOWMAINBLAST;
T_CROSSBOWMINIBLAST;
T_CROSSBOWPOWERBLAST;
T_VOLCANO;
T_POWERWANDMINIBLAST;
T_POWERWANDBIGGERBLAST;
T_DEATHBALL;
T_NOGRAVITYMACEBALL;
T_BOUNCYMACEBALL;
T_HEAVYMACEBALL;
T_RIPPER;
T_WIMPYSKULLRODAMMO;
T_HEFTYSKULLRODAMMO;
T_SKULLRODBLAST;
T_WIMPYPHOENIXRODAMMO;
T_HEFTYPHOENIXRODAMMO;
T_PHOENIXSHOT;
T_IRONLICHBLUESHOT;
T_WHIRLWIND;
T_REDTELEGLITTER;
T_BLUETELEGLITTER;
}

20
Builder.sln Normal file
View file

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Builder", "Source\Builder.csproj", "{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

BIN
Resources/Builder.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

BIN
Resources/Builder_16.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
Resources/Builder_32.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

BIN
Resources/Builder_48.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
Resources/Splash.cpt Normal file

Binary file not shown.

BIN
Resources/Splash2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

94
Source/Builder.csproj Normal file
View file

@ -0,0 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.50727</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{818B3D10-F791-4C3F-9AF5-BB2D0079B63C}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>CodeImp.DoomBuilder</RootNamespace>
<AssemblyName>Builder</AssemblyName>
<StartupObject>CodeImp.DoomBuilder.General</StartupObject>
<ApplicationIcon>Builder.ico</ApplicationIcon>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\Build\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\Build\</OutputPath>
<DefineConstants>
</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<UseVSHostingProcess>false</UseVSHostingProcess>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
<ItemGroup>
<Compile Include="Geometry\Angle2D.cs" />
<Compile Include="Geometry\Line2D.cs" />
<Compile Include="Geometry\Vector2D.cs" />
<Compile Include="Geometry\Vector3D.cs" />
<Compile Include="IO\Configuration.cs" />
<Compile Include="General\General.cs" />
<Compile Include="IO\ClippedStream.cs" />
<Compile Include="IO\Lump.cs" />
<Compile Include="IO\WAD.cs" />
<Compile Include="Interface\MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Interface\MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Map\Linedef.cs" />
<Compile Include="Map\MapManager.cs" />
<Compile Include="Map\Sidedef.cs" />
<Compile Include="Map\Vertex.cs" />
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Interface\MainForm.resx">
<SubType>Designer</SubType>
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<SubType>Designer</SubType>
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Content Include="Builder.ico" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\Splash2.png" />
</ItemGroup>
</Project>

BIN
Source/Builder.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

85
Source/General/General.cs Normal file
View file

@ -0,0 +1,85 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Reflection;
using CodeImp.DoomBuilder.Interface;
using CodeImp.DoomBuilder.IO;
namespace CodeImp.DoomBuilder
{
internal static class General
{
#region ================== Constants
// Files and Folders
private const string SETTINGS_CONFIG_FILE = "Builder.cfg";
#endregion
#region ================== Variables
// Files and Folders
private static string apppath;
private static string temppath;
// Main objects
private static MainForm mainwindow;
private static Configuration settings;
#endregion
#region ================== Properties
public static string AppPath { get { return apppath; } }
public static string TempPath { get { return temppath; } }
public static MainForm MainWindow { get { return mainwindow; } }
public static Configuration Settings { get { return settings; } }
#endregion
#region ================== Methods
// Main program entry
public static void Main(string[] args)
{
// Find application path
string dirpath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
Uri localpath = new Uri(dirpath);
apppath = Uri.UnescapeDataString(localpath.AbsolutePath);
// Temporary directory
temppath = Path.GetTempPath();
// Load configuration
if(!File.Exists(Path.Combine(apppath, SETTINGS_CONFIG_FILE))) throw (new FileNotFoundException("Unable to find the program configuration \"" + SETTINGS_CONFIG_FILE + "\"."));
settings = new Configuration(Path.Combine(apppath, SETTINGS_CONFIG_FILE), false);
// Create main window
mainwindow = new MainForm();
// Show main window
mainwindow.Show();
// Run application from the main window
Application.Run(mainwindow);
}
#endregion
}
}

View file

@ -0,0 +1,58 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Geometry
{
internal struct Angle2D
{
#region ================== Constants
public const float PI = (float)Math.PI;
public const float PI2 = (float)Math.PI * 2f;
#endregion
#region ================== Methods
// This normalizes an angle
public static float Normalized(float a)
{
while(a < 0f) a += PI2;
while(a > PI2) a -= PI2;
return a;
}
// This returns the difference between two angles
public static float Difference(float a, float b)
{
float d;
// Calculate delta angle
d = Normalized(a) - Normalized(b);
// Make corrections for zero barrier
if(d < 0f) d += PI2;
if(d > PI) d -= PI2;
// Return result
return d;
}
#endregion
}
}

260
Source/Geometry/Line2D.cs Normal file
View file

@ -0,0 +1,260 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Geometry
{
internal struct Line2D
{
#region ================== Constants
#endregion
#region ================== Variables
// Coordinates
public Vector2D v1;
public Vector2D v2;
#endregion
#region ================== Constructors
// Constructor
public Line2D(Vector2D v1, Vector2D v2)
{
this.v1 = v1;
this.v2 = v2;
}
// Constructor
public Line2D(Vector2D v1, float x2, float y2)
{
this.v1 = v1;
this.v2 = new Vector2D(x2, y2);
}
// Constructor
public Line2D(float x1, float y1, Vector2D v2)
{
this.v1 = new Vector2D(x1, y1);
this.v2 = v2;
}
// Constructor
public Line2D(float x1, float y1, float x2, float y2)
{
this.v1 = new Vector2D(x1, y1);
this.v2 = new Vector2D(x2, y2);
}
#endregion
#region ================== Statics
// This calculates the length
public static float GetLength(float dx, float dy)
{
// Calculate and return the length
return (float)Math.Sqrt(GetLengthSq(dx, dy));
}
// This calculates the square of the length
public static float GetLengthSq(float dx, float dy)
{
// Calculate and return the length
return dx * dx + dy * dy;
}
// This calculates the normal of a line
public static Vector2D GetNormal(float dx, float dy)
{
return new Vector2D(dx, dy).GetNormal();
}
// This tests if the line intersects with the given line coordinates
public static bool GetIntersection(Vector2D v1, Vector2D v2, float x3, float y3, float x4, float y4)
{
float u_ray, u_line;
return GetIntersection(v1, v2, x3, y3, x4, y4, out u_ray, out u_line);
}
// This tests if the line intersects with the given line coordinates
public static bool GetIntersection(Vector2D v1, Vector2D v2, float x3, float y3, float x4, float y4, out float u_ray)
{
float u_line;
return GetIntersection(v1, v2, x3, y3, x4, y4, out u_ray, out u_line);
}
// This tests if the line intersects with the given line coordinates
public static bool GetIntersection(Vector2D v1, Vector2D v2, float x3, float y3, float x4, float y4, out float u_ray, out float u_line)
{
// Calculate divider
float div = (y4 - y3) * (v2.x - v1.x) - (x4 - x3) * (v2.y - v1.y);
// Can this be tested?
if((div > 0.000001f) || (div < -0.000001f))
{
// Calculate the intersection distance from the line
u_line = ((x4 - x3) * (v1.y - y3) - (y4 - y3) * (v1.x - x3)) / div;
// Calculate the intersection distance from the ray
u_ray = ((v2.x - v1.x) * (v1.y - y3) - (v2.y - v1.y) * (v1.x - x3)) / div;
// Return if intersecting
return (u_ray >= 0.0f) && (u_ray <= 1.0f) && (u_line >= 0.0f) && (u_line <= 1.0f);
}
else
{
// Unable to detect intersection
u_line = float.NaN;
u_ray = float.NaN;
return false;
}
}
// This tests on which side of the line the given coordinates are
// returns < 0 for front (right) side, > 0 for back (left) side and 0 if on the line
public static float GetSideOfLine(Vector2D v1, Vector2D v2, Vector2D p)
{
// Calculate and return side information
return (p.y - v1.y) * (v2.x - v1.x) - (p.x - v1.x) * (v2.y - v1.y);
}
// This returns the shortest distance from given coordinates to line
public static float GetDistanceToLine(Vector2D v1, Vector2D v2, Vector2D p, bool bounded)
{
return (float)Math.Sqrt(GetDistanceToLineSq(v1, v2, p, bounded));
}
// This returns the shortest distance from given coordinates to line
public static float GetDistanceToLineSq(Vector2D v1, Vector2D v2, Vector2D p, bool bounded)
{
// Calculate intersection offset
float u = ((p.x - v1.x) * (v2.x - v1.x) + (p.y - v1.y) * (v2.y - v1.y)) / GetLengthSq(v2.x - v1.x, v2.y - v1.y);
if(bounded)
{
/*
// Limit intersection offset to the line
float lbound = 1f / GetLength(v2.x - v1.x, v2.y - v1.y);
float ubound = 1f - lbound;
if(u < lbound) u = lbound;
if(u > ubound) u = ubound;
*/
if(u < 0f) u = 0f; else if(u > 1f) u = 1f;
}
// Calculate intersection point
Vector2D i = v1 + u * (v2 - v1);
// Return distance between intersection and point
// which is the shortest distance to the line
float ldx = p.x - i.x;
float ldy = p.y - i.y;
return ldx * ldx + ldy * ldy;
}
// This returns the offset coordinates on the line nearest to the given coordinates
public static float GetNearestOnLine(Vector2D v1, Vector2D v2, Vector2D p)
{
// Calculate and return intersection offset
return ((p.x - v1.x) * (v2.x - v1.x) + (p.y - v1.y) * (v2.y - v1.y)) / GetLengthSq(v2.x - v1.x, v2.y - v1.y);
}
// This returns the coordinates at a specific position on the line
public static Vector2D GetCoordinatesAt(Vector2D v1, Vector2D v2, float u)
{
// Calculate and return intersection offset
return new Vector2D(v1.x + u * (v2.x - v1.x), v1.y + u * (v2.y - v1.y));
}
#endregion
#region ================== Methods
// This calculates the angle
public float GetAngle()
{
// Calculate and return the angle
Vector2D d = GetDelta();
return -(float)Math.Atan2(-d.y, d.x) + (float)Math.PI * 0.5f;
}
public Vector2D GetDelta() { return v2 - v1; }
public float GetLength() { return Line2D.GetLength(v2.x - v1.x, v2.y - v1.y); }
public float GetLengthSq() { return Line2D.GetLengthSq(v2.x - v1.x, v2.y - v1.y); }
public bool GetIntersection(float x3, float y3, float x4, float y4)
{
return Line2D.GetIntersection(v1, v2, x3, y3, x4, y4);
}
public bool GetIntersection(float x3, float y3, float x4, float y4, out float u_ray)
{
return Line2D.GetIntersection(v1, v2, x3, y3, x4, y4, out u_ray);
}
public bool GetIntersection(float x3, float y3, float x4, float y4, out float u_ray, out float u_line)
{
return Line2D.GetIntersection(v1, v2, x3, y3, x4, y4, out u_ray, out u_line);
}
public bool GetIntersection(Line2D ray)
{
return Line2D.GetIntersection(v1, v2, ray.v1.x, ray.v1.y, ray.v2.x, ray.v2.y);
}
public bool GetIntersection(Line2D ray, out float u_ray)
{
return Line2D.GetIntersection(v1, v2, ray.v1.x, ray.v1.y, ray.v2.x, ray.v2.y, out u_ray);
}
public bool GetIntersection(Line2D ray, out float u_ray, out float u_line)
{
return Line2D.GetIntersection(v1, v2, ray.v1.x, ray.v1.y, ray.v2.x, ray.v2.y, out u_ray, out u_line);
}
public float GetSideOfLine(Vector2D p)
{
return Line2D.GetSideOfLine(v1, v2, p);
}
public float GetDistanceToLine(Vector2D p, bool bounded)
{
return Line2D.GetDistanceToLine(v1, v2, p, bounded);
}
public float GetDistanceToLineSq(Vector2D p, bool bounded)
{
return Line2D.GetDistanceToLineSq(v1, v2, p, bounded);
}
public float GetNearestOnLine(Vector2D p)
{
return Line2D.GetNearestOnLine(v1, v2, p);
}
public Vector2D GetCoordinatesAt(float u)
{
return Line2D.GetCoordinatesAt(v1, v2, u);
}
#endregion
}
}

257
Source/Geometry/Vector2D.cs Normal file
View file

@ -0,0 +1,257 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Geometry
{
internal struct Vector2D
{
#region ================== Constants
private const float TINY_VALUE = 0.0000000001f;
#endregion
#region ================== Variables
// Coordinates
public float x;
public float y;
#endregion
#region ================== Constructors
// Constructor
public Vector2D(float x, float y)
{
this.x = x;
this.y = y;
}
// Constructor
public Vector2D(Vector3D v)
{
this.x = v.x;
this.y = v.y;
}
#endregion
#region ================== Statics
// Conversion to Vector3D
public static implicit operator Vector3D(Vector2D a)
{
return new Vector3D(a);
}
// This adds two vectors
public static Vector2D operator +(Vector2D a, Vector2D b)
{
return new Vector2D(a.x + b.x, a.y + b.y);
}
// This adds to a vector
public static Vector2D operator +(float a, Vector2D b)
{
return new Vector2D(a + b.x, a + b.y);
}
// This adds to a vector
public static Vector2D operator +(Vector2D a, float b)
{
return new Vector2D(a.x + b, a.y + b);
}
// This subtracts two vectors
public static Vector2D operator -(Vector2D a, Vector2D b)
{
return new Vector2D(a.x - b.x, a.y - b.y);
}
// This subtracts from a vector
public static Vector2D operator -(Vector2D a, float b)
{
return new Vector2D(a.x - b, a.y - b);
}
// This subtracts from a vector
public static Vector2D operator -(float a, Vector2D b)
{
return new Vector2D(a - b.x, a - b.y);
}
// This reverses a vector
public static Vector2D operator -(Vector2D a)
{
return new Vector2D(-a.x, -a.y);
}
// This scales a vector
public static Vector2D operator *(float s, Vector2D a)
{
return new Vector2D(a.x * s, a.y * s);
}
// This scales a vector
public static Vector2D operator *(Vector2D a, float s)
{
return new Vector2D(a.x * s, a.y * s);
}
// This scales a vector
public static Vector2D operator *(Vector2D a, Vector2D b)
{
return new Vector2D(a.x * b.x, a.y * b.y);
}
// This scales a vector
public static Vector2D operator /(float s, Vector2D a)
{
return new Vector2D(a.x / s, a.y / s);
}
// This scales a vector
public static Vector2D operator /(Vector2D a, float s)
{
return new Vector2D(a.x / s, a.y / s);
}
// This scales a vector
public static Vector2D operator /(Vector2D a, Vector2D b)
{
return new Vector2D(a.x / b.x, a.y / b.y);
}
// This calculates the dot product
public static float DotProduct(Vector2D a, Vector2D b)
{
// Calculate and return the dot product
return a.x * b.x + a.y * b.y;
}
// This reflects the vector v over mirror m
// Note that mirror m must be normalized!
// R = V - 2 * M * (M dot V)
public static Vector2D Reflect(Vector2D v, Vector2D m)
{
// Get the dot product of v and m
float dp = Vector2D.DotProduct(m, v);
// Make the reflected vector
Vector2D mv = new Vector2D();
mv.x = v.x - (2f * m.x * dp);
mv.y = v.y - (2f * m.y * dp);
// Return the reflected vector
return mv;
}
// This returns the reversed vector
public static Vector2D Reversed(Vector2D v)
{
// Return reversed vector
return new Vector2D(-v.x, -v.y);
}
// This returns a vector from an angle
public static Vector2D FromAngle(float angle)
{
// Return vector from angle
return new Vector2D((float)Math.Sin(angle), -(float)Math.Cos(angle));
}
// This returns a vector from an angle with a given legnth
public static Vector2D FromAngle(float angle, float length)
{
// Return vector from angle
return FromAngle(angle) * length;
}
#endregion
#region ================== Methods
// This calculates the angle
public float GetAngle()
{
// Calculate and return the angle
return -(float)Math.Atan2(-y, x) + (float)Math.PI * 0.5f;
}
// This calculates the length
public float GetLength()
{
// Calculate and return the length
return (float)Math.Sqrt(x * x + y * y);
}
// This calculates the square length
public float GetLengthSq()
{
// Calculate and return the square length
return x * x + y * y;
}
// This calculates the length
public float GetManhattanLength()
{
// Calculate and return the length
return Math.Abs(x) + Math.Abs(y);
}
// This returns a normalized vector
public Vector2D GetNormal()
{
float lensq = this.GetLengthSq();
if(lensq > TINY_VALUE)
{
// Divide each element by the length
float mul = 1f / (float)Math.Sqrt(lensq);
return new Vector2D(x * mul, y * mul);
}
else
{
// Cannot make normal
return new Vector2D(0f, 0f);
}
}
// This scales the vector
public Vector2D GetScaled(float s)
{
// Scale the vector
return new Vector2D(x * s, y * s);
}
// This changes the vector length
public Vector2D GetFixedLength(float l)
{
// Normalize, then scale
return this.GetNormal().GetScaled(l);
}
// Output
public override string ToString()
{
return x + ", " + y;
}
#endregion
}
}

276
Source/Geometry/Vector3D.cs Normal file
View file

@ -0,0 +1,276 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Geometry
{
internal struct Vector3D
{
#region ================== Constants
private const float TINY_VALUE = 0.0000000001f;
#endregion
#region ================== Variables
// Coordinates
public float x;
public float y;
public float z;
#endregion
#region ================== Constructors
// Constructor
public Vector3D(float x, float y, float z)
{
this.x = x;
this.y = y;
this.z = z;
}
// Constructor
public Vector3D(Vector2D v)
{
this.x = v.x;
this.y = v.y;
this.z = 0f;
}
#endregion
#region ================== Statics
// Conversion to Vector2D
public static implicit operator Vector2D(Vector3D a)
{
return new Vector2D(a);
}
// This adds two vectors
public static Vector3D operator +(Vector3D a, Vector3D b)
{
return new Vector3D(a.x + b.x, a.y + b.y, a.z + b.z);
}
// This subtracts two vectors
public static Vector3D operator -(Vector3D a, Vector3D b)
{
return new Vector3D(a.x - b.x, a.y - b.y, a.z - b.z);
}
// This reverses a vector
public static Vector3D operator -(Vector3D a)
{
return new Vector3D(-a.x, -a.y, -a.z);
}
// This scales a vector
public static Vector3D operator *(float s, Vector3D a)
{
return new Vector3D(a.x * s, a.y * s, a.z * s);
}
// This scales a vector
public static Vector3D operator *(Vector3D a, float s)
{
return new Vector3D(a.x * s, a.y * s, a.z * s);
}
// This scales a vector
public static Vector3D operator *(Vector3D a, Vector3D b)
{
return new Vector3D(a.x * b.x, a.y * b.y, a.z * b.z);
}
// This scales a vector
public static Vector3D operator /(float s, Vector3D a)
{
return new Vector3D(a.x / s, a.y / s, a.z / s);
}
// This scales a vector
public static Vector3D operator /(Vector3D a, float s)
{
return new Vector3D(a.x / s, a.y / s, a.z / s);
}
// This compares a vector
public static bool operator ==(Vector3D a, Vector3D b)
{
return (a.x == b.x) && (a.y == b.y) && (a.z == b.z);
}
// This compares a vector
public static bool operator !=(Vector3D a, Vector3D b)
{
return (a.x != b.x) || (a.y != b.y) || (a.z != b.z);
}
// This calculates the cross product
public static Vector3D CrossProduct(Vector3D a, Vector3D b)
{
Vector3D result = new Vector3D();
// Calculate and return the dot product
result.x = a.y * b.z - a.z * b.y;
result.y = a.z * b.x - a.x * b.z;
result.z = a.x * b.y - a.y * b.x;
return result;
}
// This calculates the dot product
public static float DotProduct(Vector3D a, Vector3D b)
{
// Calculate and return the dot product
return a.x * b.x + a.y * b.y + a.z * b.z;
}
// This reflects the vector v over mirror m
// Note that mirror m must be normalized!
public static Vector3D Reflect(Vector3D v, Vector3D m)
{
// Get the dot product of v and m
float dp = Vector3D.DotProduct(v, m);
// Make the reflected vector
Vector3D mv = new Vector3D();
mv.x = -v.x + 2f * m.x * dp;
mv.y = -v.y + 2f * m.y * dp;
mv.z = -v.z + 2f * m.z * dp;
// Return the reflected vector
return mv;
}
// This returns the reversed vector
public static Vector3D Reversed(Vector3D v)
{
// Return reversed vector
return new Vector3D(-v.x, -v.y, -v.z);
}
// This returns a vector from an angle
public static Vector3D FromAngleXY(float angle)
{
// Return vector from angle
return new Vector3D((float)Math.Sin(angle), -(float)Math.Cos(angle), 0f);
}
// This returns a vector from an angle with a given legnth
public static Vector3D FromAngleXY(float angle, float length)
{
// Return vector from angle
return FromAngleXY(angle) * length;
}
// This returns a vector from an angle with a given legnth
public static Vector3D FromAngleXYZ(float anglexy, float anglez)
{
// Calculate x y and z
float ax = (float)Math.Sin(anglexy) * (float)Math.Cos(anglez);
float ay = -(float)Math.Cos(anglexy) * (float)Math.Cos(anglez);
float az = (float)Math.Sin(anglez);
// Return vector
return new Vector3D(ax, ay, az);
}
#endregion
#region ================== Methods
// This calculates the angle
public float GetAngleXY()
{
// Calculate and return the angle
return -(float)Math.Atan2(-y, x) + (float)Math.PI * 0.5f;
}
// This calculates the angle
public float GetAngleZ()
{
Vector2D xy = new Vector2D(x, y);
// Calculate and return the angle
return -(float)Math.Atan2(xy.GetLength(), z) + (float)Math.PI * 0.5f;
//return -(float)Math.Atan2(xy.GetLength(), z) - (float)Math.PI * 0.5f;
}
// This calculates the length
public float GetLength()
{
// Calculate and return the length
return (float)Math.Sqrt(x * x + y * y + z * z);
}
// This calculates the squared length
public float GetLengthSq()
{
// Calculate and return the length
return x * x + y * y + z * z;
}
// This calculates the length
public float GetManhattanLength()
{
// Calculate and return the length
return Math.Abs(x) + Math.Abs(y) + Math.Abs(z);
}
// This normalizes the vector
public Vector3D GetNormal()
{
float lensq = this.GetLengthSq();
if(lensq > TINY_VALUE)
{
// Divide each element by the length
float mul = 1f / (float)Math.Sqrt(lensq);
return new Vector3D(x * mul, y * mul, z * mul);
}
else
{
// Cannot normalize
return new Vector3D(0f, 0f, 0f);
}
}
// This scales the vector
public Vector3D GetScaled(float s)
{
// Scale the vector
return new Vector3D(x * s, y * s, z * s);
}
// This changes the vector length
public Vector3D GetFixedLength(float l)
{
// Normalize, then scale
return this.GetNormal().GetScaled(l);
}
// Output
public override string ToString()
{
return x + ", " + y + ", " + z;
}
#endregion
}
}

238
Source/IO/ClippedStream.cs Normal file
View file

@ -0,0 +1,238 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.IO;
namespace CodeImp.DoomBuilder.IO
{
internal class ClippedStream : Stream
{
#region ================== Variables
// Base stream
private Stream basestream;
// Data limit
private int offset;
private int length;
private long position;
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
public override long Length { get { return length; } }
public override long Position { get { return position; } set { this.Seek(value, SeekOrigin.Begin); } }
public override bool CanRead { get { return basestream.CanRead; } }
public override bool CanSeek { get { return basestream.CanSeek; } }
public override bool CanWrite { get { return basestream.CanWrite; } }
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public ClippedStream(Stream basestream, int offset, int length)
{
// Can only create from a stream that can seek
if(!basestream.CanSeek) throw new ArgumentException("ClippedStream can only be created with a Stream that allows Seeking.");
// Initialize
this.basestream = basestream;
this.position = 0;
this.offset = offset;
this.length = length;
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public new void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
basestream = null;
// Dispose base
base.Dispose();
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
// This flushes the written changes
public override void Flush()
{
// Flush base stream
basestream.Flush();
}
// This reads from the stream
public override int Read(byte[] buffer, int offset, int count)
{
// Check if this exceeds limits
if((basestream.Position + count) > (this.offset + this.length))
throw new ArgumentException("Attempted to read outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Read from base stream
return basestream.Read(buffer, offset, count);
}
// This writes to the stream
public override void Write(byte[] buffer, int offset, int count)
{
// Check if this exceeds limits
if((basestream.Position + count) > (this.offset + this.length))
throw new ArgumentException("Attempted to write outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Read from base stream
basestream.Write(buffer, offset, count);
}
// Seek within clipped buffer
public override long Seek(long offset, SeekOrigin origin)
{
// Seeking from beginning
if(origin == SeekOrigin.Begin)
{
// Check if this exceeds limits
if((offset >= this.length) || (offset < 0))
throw new ArgumentException("Attempted to seek outside the range of the stream.");
// Seek
return basestream.Seek(this.offset + offset, SeekOrigin.Begin) - this.offset;
}
// Seeking from current position
else if(origin == SeekOrigin.Current)
{
// Check if this exceeds limits
if((this.position + offset >= this.length) || (this.position + offset < 0))
throw new ArgumentException("Attempted to seek outside the range of the stream.");
// Seek
return basestream.Seek(this.offset + this.position + offset, SeekOrigin.Begin) - this.offset;
}
// Seeking from end
else
{
// Check if this exceeds limits
if((offset > 0) || (this.length + offset < 0))
throw new ArgumentException("Attempted to seek outside the range of the stream.");
// Seek
return basestream.Seek(this.offset + this.length + offset, SeekOrigin.Begin) - this.offset;
}
}
// Change the length of the steam
public override void SetLength(long value)
{
// Not supported
throw new NotSupportedException("This operation is not supported.");
}
// Asynchronous read from stream
public override IAsyncResult BeginRead(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
// Check if this exceeds limits
if((basestream.Position + count) > (this.offset + this.length))
throw new ArgumentException("Attempted to read outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Read
return base.BeginRead(buffer, offset, count, callback, state);
}
// Asynchronous write to stream
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback callback, object state)
{
// Check if this exceeds limits
if((basestream.Position + count) > (this.offset + this.length))
throw new ArgumentException("Attempted to write outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Write
return base.BeginWrite(buffer, offset, count, callback, state);
}
// This closes the stream
public override void Close()
{
basestream.Close();
base.Close();
this.Dispose();
}
// This reads a single byte from the stream
public override int ReadByte()
{
// Check if this exceeds limits
if((basestream.Position + 1) > (this.offset + this.length))
throw new ArgumentException("Attempted to read outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Read from base stream
return basestream.ReadByte();
}
// This writes a single byte to the stream
public override void WriteByte(byte value)
{
// Check if this exceeds limits
if((basestream.Position + 1) > (this.offset + this.length))
throw new ArgumentException("Attempted to write outside the range of the stream.");
// Seek if needed
if(basestream.Position != (this.offset + this.position))
basestream.Seek(this.offset + this.position, SeekOrigin.Begin);
// Read from base stream
basestream.WriteByte(value);
}
#endregion
}
}

1277
Source/IO/Configuration.cs Normal file

File diff suppressed because it is too large Load diff

122
Source/IO/Lump.cs Normal file
View file

@ -0,0 +1,122 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.IO;
namespace CodeImp.DoomBuilder.IO
{
internal class Lump : IDisposable
{
#region ================== Variables
// Owner
private WAD owner;
// Data stream
private ClippedStream stream;
// Data info
private string name;
private byte[] fixedname;
private int offset;
private int length;
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
public WAD Owner { get { return owner; } }
public string Name { get { return name; } }
public byte[] FixedName { get { return fixedname; } }
public int Offset { get { return offset; } }
public int Length { get { return length; } }
public ClippedStream Stream { get { return stream; } }
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public Lump(Stream data, WAD owner, byte[] fixedname, int offset, int length)
{
// Initialize
this.stream = new ClippedStream(data, offset, length);
this.owner = owner;
this.fixedname = fixedname;
this.offset = offset;
this.length = length;
// Make uppercase name
this.name = MakeNormalName(fixedname, owner.Encoding).ToUpperInvariant();
this.fixedname = MakeFixedName(name, owner.Encoding);
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
stream.Dispose();
owner = null;
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
// This makes the normal name from fixed name
private static string MakeNormalName(byte[] fixedname, Encoding encoding)
{
// Return the name as a string
return encoding.GetString(fixedname);
}
// This makes the fixed name from normal name
public static byte[] MakeFixedName(string name, Encoding encoding)
{
// Make 8 bytes, all zeros
byte[] fixedname = new byte[8];
// Write the name in bytes
encoding.GetBytes(name, 0, name.Length, fixedname, 0);
// Return result
return fixedname;
}
// String representation
public override string ToString()
{
return name;
}
#endregion
}
}

313
Source/IO/WAD.cs Normal file
View file

@ -0,0 +1,313 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using System.IO;
namespace CodeImp.DoomBuilder.IO
{
internal class WAD : IDisposable
{
#region ================== Constants
// WAD types
public const string TYPE_IWAD = "IWAD";
public const string TYPE_PWAD = "PWAD";
#endregion
#region ================== Variables
// File objects
private FileStream file;
private BinaryReader reader;
private BinaryWriter writer;
// Encoder
private readonly Encoding encoding = Encoding.ASCII;
// Header
private string type;
private int numlumps;
private int lumpsoffset;
// Lumps
private List<Lump> lumps;
// Status
private bool isreadonly = false;
private bool isdisposed = false;
#endregion
#region ================== Properties
public string Type { get { return type; } }
public Encoding Encoding { get { return encoding; } }
public bool IsReadOnly { get { return isreadonly; } }
public bool IsDisposed { get { return isdisposed; } }
public List<Lump> Lumps { get { return lumps; } }
#endregion
#region ================== Constructor / Disposer
// Constructor to open or create a WAD file
public WAD(string pathfilename)
{
// Initialize
this.isreadonly = false;
this.Open(pathfilename);
}
// Constructor to open or create a WAD file
public WAD(string pathfilename, bool openreadonly)
{
// Initialize
this.isreadonly = openreadonly;
this.Open(pathfilename);
}
// Destructor
~WAD()
{
// Make sure everything is disposed
this.Dispose();
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
foreach(Lump l in lumps) l.Dispose();
if(writer != null) writer.Close();
if(reader != null) reader.Close();
if(file != null) file.Dispose();
// Done
isdisposed = true;
}
}
#endregion
#region ================== IO
// Open a WAD file
private void Open(string pathfilename)
{
FileAccess access;
FileShare share;
// Determine if opening for read only
if(isreadonly)
{
// Read only
access = FileAccess.Read;
share = FileShare.ReadWrite;
}
else
{
// Private access
access = FileAccess.ReadWrite;
share = FileShare.Read;
}
// Open the file stream
file = File.Open(pathfilename, FileMode.OpenOrCreate, access, share);
// Create file handling tools
reader = new BinaryReader(file, encoding);
if(!isreadonly) writer = new BinaryWriter(file, encoding);
// Read information from file
ReadHeaders();
}
// This reads the WAD header and lumps table
private void ReadHeaders()
{
int offset, length;
byte[] fixedname;
// Make sure the write is finished writing
if(!isreadonly) writer.Flush();
// Seek to beginning
file.Seek(0, SeekOrigin.Begin);
// Read WAD type
type = encoding.GetString(reader.ReadBytes(4));
// Number of lumps
numlumps = reader.ReadInt32();
// Lumps table offset
lumpsoffset = reader.ReadInt32();
// Seek to the lumps table
file.Seek(lumpsoffset, SeekOrigin.Begin);
// Dispose old lumps and create new list
if(lumps != null) foreach(Lump l in lumps) l.Dispose();
lumps = new List<Lump>(numlumps);
// Go for all lumps
for(int i = 0; i < numlumps; i++)
{
// Read lump information
offset = reader.ReadInt32();
length = reader.ReadInt32();
fixedname = reader.ReadBytes(8);
// Create the lump
lumps.Add(new Lump(file, this, fixedname, offset, length));
}
}
// This reads the WAD header and lumps table
private void WriteHeaders()
{
// Seek to beginning
file.Seek(0, SeekOrigin.Begin);
// Write WAD type
writer.Write(encoding.GetBytes(type));
// Number of lumps
writer.Write(numlumps);
// Lumps table offset
writer.Write(lumpsoffset);
// Seek to the lumps table
file.Seek(lumpsoffset, SeekOrigin.Begin);
// Go for all lumps
for(int i = 0; i < lumps.Count; i++)
{
// Write lump information
writer.Write(lumps[i].Offset);
writer.Write(lumps[i].Length);
writer.Write(lumps[i].FixedName);
}
}
// This flushes writing changes
public void Flush()
{
// Only possible when not read-only
if(!isreadonly)
{
// Flush writing changes
writer.Flush();
file.Flush();
}
}
#endregion
#region ================== Lumps
// This creates a new lump in the WAD file
public Lump Insert(string name, int position, int datalength)
{
Lump lump;
// We will be adding a lump
numlumps++;
// Extend the file
file.SetLength(file.Length + datalength + 16);
// Create the lump
lump = new Lump(file, this, Lump.MakeFixedName(name, encoding), lumpsoffset, datalength);
lumps.Insert(position, lump);
// Advance lumps table offset
lumpsoffset += datalength;
// Write the new headers
WriteHeaders();
// Return the new lump
return lump;
}
// This removes a lump from the WAD file
public void Remove(Lump lump)
{
// Remove from list
lumps.Remove(lump);
lump.Dispose();
// Write the new headers
WriteHeaders();
}
// This finds a lump by name, returns null when not found
public Lump FindLump(string name)
{
// Do search
return FindLump(name, 0, lumps.Count - 1);
}
// This finds a lump by name, returns null when not found
public Lump FindLump(string name, int start)
{
// Do search
return FindLump(name, start, lumps.Count - 1);
}
// This finds a lump by name, returns null when not found
public Lump FindLump(string name, int start, int end)
{
byte[] fixedname;
// Fix end when it exceeds length
if(end > (lumps.Count - 1)) end = lumps.Count - 1;
// Make sure name is in uppercase
name = name.ToUpperInvariant();
// Make fixed name
fixedname = Lump.MakeFixedName(name, encoding);
// Loop through the lumps
for(int i = start; i <= end; i++)
{
// Check if first byte matches
if(lumps[i].FixedName[0] == fixedname[0])
{
// Check if the lump name matches
if(lumps[i].Name.StartsWith(name, false, CultureInfo.InvariantCulture))
{
// Found the lump!
return lumps[i];
}
}
}
// Nothing found
return null;
}
#endregion
}
}

201
Source/Interface/MainForm.Designer.cs generated Normal file
View file

@ -0,0 +1,201 @@
namespace CodeImp.DoomBuilder.Interface
{
partial class MainForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if(disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
this.menumain = new System.Windows.Forms.MenuStrip();
this.menufile = new System.Windows.Forms.ToolStripMenuItem();
this.itemnewmap = new System.Windows.Forms.ToolStripMenuItem();
this.itemopenmap = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripSeparator();
this.itemsavemap = new System.Windows.Forms.ToolStripMenuItem();
this.itemsavemapas = new System.Windows.Forms.ToolStripMenuItem();
this.itemsavemapinto = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem2 = new System.Windows.Forms.ToolStripSeparator();
this.itemexit = new System.Windows.Forms.ToolStripMenuItem();
this.toolbar = new System.Windows.Forms.ToolStrip();
this.statusbar = new System.Windows.Forms.StatusStrip();
this.panelinfo = new System.Windows.Forms.Panel();
this.display = new System.Windows.Forms.PictureBox();
this.menumain.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.display)).BeginInit();
this.SuspendLayout();
//
// menumain
//
this.menumain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.menufile});
this.menumain.Location = new System.Drawing.Point(0, 0);
this.menumain.Name = "menumain";
this.menumain.Size = new System.Drawing.Size(619, 24);
this.menumain.TabIndex = 0;
this.menumain.Text = "menuStrip1";
//
// menufile
//
this.menufile.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.itemnewmap,
this.itemopenmap,
this.toolStripMenuItem1,
this.itemsavemap,
this.itemsavemapas,
this.itemsavemapinto,
this.toolStripMenuItem2,
this.itemexit});
this.menufile.Name = "menufile";
this.menufile.Size = new System.Drawing.Size(35, 20);
this.menufile.Text = "File";
//
// itemnewmap
//
this.itemnewmap.Name = "itemnewmap";
this.itemnewmap.Size = new System.Drawing.Size(167, 22);
this.itemnewmap.Text = "New Map...";
//
// itemopenmap
//
this.itemopenmap.Name = "itemopenmap";
this.itemopenmap.Size = new System.Drawing.Size(167, 22);
this.itemopenmap.Text = "Open Map...";
//
// toolStripMenuItem1
//
this.toolStripMenuItem1.Name = "toolStripMenuItem1";
this.toolStripMenuItem1.Size = new System.Drawing.Size(164, 6);
//
// itemsavemap
//
this.itemsavemap.Name = "itemsavemap";
this.itemsavemap.Size = new System.Drawing.Size(167, 22);
this.itemsavemap.Text = "Save Map";
//
// itemsavemapas
//
this.itemsavemapas.Name = "itemsavemapas";
this.itemsavemapas.Size = new System.Drawing.Size(167, 22);
this.itemsavemapas.Text = "Save Map As...";
//
// itemsavemapinto
//
this.itemsavemapinto.Name = "itemsavemapinto";
this.itemsavemapinto.Size = new System.Drawing.Size(167, 22);
this.itemsavemapinto.Text = "Save Map Into...";
//
// toolStripMenuItem2
//
this.toolStripMenuItem2.Name = "toolStripMenuItem2";
this.toolStripMenuItem2.Size = new System.Drawing.Size(164, 6);
//
// itemexit
//
this.itemexit.Name = "itemexit";
this.itemexit.Size = new System.Drawing.Size(167, 22);
this.itemexit.Text = "Exit";
//
// toolbar
//
this.toolbar.GripStyle = System.Windows.Forms.ToolStripGripStyle.Hidden;
this.toolbar.Location = new System.Drawing.Point(0, 24);
this.toolbar.Name = "toolbar";
this.toolbar.Size = new System.Drawing.Size(619, 25);
this.toolbar.TabIndex = 1;
this.toolbar.Text = "toolStrip1";
//
// statusbar
//
this.statusbar.Location = new System.Drawing.Point(0, 471);
this.statusbar.Name = "statusbar";
this.statusbar.Size = new System.Drawing.Size(619, 22);
this.statusbar.TabIndex = 2;
//
// panelinfo
//
this.panelinfo.Dock = System.Windows.Forms.DockStyle.Bottom;
this.panelinfo.Location = new System.Drawing.Point(0, 370);
this.panelinfo.Name = "panelinfo";
this.panelinfo.Size = new System.Drawing.Size(619, 101);
this.panelinfo.TabIndex = 4;
//
// display
//
this.display.BackColor = System.Drawing.SystemColors.AppWorkspace;
this.display.BackgroundImage = global::CodeImp.DoomBuilder.Properties.Resources.Splash2;
this.display.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center;
this.display.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.display.Dock = System.Windows.Forms.DockStyle.Fill;
this.display.ErrorImage = null;
this.display.InitialImage = null;
this.display.Location = new System.Drawing.Point(0, 49);
this.display.Name = "display";
this.display.Size = new System.Drawing.Size(619, 321);
this.display.TabIndex = 5;
this.display.TabStop = false;
//
// MainForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(619, 493);
this.Controls.Add(this.display);
this.Controls.Add(this.panelinfo);
this.Controls.Add(this.statusbar);
this.Controls.Add(this.toolbar);
this.Controls.Add(this.menumain);
this.DoubleBuffered = true;
this.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.KeyPreview = true;
this.MainMenuStrip = this.menumain;
this.Name = "MainForm";
this.Text = "Doom Builder";
this.menumain.ResumeLayout(false);
this.menumain.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.display)).EndInit();
this.ResumeLayout(false);
this.PerformLayout();
}
#endregion
private System.Windows.Forms.MenuStrip menumain;
private System.Windows.Forms.ToolStrip toolbar;
private System.Windows.Forms.StatusStrip statusbar;
private System.Windows.Forms.Panel panelinfo;
private System.Windows.Forms.PictureBox display;
private System.Windows.Forms.ToolStripMenuItem menufile;
private System.Windows.Forms.ToolStripMenuItem itemnewmap;
private System.Windows.Forms.ToolStripMenuItem itemopenmap;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem1;
private System.Windows.Forms.ToolStripMenuItem itemsavemap;
private System.Windows.Forms.ToolStripMenuItem itemsavemapas;
private System.Windows.Forms.ToolStripMenuItem itemsavemapinto;
private System.Windows.Forms.ToolStripSeparator toolStripMenuItem2;
private System.Windows.Forms.ToolStripMenuItem itemexit;
}
}

View file

@ -0,0 +1,19 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace CodeImp.DoomBuilder.Interface
{
public partial class MainForm : Form
{
// Constructor
public MainForm()
{
// Setup controls
InitializeComponent();
}
}
}

View file

@ -0,0 +1,258 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="menumain.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<metadata name="toolbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>121, 17</value>
</metadata>
<metadata name="statusbar.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>207, 17</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAMAEBAAAAEACABoBQAANgAAACAgAAABAAgAqAgAAJ4FAAAwMAAAAQAIAKgOAABGDgAAKAAAABAA
AAAgAAAAAQAIAAAAAABAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgAYntiAHeMdwBqgWoAYnNiAAAE
AABpgGkAIDMgAEVZRQAqPyoAip6KAGR4ZABIXkgAfpR+AH6TfgBRZ1EAYndiAJOmkwApPikADikOACQ5
JAA7UDsAUGRQAIWYhQBleWUAY3djAE9jTwAjOCMADyoPABMfEwAWKRYAGykbABIoEgBZbVkANUo1AF9z
XwBabloAEScRACM6IwALFQsAFCIUAAMJAwAVLxUABx4HAF5zXgBVa04AO1IvADtSNgBVa0oAVWpVAAgg
CAAPIw8AAwgDAAYNBgAfOh8APlU+ACYuHgAAAE8AAADwAAwVAAAMFQcAAAAnAAAA9AAnLxoAP1c/ABQg
FAAMGwwABAwEACs8KwBtg20ASF9AACoyHQB5j3kAKzImAD1VMgByh3IAKjwqAAQLBAASKhIAGycbAC9G
LwB5jHkAPlQ+AH+SfwAzSjMAGTcZAAYSBgAdNB0AU2dTABkvGQAGEQYABwwHABs1GwADGwMAFiwWABwy
HAACGgIAMjwyAD1TPQBvhW8AMTsxACAsIAA4QzgAHysfAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAGZnZ2gAAAAAAAAAAAAAAGIEU2NkZQAAAAAAAAAAAFxdXl9gYV1cAAAAAABE
AABXWFlaWllYWwAATgAATyMAUVJTVFRTUlUAI1YAAEQARUZHSElJSktMTQBOADYANzg5Ojs8PT4/QEFC
AEMqACssLS4vDQ0wMTIzNAA1Hh8gISIjJAwMJCMlJicoKQAUFRYXGBkaGhkYGxYcHQAACAkKCwwNDg8Q
ERITCQgAAAACAwQFAAAAAAUHAwIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//
AAD8PwAA+B8AAPAPAACQCQAAkAkAAIABAAAAAAAAAAAAAAAAAACAAQAAgAEAAMPDAAD//wAA//8AACgA
AAAgAAAAQAAAAAEACAAAAAAAgAQAAAAAAAAAAAAAAAEAAAAAAAAAAAAAgACAAIAAAACAgAAAAIAAAACA
gAAAAIAAwMDAAMDcwADwyqYAgICAAP8A/wD/AAAA//8AAAD/AAAA//8AAAD/AP///wDw+/8ApKCgANTw
/wCx4v8AjtT/AGvG/wBIuP8AJar/AACq/wAAktwAAHq5AABilgAASnMAADJQANTj/wCxx/8Ajqv/AGuP
/wBIc/8AJVf/AABV/wAASdwAAD25AAAxlgAAJXMAABlQANTU/wCxsf8Ajo7/AGtr/wBISP8AJSX/AAAA
/wAAANwAAAC5AAAAlgAAAHMAAABQAOPU/wDHsf8Aq47/AI9r/wBzSP8AVyX/AFUA/wBJANwAPQC5ADEA
lgAlAHMAGQBQAPDU/wDisf8A1I7/AMZr/wC4SP8AqiX/AKoA/wCSANwAegC5AGIAlgBKAHMAMgBQAP/U
/wD/sf8A/47/AP9r/wD/SP8A/yX/AP8A/wDcANwAuQC5AJYAlgBzAHMAUABQAP/U8AD/seIA/47UAP9r
xgD/SLgA/yWqAP8AqgDcAJIAuQB6AJYAYgBzAEoAUAAyAP/U4wD/sccA/46rAP9rjwD/SHMA/yVXAP8A
VQDcAEkAuQA9AJYAMQBzACUAUAAZAP/U1AD/sbEA/46OAP9rawD/SEgA/yUlAP8AAADcAAAAuQAAAJYA
AABzAAAAUAAAAP/j1AD/x7EA/6uOAP+PawD/c0gA/1clAP9VAADcSQAAuT0AAJYxAABzJQAAUBkAAP/w
1AD/4rEA/9SOAP/GawD/uEgA/6olAP+qAADckgAAuXoAAJZiAABzSgAAUDIAAP//1AD//7EA//+OAP//
awD//0gA//8lAP//AADc3AAAubkAAJaWAABzcwAAUFAAAPD/1ADi/7EA1P+OAMb/awC4/0gAqv8lAKr/
AACS3AAAerkAAGKWAABKcwAAMlAAAOP/1ADH/7EAq/+OAI//awBz/0gAV/8lAFX/AABJ3AAAPbkAADGW
AAAlcwAAGVAAANT/1ACx/7EAjv+OAGv/awBI/0gAJf8lAAD/AAAA3AAAALkAAACWAAAAcwAAAFAAANT/
4wCx/8cAjv+rAGv/jwBI/3MAJf9XAAD/VQAA3EkAALk9AACWMQAAcyUAAFAZANT/8ACx/+IAjv/UAGv/
xgBI/7gAJf+qAAD/qgAA3JIAALl6AACWYgAAc0oAAFAyANT//wCx//8Ajv//AGv//wBI//8AJf//AAD/
/wAA3NwAALm5AACWlgAAc3MAAFBQAPLy8gDm5uYA2traAM7OzgDCwsIAtra2AKqqqgCenp4AkpKSAIaa
hgB6jnoAboJuAGJ2YgBWalYASl5KAD5SPgAyRjIAJjomABouGgAOIg4AAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPz7+fn5+fv8AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAD6+vn5+fn5+fn6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr5+/7///77+foAAAAAAAAAAAAAAAAA
AAAAAAAAAP7+/v/+/v7+/v7//v7+AAAAAAAAAAAAAAAAAAAAAAAAAP7//////v7+/////gAAAAAAAAAA
AAAAAAAAAAAAAAAA/v75/Pz+/vz8+f7+AAAAAAAAAAAAAAAAAP8AAAAA//78/v75/v7+/vn+/vz+/wAA
AAD/AAAAAAD//wAAAP7++/n8/v749vb4/v78+fv//gAAAP//AAAAAAD/AAAA+/779/b3+fn39/n59/b3
+/z7AAAA//8AAAAA/wAAAAD6+vv5+fn59/f39/n5+fv6+voAAAD/AAAAAAAAAAAA//v3+fz+AAD79/f7
AAD+/Pn3+/8AAAAAAAAA/wAA////9wAANjUQNQD7+wAANRA1AAD3//8AAAD/AAAAAAD8///8+fr8AAD/
AP7+AP8AAPz6+fz/APwAAP8AAP8AAP/////8/P7+/vz8/v78/P7+/vz8/////wAAAAAAAAAA//7//vn3
9/f5/Pn5+fn8+ff3+fn+//4AAAD/AAD/AP4A/f/+/Pj5/Pf79/r69/v3/Pn4/P7//f/+AP8AAP3//v7+
/f/7+fz8+fr5+fn5+vn8/Pn7//3+/gD//QAAAP///v7++vn5+Pb3+fn5+fn59/b4+fn6/v7+//8AAAAA
///+/Pz8/Pn39/n5+Pj4+Pn59/f5/Pz8/P7//wAAAAD8/vz7//z2+ff3+fv39vb3+fn39/f2/P/7/P78
AAAAAAD+/vn5/Pb2+/n7+/n5+fn7+/n79vb8+fn+/gAAAAAAAPz++vn3+vr2+vwAAAAAAAD8+vb6+vf5
+v78AAAAAAAAAPj4+fn49/cAAAAAAAAAAAAA9/f4+fn4+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//////////////////
////+B///+AH///AA///wAP//4AB//8AAP/HAADjxwAA44YAAGGGAABhhAAAIYAAAAEAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AfgB/Af+A//////////////////////KAAAADAA
AABgAAAAAQAIAAAAAACACgAAAAAAAAAAAAAAAQAAAAAAAAAAAAAIDAgAYntiAHeMdwBqgWoAYnNiAAAE
AABpgGkAIDMgAEVZRQAqPyoAip6KAGR4ZABIXkgAfpR+AH6TfgBRZ1EAYndiAJOmkwApPikADikOACQ5
JAA7UDsAUGRQAIWYhQBleWUAY3djAE9jTwAjOCMADyoPABMfEwAWKRYAGykbABIoEgBZbVkANUo1AF9z
XwBabloAEScRACM6IwALFQsAFCIUAAMJAwAVLxUABx4HAF5zXgBVa04AO1IvADtSNgBVa0oAVWpVAAgg
CAAPIw8AAwgDAAYNBgAfOh8APlU+ACYuHgAAAE8AAACuAAwVAAAMFQcAAAAnAAAA9AAnLxoAP1c/ABQg
FAAMGwwABAwEACs8KwBtg20ASF9AACoyHQB5j3kAKzImAD1VMgByh3IAKjwqAAQLBAASKhIAGycbAC9G
LwB5jHkAPlQ+AH+SfwAzSjMAGTcZAAYSBgAdNB0AU2dTABkvGQAGEQYABwwHABs1GwADGwMAFiwWABwy
HAACGgIAMjwyAD1TPQBvhW8AMTsxACAsIAA4QzgAHysfAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////1xc
XFxcXFxc//////////////////////////////////////////////////9cXAoKCgoKCgoKXFz/////
/////////////////////////////////////////1wKUVEWGxsbGxZRCgpc////////////////////
////////////////////////XAoKQRsbBQUFBRsbQRYKXP//////////////////////////////////
//////9cKBYWGxsbQUFBQUEbGxsWKFz//////////////////////////////////////1xQKEpRUQoK
CjQ0CgoKUVFKKFBc/////////////////////////////////////1woKFA0Kys0KCgoKDQrKzRQKChc
/////////////////////////////////////1woUFAoAVxcXFxcXFxcAShQUChc////////////////
////////////////////XFAoUFxcXFxcXFxcXFxcXFxcUChQXP//////////////////////////////
////XEpQUFxcCAoWFlBQFhYKCFxcUFBKXP//////////////////////XFxc//////9cXEooXFwICgoK
ClxcCgoKCghcXChKXFz//////1xcXP////////9cXFxcXP////9QAVFKKFxQUUEKKFxcKApBUVBcKEpR
AVD/////XFxcXFz///////9cXFxcXP///0pcUBZRSihQUFEoKCsrKChRUFAoSlEWUFxK////XFxcXFz/
/////1xcXFxcXP///yhQUBsbQUpQUCgFMgcHMgUoUFBKQRsbNFAo////XFxcXFxc////UFxcXFxcXP//
SlFKK0EFBwcFGxsbGwUFGxsbGwUHBwVBClFRSv//XFxcXFxcUP//XFxcXFxcXP9cShYbFlFBQUFBQRsb
BQUFBRsbQUFBQVFRFhsWSlz/XFxcXFxcXP//XFxcXFxcXP9QKBsWGxsKKFBcUApRGwUFG1EKUFxQKAob
GxYbNFD/XFxcXFxcXP//XFxcXFxcXFxcKFEbBRZKAVBcXFxcUQUFUVxcXFxQAUoWBRtRK1xcXFxcXFxc
XP//XFxcXFxcXFxcUQoKNCgoOjs7O1xcXEFBXFxcOjo7OzsoNAoKUVxcXFxcXFxcXFxcXFxcXFxcXFxc
CgUKXFw6OwA6PztcXFFRXFxcOjsAOj87XAoFClxcXFxcXFxcXFxcXFxcXCgoKFxcXBsWSkpBUUpcXFxc
XBYWXFxcXFxKUQVKShYbXFxcKCgoXFxcXFxQKAEBXEpKKFxcAQpRG0pKUFxcXDQ0XCsrXDQ0XFxcUEpK
G1EKAVxcKEpKXAEBKFBQXFxcKCgBXFxcXFwoCkpQUFAoNEpRSlBQSlFKNChQUFBKCihcXFxcXAEoKFxc
XFBcXFxcKFxcUFBcXChQGwUFBQUbFgorQUFBQSsKFhsFBQUFG1AoXFxQUFxcKFxcXFxcXFxcXAFcXChc
XChQFgcHBQcyFgpRFgoKFlEKFjIHBQcHFlAoXFwoXFwBXFxcXFxcXFxcUCgBXEpcXFBKSgVBUQoFMlEb
BRYWBRtRMgUKUUEFSkpQXFxKXAEoUFxcXFwoXEooXFBQUFBKUFwKUUFKSgobBRYFGxsbGwUWBRsKSkpB
UQpcUEpQUFBQXChKXCj/XFxcXFxcKChKSgoKFhYbGwUFG0EFGzIyGwVBGwUFGxsWFgoKSkooKFxcXFxc
XP//KFxcXFxQKCgoURZBGwcyBQcFFhsFG0FBGwUbFgUHBTIHG0EWUSgoKFBcXFxcKP//UVxcXFwoUEpK
UAoWQQUHBwUyURsFBVFRBQUbFjIFBwcFQRYKUEpKUChcXFxcUf///1BcXEooKEpKSkpQSjIFBwUbURsH
MjIyMgcbURsFBwUySlBKSkpKKChKXFxQ/////yhcKEooSlAWBxtKFgcHBxtRURsFBxsbBwUbUVEbBwcH
FkobBxZQSihKKFwo//////9KUCgoKEEbCkobBxtRGxtRUVFBGxsbG0FRUVEbG1EbBxtKChtBKCgoUEr/
////////KChKUEpRFhsFBxYbBzJBCv//////////CkEyBxsWBwUbFlFKUEooKP///////////1FQMhYb
FgUHFhsHGxYK/////////////woWGwcbFgcFFhsWMlBR/////////////wpKURYWBQcWGwcbFkH/////
//////////9BFhsHGxYHBRYWUUoK//////////////8yQTIbQUEbMgUF/////////////////////wUF
MjJBQRsyQTL/////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////wD////////8AD////////
gAH///////8AAP///////gAAf//////8AAA///////wAAD///////AAAP//////4AAAf//////gAAB//
///x8AAAD4///+DwAAAPB///4OAAAAcH///A4AAABwP//4DAAAADAf//gIAAAAEB//+AgAAAAQH//4AA
AAAAAf//gAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA//8AAAAAAAD//wAAAAAAAP//AAAAAAAA
//8AAAAAAAD//wAAAAAAAP//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//wAAAAAAD///AAAAAAAP//+AA
AAAAB///8AAP8AAP///4AB/4AB////gAP/wAH////AD//wA/////////////////////////////////
//////////////////////////////////8=
</value>
</data>
</root>

99
Source/Map/Linedef.cs Normal file
View file

@ -0,0 +1,99 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Map
{
internal class Linedef : IDisposable
{
#region ================== Constants
#endregion
#region ================== Variables
// Vertices
private Vertex start;
private Vertex end;
// Sidedefs
private Sidedef front;
private Sidedef back;
// Properties
private int flags;
private int action;
private int tag;
private byte[] args;
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
// Disposing
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public Linedef(Vertex start, Vertex end)
{
// Initialize
this.start = start;
this.end = end;
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Detach from vertices
start.Detach(this);
end.Detach(this);
// Dispose sidedefs
front.Dispose();
back.Dispose();
// Clean up
start = null;
end = null;
front = null;
back = null;
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
#endregion
}
}

71
Source/Map/MapManager.cs Normal file
View file

@ -0,0 +1,71 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Map
{
internal class MapManager : IDisposable
{
#region ================== Constants
#endregion
#region ================== Variables
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
// Disposing
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public MapManager()
{
// Initialize
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
#endregion
}
}

59
Source/Map/Sidedef.cs Normal file
View file

@ -0,0 +1,59 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
namespace CodeImp.DoomBuilder.Map
{
internal class Sidedef : IDisposable
{
#region ================== Constants
#endregion
#region ================== Variables
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
// Disposing
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public Sidedef()
{
// Initialize
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Clean up
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
#endregion
}
}

99
Source/Map/Vertex.cs Normal file
View file

@ -0,0 +1,99 @@
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text;
using CodeImp.DoomBuilder.Geometry;
namespace CodeImp.DoomBuilder.Map
{
internal class Vertex : IDisposable
{
#region ================== Constants
#endregion
#region ================== Variables
// Position
private Vector2D pos;
// References
private List<Linedef> linedefs;
// Disposing
private bool isdisposed = false;
#endregion
#region ================== Properties
public List<Linedef> Linedefs { get { return linedefs; } }
public Vector2D Position { get { return pos; } }
public bool IsDisposed { get { return isdisposed; } }
#endregion
#region ================== Constructor / Disposer
// Constructor
public Vertex(Vector2D pos)
{
// Initialize
this.pos = pos;
// We have no destructor
GC.SuppressFinalize(this);
}
// Diposer
public void Dispose()
{
// Not already disposed?
if(!isdisposed)
{
// Dispose the lines that are attached to this vertex
// because a linedef cannot exist without 2 vertices.
foreach(Linedef l in linedefs) l.Dispose();
// Clean up
linedefs = null;
// Done
isdisposed = true;
}
}
#endregion
#region ================== Methods
// This attaches a linedef
public void Attach(Linedef l) { linedefs.Add(l); }
// This detaches a linedef
public void Detach(Linedef l) { linedefs.Remove(l); }
// This rounds the coordinates to integrals
public void Round()
{
// Round to integrals
pos.x = (float)Math.Round(pos.x);
pos.y = (float)Math.Round(pos.y);
}
#endregion
}
}

70
Source/Properties/Resources.Designer.cs generated Normal file
View file

@ -0,0 +1,70 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:2.0.50727.42
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace CodeImp.DoomBuilder.Properties {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CodeImp.DoomBuilder.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
internal static System.Drawing.Bitmap Splash2 {
get {
object obj = ResourceManager.GetObject("Splash2", resourceCulture);
return ((System.Drawing.Bitmap)(obj));
}
}
}
}

View file

@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Splash2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Splash2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

View file

@ -0,0 +1,8 @@
..\Build\Builder.exe
..\Build\Builder.pdb
obj\Debug\ResolveAssemblyReference.cache
obj\Debug\Builder.csproj.GenerateResource.Cache
obj\Debug\Builder.exe
obj\Debug\Builder.pdb
obj\Debug\CodeImp.DoomBuilder.Interface.MainForm.resources
obj\Debug\CodeImp.DoomBuilder.Properties.Resources.resources

Binary file not shown.

Binary file not shown.

Binary file not shown.