DEADSOFTWARE

Movement: Improve and simplify WASD control
[d2df-editor.git] / src / editor / g_map.pas
index 5a17e97276fc8f681fdcd8d57b7f2cf0e0632f6b..4c94a1938a170069bfe2d38815bf10d5de605380 100644 (file)
@@ -194,6 +194,8 @@ var
   gAlphaEdge: Byte;
   gAlphaTriggerLine: Byte;
   gAlphaTriggerArea: Byte;
+  gAlphaMonsterRect: Byte;
+  gAlphaAreaRect: Byte;
   drEdge: Array[0..3] of Byte;
   gPanels: Array of TPanel;
   gItems: Array of TItem;
@@ -219,7 +221,7 @@ function  ObjectCollideLevel(fID: DWORD; ObjectType: Byte; dX, dY: Integer): Boo
 function  ObjectCollide(ObjectType: Byte; ID: DWORD; fX, fY: Integer; fWidth, fHeight: Word): Boolean;
 function  ObjectGetRect(ObjectType: Byte; ID: DWORD): TRectWH;
 procedure MoveObject(ObjectType: Byte; ID: DWORD; dX, dY: Integer);
-procedure ResizeObject(ObjectType: Byte; ID: DWORD; dWidth, dHeight: Integer; ResizeDir: Byte);
+function ResizeObject(ObjectType: Byte; ID: DWORD; dWidth, dHeight: Integer; ResizeDir: Byte): Boolean;
 function  ObjectSelected(ObjectType: Byte; ID: DWORD): Boolean;
 
 function  GetPanelName(PanelType: Word): String;
@@ -862,8 +864,9 @@ begin
   end;
 end;
 
-procedure ResizeObject(ObjectType: Byte; ID: DWORD; dWidth, dHeight: Integer; ResizeDir: Byte);
+function ResizeObject(ObjectType: Byte; ID: DWORD; dWidth, dHeight: Integer; ResizeDir: Byte): Boolean;
 begin
+  Result := True;
   case ObjectType of
     OBJECT_PANEL:
       with gPanels[ID] do
@@ -873,6 +876,7 @@ begin
         else
           begin
             Width := 0;
+            Result := False;
             Exit;
           end;
    
@@ -881,6 +885,7 @@ begin
         else
           begin
             Height := 0;
+            Result := False;
             Exit;
           end;
 
@@ -901,6 +906,7 @@ begin
         else
           begin
             Width := 0;
+            Result := False;
             Exit;
           end;
 
@@ -909,6 +915,7 @@ begin
         else
           begin
             Height := 0;
+            Result := False;
             Exit;
           end;
 
@@ -2198,6 +2205,7 @@ begin
         with MonsterSize[gMonsters[a].MonsterType] do
         begin
           ID := DWORD(-1);
+          sel := ObjectSelected(OBJECT_MONSTER, a);
 
           case gMonsters[a].MonsterType of
             0: Continue;
@@ -2256,7 +2264,7 @@ begin
           begin
             e_DrawQuad(MapOffset.X+gMonsters[a].X, MapOffset.Y+gMonsters[a].Y,
                        MapOffset.X+gMonsters[a].X+Width-1, MapOffset.Y+gMonsters[a].Y+Height-1,
-                       255, 255, 255);
+                       255, 255, 255, IfThen(sel, 0, gAlphaMonsterRect));
           end;
         end;
 
@@ -2273,6 +2281,7 @@ begin
         with AreaSize[gAreas[a].AreaType] do
         begin
           ID := DWORD(-1);
+          sel := ObjectSelected(OBJECT_AREA, a);
 
           case gAreas[a].AreaType of
             AREA_PLAYERPOINT1: g_GetTexture('AREA_PLAYERPOINT1', ID);
@@ -2302,7 +2311,7 @@ begin
           begin
             e_DrawQuad(MapOffset.X+gAreas[a].X, MapOffset.Y+gAreas[a].Y,
                        MapOffset.X+gAreas[a].X+Width-1, MapOffset.Y+gAreas[a].Y+Height-1,
-                       255, 255, 255);
+                       255, 255, 255, IfThen(sel, 0, gAlphaAreaRect));
 
             e_DrawPoint(2, MapOffset.X+gAreas[a].X, MapOffset.Y+gAreas[a].Y, 255, 0, 0);
           end;
@@ -2789,6 +2798,7 @@ begin
  g_CreateTextureWADSize('ITEM_INVUL', EditorDir+'data/Game.wad:TEXTURES\INVUL', 0, 0, 32, 32);
  g_CreateTextureWADSize('ITEM_BOTTLE', EditorDir+'data/Game.wad:TEXTURES\BOTTLE', 0, 0, 16, 32);
  g_CreateTextureWADSize('ITEM_HELMET', EditorDir+'data/Game.wad:TEXTURES\HELMET', 0, 0, 16, 16);
+ g_CreateTextureWADSize('ITEM_JETPACK', EditorDir+'data/Game.wad:TEXTURES\JETPACK', 0, 0, 32, 32);
  g_CreateTextureWADSize('ITEM_INVIS', EditorDir+'data/Game.wad:TEXTURES\INVIS', 0, 0, 32, 32);
  g_CreateTextureWADSize('ITEM_WEAPON_FLAMETHROWER', EditorDir+'data/Game.wad:TEXTURES\FLAMETHROWER', 0, 0, 64, 32);
  g_CreateTextureWADSize('ITEM_AMMO_FUELCAN', EditorDir+'data/Game.wad:TEXTURES\FUELCAN', 0, 0, 16, 32);
@@ -2820,7 +2830,6 @@ begin
  g_CreateTextureWAD('ITEM_OXYGEN', EditorDir+'data/Game.wad:TEXTURES\OXYGEN');
  g_CreateTextureWAD('ITEM_SUIT', EditorDir+'data/Game.wad:TEXTURES\SUIT');
  g_CreateTextureWAD('ITEM_MEDKIT_BLACK', EditorDir+'data/Game.wad:TEXTURES\BMED');
- g_CreateTextureWAD('ITEM_JETPACK', EditorDir+'data/Game.wad:TEXTURES\JETPACK');
 
  g_CreateTextureWAD('AREA_PLAYERPOINT1', EditorDir+'data/Editor.wad:TEXTURES\P1POINT');
  g_CreateTextureWAD('AREA_PLAYERPOINT2', EditorDir+'data/Editor.wad:TEXTURES\P2POINT');