Ignore:
Timestamp:
2012-07-04 13:57:59 (8 years ago)
Author:
dezhidki
Message:

Updated camera motion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 2012/27/DenisZ/TheDungeonGame/TheDungeonGame/TheDungeonGame/Room.cs

    r3525 r3538  
    88namespace Rooms 
    99{ 
    10     abstract class Room 
     10    public abstract class Room 
    1111    { 
    1212 
     
    1616        private bool isBuilt = false; 
    1717        protected IPhysicsObject[,] insideObjects; 
     18        protected IPhysicsObject[] doors = new IPhysicsObject[4]; 
    1819        protected double blockWidth, blockHeight; 
    1920        protected double insideWidth, insideHeight; 
     
    99100        public void addDoors(int[] directions) 
    100101        { 
    101             if(directions.Length > 4) throw new ArgumentException("Argument's length must be 4!"); 
     102            if (directions.Length > 4) throw new ArgumentException("Argument's length must be 4!"); 
    102103 
    103104            for (int i = 0; i < directions.Length; i++) 
    104105            { 
    105                 if(directions[i] == -1) continue; 
     106                if (directions[i] == -1) continue; 
     107 
     108                PhysicsObject door = null; 
    106109 
    107110                if (directions[i] == RoomDirection.North) 
    108111                { 
    109                     PhysicsObject doorTop = PhysicsObject.CreateStaticObject(thickness, thickness); 
    110                     doorTop.Position = Position + new Vector((width + thickness) / 2, -thickness / 2); 
    111                     doorTop.Tag = "Top Door"; 
    112                     roomObjects.Add(doorTop); 
    113                 }else 
     112                    door = PhysicsObject.CreateStaticObject(thickness, thickness); 
     113                    door.Position = Position + new Vector((width + thickness) / 2, -thickness / 2); 
     114                    door.Tag = RoomDirection.North; 
     115                } 
     116                else 
    114117                    if (directions[i] == RoomDirection.East) 
    115118                    { 
    116                         PhysicsObject doorRight = PhysicsObject.CreateStaticObject(thickness, thickness); 
    117                         doorRight.Position = Position + new Vector(width + thickness / 2, -(height + thickness) / 2); 
    118                         doorRight.Tag = "Right Door"; 
    119                         roomObjects.Add(doorRight); 
     119                        door = PhysicsObject.CreateStaticObject(thickness, thickness); 
     120                        door.Position = Position + new Vector(width + thickness / 2, -(height + thickness) / 2); 
     121                        door.Tag = RoomDirection.East; 
    120122                    } 
    121123                    else 
    122124                        if (directions[i] == RoomDirection.South) 
    123125                        { 
    124                             PhysicsObject doorBottom = PhysicsObject.CreateStaticObject(thickness, thickness); 
    125                             doorBottom.Position = Position + new Vector((thickness + width) / 2, -height - thickness / 2); 
    126                             doorBottom.Tag = "Bottom Door"; 
    127                             roomObjects.Add(doorBottom); 
     126                            door = PhysicsObject.CreateStaticObject(thickness, thickness); 
     127                            door.Position = Position + new Vector((thickness + width) / 2, -height - thickness / 2); 
     128                            door.Tag = RoomDirection.South; 
    128129                        } 
    129130                        else 
    130131                            if (directions[i] == RoomDirection.West) 
    131132                            { 
    132                                 PhysicsObject doorLeft = PhysicsObject.CreateStaticObject(thickness, thickness); 
    133                                 doorLeft.Position = Position + new Vector(thickness / 2, -height / 2 - thickness / 2); 
    134                                 doorLeft.Tag = "Left Door"; 
    135                                 roomObjects.Add(doorLeft); 
     133                                door = PhysicsObject.CreateStaticObject(thickness, thickness); 
     134                                door.Position = Position + new Vector(thickness / 2, -height / 2 - thickness / 2); 
     135                                door.Tag = RoomDirection.West; 
    136136                            } 
    137             }     
     137                if (door != null) 
     138                { 
     139                    roomObjects.Add(door); 
     140                    doors[i] = door; 
     141                } 
     142                    
     143            } 
    138144        } 
    139145 
     
    176182    } 
    177183 
    178     class RoomDirection 
     184    public class RoomDirection 
    179185    { 
    180186        public const int North = 0; 
     
    196202            return Vector.Zero; 
    197203        } 
     204 
     205        public static Vector getOffsetFromWorldDir(int dir) 
     206        { 
     207            if (dir == North) 
     208                return new Vector(0, 1); 
     209            if (dir == East) 
     210                return new Vector(1, 0); 
     211            if (dir == South) 
     212                return new Vector(0, -1); 
     213            if (dir == West) 
     214                return new Vector(-1, 0); 
     215 
     216            return Vector.Zero; 
     217        } 
    198218    } 
    199219} 
Note: See TracChangeset for help on using the changeset viewer.