Changeset 7826 for 2016/27


Ignore:
Timestamp:
2016-07-05 22:12:25 (3 years ago)
Author:
sieerinn
Message:

Luomismetodit siirretty LevelCreationMethods?.cs tiedostoon ja kaikenlaista koodin siistimistä tehty

Location:
2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/MovingPlatform.cs

    r7733 r7826  
    1 using System; 
    2 using System.Collections.Generic; 
    3 using System.Linq; 
    4 using System.Text; 
    5 using Jypeli; 
    6 using Physics2DDotNet; 
     1using Jypeli; 
    72 
    8 class MovingPlatform : SimplePhysics.Object 
     3namespace VenienteFragore 
    94{ 
    10     private readonly Vector startPosition; 
     5    class MovingPlatform : SimplePhysics.Object 
     6    { 
     7        private readonly Vector startPosition; 
    118 
    12     private readonly double distance; 
     9        private readonly double distance; 
    1310 
    14     private Vector direction; 
     11        private Vector direction; 
    1512 
    1613 
    17     public MovingPlatform(Vector position, Vector direction, double distance, double width, double height) : base(width, height) 
    18     { 
    19         this.direction = direction; 
    20         this.distance = distance; 
    21         Position = startPosition = position; 
    22         IgnoresGravity = true; 
    23     } 
     14        public MovingPlatform(Vector position, Vector direction, double distance, double width, double height) : base(width, height) 
     15        { 
     16            this.direction = direction; 
     17            this.distance = distance; 
     18            Position = startPosition = position; 
     19            IgnoresGravity = true; 
     20        } 
    2421 
    25     public override void Update(Time time) 
    26     { 
    27         if (Vector.Distance(startPosition, Position) > distance) 
     22        public override void Update(Time time) 
    2823        { 
    29             direction = -direction; 
     24            if (Vector.Distance(startPosition, Position) > distance) 
     25            { 
     26                direction = -direction; 
     27            } 
     28            Velocity = direction; 
     29            Game.UpdateMovingPlatform(this, time); 
     30            //base.Update(time); 
    3031        } 
    31         Velocity = direction; 
    32         Game.UpdateMovingPlatform(this, time); 
    33         //base.Update(time); 
    3432    } 
    3533} 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/Player.cs

    r7807 r7826  
    6666            } 
    6767 
    68             //Tämä tänne ehkä? 
    6968            if (Carrying != null) 
    7069            { 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/SimplePlatformCharacter.cs

    r7807 r7826  
    3131        } 
    3232    } 
    33  
    3433} 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/TiledTileMap.cs

    r7808 r7826  
    33using System.IO; 
    44using System.Linq; 
    5 using System.Text; 
    65using Jypeli; 
    76using TiledSharp; 
    87 
     8namespace VenienteFragore 
     9{ 
     10    public class TiledTileMap 
     11    { 
     12        public delegate void ObjectMethod( 
     13            Vector position, double width, double height, Angle angle, Shape shape, string name, Dictionary<string, string> properties); 
    914 
    10 public class TiledTileMap 
    11 { 
    12     public delegate void ObjectMethod( 
    13         Vector position, double width, double height, Angle angle, Shape shape, string name, Dictionary<string, string> properties); 
     15        public delegate void TileMethod( 
     16            int x, int y, Image image, string layerName, Dictionary<string, string> properties); 
    1417 
    15     public delegate void TileMethod( 
    16         int x, int y, Image image, string layerName, Dictionary<string, string> properties); 
     18        private readonly Dictionary<string, ObjectMethod> objectLegend = new Dictionary<string, ObjectMethod>(); 
    1719 
    18     private readonly Dictionary<string, ObjectMethod> objectLegend = new Dictionary<string, ObjectMethod>(); 
     20        private readonly Dictionary<string, TileMethod> tileLegend = new Dictionary<string, TileMethod>(); 
    1921 
    20     private readonly Dictionary<string, TileMethod> tileLegend = new Dictionary<string, TileMethod>(); 
     22        private readonly TmxMap level; 
    2123 
    22     private readonly TmxMap level; 
     24        private Image[] tileImages; 
    2325 
    24     private Image[] tileImages; 
    25  
    26     private TiledTileMap(TmxMap tmxMap) 
    27     { 
    28         level = tmxMap; 
    29     } 
    30  
    31     public static TiledTileMap FromLevelAsset(string assetName) 
    32     { 
    33         var tmxMap = new TmxMap(string.Format("Content/{0}.tmx", assetName)); 
    34         var map = new TiledTileMap(tmxMap); 
    35         map.LoadTileImages(); 
    36         return map; 
    37     } 
    38  
    39     public void SetObjectMethod(string layerName, ObjectMethod objectMethod) 
    40     { 
    41         objectLegend[layerName] = objectMethod; 
    42     } 
    43  
    44     public void SetTileMethod(string layerName, TileMethod tileMethod) 
    45     { 
    46         tileLegend[layerName] = tileMethod; 
    47     } 
    48  
    49     public void Execute() 
    50     { 
    51         var game = (SimplePhysics.Game)Game.Instance; 
    52         game.InitializeTileMap(level.Width, level.Height); 
    53         game.Level.Width = level.Width * level.TileWidth; 
    54         game.Level.Height = level.Height * level.TileHeight; 
    55  
    56         foreach (var tmxLayer in level.Layers) 
     26        private TiledTileMap(TmxMap tmxMap) 
    5727        { 
    58             CreateTileLayer(tmxLayer, game); 
     28            level = tmxMap; 
    5929        } 
    6030 
    61         foreach (var group in level.ObjectGroups) 
     31        public static TiledTileMap FromLevelAsset(string assetName) 
    6232        { 
    63             CreateObjectLayer(group, game); 
     33            var tmxMap = new TmxMap(string.Format("Content/{0}.tmx", assetName)); 
     34            var map = new TiledTileMap(tmxMap); 
     35            map.LoadTileImages(); 
     36            return map; 
    6437        } 
    65     } 
    6638 
    67     private void CreateTileLayer(TmxLayer layer, Game game) 
    68     { 
    69         TileMethod method; 
    70         if (!tileLegend.TryGetValue(layer.Name, out method)) return; 
     39        public void SetObjectMethod(string layerName, ObjectMethod objectMethod) 
     40        { 
     41            objectLegend[layerName] = objectMethod; 
     42        } 
    7143 
    72         //double tileWidth = level.TileWidth; 
    73         //double tileHeight = level.TileHeight; 
     44        public void SetTileMethod(string layerName, TileMethod tileMethod) 
     45        { 
     46            tileLegend[layerName] = tileMethod; 
     47        } 
    7448 
    75         foreach (var tile in layer.Tiles) 
     49        public void Execute() 
    7650        { 
    77             int gid = tile.Gid; 
    78             if (gid == 0) 
    79                 continue; 
     51            var game = (SimplePhysics.Game)Game.Instance; 
     52            game.InitializeTileMap(level.Width, level.Height); 
     53            game.Level.Width = level.Width * level.TileWidth; 
     54            game.Level.Height = level.Height * level.TileHeight; 
    8055 
    81             int tileIndex = tile.Gid - 1; 
    82             var tile1 = tile; 
    83             Dictionary<string, string> props = level.Tilesets[0].Tiles.Where(t => level.Tilesets[0].FirstGid + t.Id == tile1.Gid).Select(t => t.Properties).FirstOrDefault(); 
    84             props = props ?? new Dictionary<string, string>(); 
    85             method(tile.X, tile.Y, tileImages[tileIndex], layer.Name, props); 
     56            foreach (var tmxLayer in level.Layers) 
     57            { 
     58                CreateTileLayer(tmxLayer, game); 
     59            } 
     60 
     61            foreach (var group in level.ObjectGroups) 
     62            { 
     63                CreateObjectLayer(group, game); 
     64            } 
    8665        } 
    87     } 
    8866 
    89     private void CreateObjectLayer(TmxObjectGroup group, Game game) 
    90     { 
    91         ObjectMethod method; 
    92         if (!objectLegend.TryGetValue(group.Name, out method)) return; 
    93         foreach (var obj in group.Objects) 
     67        private void CreateTileLayer(TmxLayer layer, Game game) 
    9468        { 
    95             Shape shape = Shape.Rectangle; 
    96             if (obj.ObjectType == TmxObjectGroup.TmxObjectType.Ellipse) 
    97                 shape = Shape.Circle; 
     69            TileMethod method; 
     70            if (!tileLegend.TryGetValue(layer.Name, out method)) return; 
    9871 
    99             var angle = Angle.FromDegrees(-obj.Rotation); 
    100             var topLeft = new Vector(game.Level.Left + obj.X, game.Level.Top - obj.Y); 
    101             var len = Math.Sqrt(Math.Pow(obj.Width * 0.5, 2) + Math.Pow(obj.Height * 0.5, 2)); 
    102             var positionFix = Vector.FromLengthAndAngle(len, angle + Angle.FromRadians(-Math.Atan2(obj.Height, obj.Width))); 
    103             positionFix += new Vector(0.0, obj.Height); 
    104             method(topLeft + positionFix, obj.Width, obj.Height, angle, shape, obj.Type, obj.Properties); 
     72            //double tileWidth = level.TileWidth; 
     73            //double tileHeight = level.TileHeight; 
     74 
     75            foreach (var tile in layer.Tiles) 
     76            { 
     77                int gid = tile.Gid; 
     78                if (gid == 0) 
     79                    continue; 
     80 
     81                int tileIndex = tile.Gid - 1; 
     82                var tile1 = tile; 
     83                Dictionary<string, string> props = level.Tilesets[0].Tiles.Where(t => level.Tilesets[0].FirstGid + t.Id == tile1.Gid).Select(t => t.Properties).FirstOrDefault(); 
     84                props = props ?? new Dictionary<string, string>(); 
     85                method(tile.X, tile.Y, tileImages[tileIndex], layer.Name, props); 
     86            } 
    10587        } 
    106     } 
    10788 
    108     private void LoadTileImages() 
    109     { 
    110         int tileCount = level.Tilesets.Sum(t => (t.Image.Width.Value / t.TileWidth) * (t.Image.Height.Value / t.TileHeight)); 
    111         tileImages = new Image[tileCount]; 
     89        private void CreateObjectLayer(TmxObjectGroup group, Game game) 
     90        { 
     91            ObjectMethod method; 
     92            if (!objectLegend.TryGetValue(group.Name, out method)) return; 
     93            foreach (var obj in group.Objects) 
     94            { 
     95                Shape shape = Shape.Rectangle; 
     96                if (obj.ObjectType == TmxObjectGroup.TmxObjectType.Ellipse) 
     97                    shape = Shape.Circle; 
    11298 
    113         foreach (var tileSet in level.Tilesets) 
     99                var angle = Angle.FromDegrees(-obj.Rotation); 
     100                var topLeft = new Vector(game.Level.Left + obj.X, game.Level.Top - obj.Y); 
     101                var len = Math.Sqrt(Math.Pow(obj.Width * 0.5, 2) + Math.Pow(obj.Height * 0.5, 2)); 
     102                var positionFix = Vector.FromLengthAndAngle(len, angle + Angle.FromRadians(-Math.Atan2(obj.Height, obj.Width))); 
     103                positionFix += new Vector(0.0, obj.Height); 
     104                method(topLeft + positionFix, obj.Width, obj.Height, angle, shape, obj.Type, obj.Properties); 
     105            } 
     106        } 
     107 
     108        private void LoadTileImages() 
    114109        { 
    115             var tilesetImage = Game.LoadImage(Path.GetFileNameWithoutExtension(tileSet.Image.Source)); 
    116             int tilesW = tileSet.Image.Width.Value / tileSet.TileWidth; 
    117             int tilesH = tileSet.Image.Height.Value / tileSet.TileHeight; 
    118             for (int y = 0; y < tilesH; y++) 
     110            int tileCount = level.Tilesets.Sum(t => (t.Image.Width.Value / t.TileWidth) * (t.Image.Height.Value / t.TileHeight)); 
     111            tileImages = new Image[tileCount]; 
     112 
     113            foreach (var tileSet in level.Tilesets) 
    119114            { 
    120                 for (int x = 0; x < tilesW; x++) 
     115                var tilesetImage = Game.LoadImage(Path.GetFileNameWithoutExtension(tileSet.Image.Source)); 
     116                int tilesW = tileSet.Image.Width.Value / tileSet.TileWidth; 
     117                int tilesH = tileSet.Image.Height.Value / tileSet.TileHeight; 
     118                for (int y = 0; y < tilesH; y++) 
    121119                { 
    122                     int index = tileSet.FirstGid + (y * tilesW + x) - 1; // Tiled uses one-based indexing for tiles. 
    123                     tileImages[index] = tilesetImage.Area(x * tileSet.TileWidth, y * tileSet.TileHeight, (x + 1) * tileSet.TileWidth, 
    124                         (y + 1) * tileSet.TileHeight); 
     120                    for (int x = 0; x < tilesW; x++) 
     121                    { 
     122                        int index = tileSet.FirstGid + (y * tilesW + x) - 1; // Tiled uses one-based indexing for tiles. 
     123                        tileImages[index] = tilesetImage.Area(x * tileSet.TileWidth, y * tileSet.TileHeight, (x + 1) * tileSet.TileWidth, 
     124                            (y + 1) * tileSet.TileHeight); 
     125                    } 
    125126                } 
    126127            } 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/TimerAddons.cs

    r7807 r7826  
    88{ 
    99    public static class TimerAddons 
    10 { 
    11     public static void Until(Func<bool> predicate, Action action, double tickInterval = 0.1, Action onEnd = null) 
    1210    { 
    13         Timer timer = new Timer(); 
    14         timer.Interval = tickInterval; 
    15         timer.Timeout += delegate 
     11        public static void Until(Func<bool> predicate, Action action, double tickInterval = 0.1, Action onEnd = null) 
    1612        { 
    17             if (predicate()) 
     13            var timer = new Timer { Interval = tickInterval }; 
     14            timer.Timeout += delegate 
    1815            { 
    19                 timer.Stop(); 
    20                 //Wut? this actually exists now in C#.. looks ugly as hell but is shorther than: 
    21                 //if(onEnd != null) onEnd(); 
    22                 if (onEnd != null) 
    23                     onEnd.Invoke(); 
    24             } 
    25             else 
    26             { 
    27                 action(); 
    28                 //or action.Invoke(); 
    29             } 
    30         }; 
    31         timer.Start(); 
    32  
     16                if (predicate()) 
     17                { 
     18                    timer.Stop(); 
     19                    //Wut? this actually exists now in C#.. looks ugly as hell but is shorther than: 
     20                    //if(onEnd != null) onEnd(); 
     21                    onEnd?.Invoke(); 
     22                } 
     23                else 
     24                { 
     25                    action(); //or action.Invoke(); 
     26                } 
     27            }; 
     28            timer.Start(); 
     29        } 
    3330    } 
    3431} 
    35 } 
  • 2016/27/ohjaajat/VenienteFragore/VenienteFragore/VenienteFragore/VenienteFragore.cs

    r7825 r7826  
    77using Jypeli.Widgets; 
    88using System.Linq; 
    9 using SimplePhysics; 
    109 
    1110namespace VenienteFragore 
    1211{ 
    13     public class VenienteFragore : SimplePhysics.Game 
     12    public partial class VenienteFragore : SimplePhysics.Game 
    1413    { 
    1514        private delegate void ObjectMethod(Vector position, double width, double height, Dictionary<string, string> properties); 
    1615        private Dictionary<string, ObjectMethod> objectMethods; 
    1716 
    18         private Image dripImage = LoadImage("drip"); 
     17        private readonly Image dripImage = LoadImage("drip"); 
    1918 
    2019        private List<Player> advenae; 
     
    2322        private Vector cameraTarget; 
    2423 
    25         SimplePhysics.Object borderleft; 
    26         SimplePhysics.Object borderright; 
     24        private SimplePhysics.Object borderleft; 
     25        private SimplePhysics.Object borderright; 
    2726 
    2827        public VenienteFragore() : base(tileSize: 50) 
     
    3635            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    3736        } 
    38  
    39  
    4037 
    4138        private void StartLevel(string lvlName) 
     
    5956            Gravity = new Vector(0, -800); 
    6057 
    61             //Camera.ZoomToLevel(); 
    62  
    6358            Level.Background.CreateGradient(Color.Beige, Color.OrangeRed); 
    6459 
     
    6661        } 
    6762 
    68         void CameraInitialization() 
     63        private void CameraInitialization() 
    6964        { 
    7065            Camera.StayInLevel = true; 
     
    8479        } 
    8580 
    86         void UpdateCameraTarget(Timer checkit) 
     81        private void UpdateCameraTarget(Timer checkit) 
    8782        { 
    8883            List<Player> activePlayers = advenae.FindAll(o => o.IsVisible == true); 
     
    119114            base.Update(time); 
    120115        } 
    121  
    122         private void CreateObject(Vector position, double width, double height, Angle angle, Shape shape, string name, Dictionary<string, string> properties) 
    123         { 
    124             if (objectMethods.ContainsKey(name)) 
    125                 objectMethods[name](position, width, height, properties); 
    126             else 
    127                 throw new Exception("Unknown object type: " + name); 
    128         } 
    129  
    130         void TestBall(Vector position, double width, double height, Dictionary<string, string> properties) 
    131         { 
    132             var testObject = new InteractableObject(TileSize * 0.99, TileSize * 0.99); 
    133             testObject.Position = position; 
    134             testObject.Color = Color.DarkGreen; 
    135             testObject.Shape = Shape.Circle; 
    136             testObject.RestitutionX = 0.5; 
    137             testObject.RestitutionY = 0.5; 
    138             testObject.CollisionIgnoreGroup = 1; 
    139             testObject.OnInteractedWith += Pickup; 
    140             Add(testObject); 
    141         } 
    142  
    143         void CreateGoomba(Vector position, double width, double height, Dictionary<string, string> properties) 
    144         { 
    145             var goomba = new GoombaEnemy(TileSize * 0.99, TileSize * 0.99); 
    146             goomba.Position = position; 
    147             goomba.Color = Color.Pink; 
    148             goomba.Tag = "goomba"; 
    149             goomba.Speed = 50; 
    150             goomba.FallOffPlatforms = true; 
    151             Add(goomba); 
    152  
    153             goomba.AddCollisionHandler("player", (a, player) => 
    154             { 
    155                 if (player.Bottom >= goomba.Top) 
    156                 { 
    157                     goomba.Destroy(); 
    158                     player.Velocity = new Vector(player.Velocity.X, 400); 
    159                 } 
    160                 else 
    161                 { 
    162                     player.Destroy(); 
    163                 } 
    164             }); 
    165         } 
    166  
    167         void CreatePlayer(Vector position, double width, double height, Dictionary<string, string> properties) 
    168         { 
    169             CreatePlayer1(position, width, height); 
    170             var p = CreatePlayer2(position, width, height); 
    171             p.Destroy(); 
    172             SetGeneralKeys(); 
    173         } 
    174  
    175         Player CreatePlayer1(Vector position, double width, double height) 
    176         { 
    177             if (advenae.Count > 0 && !advenae[0].IsVisible) { advenae[0].Reappear(); return advenae[0]; }; 
    178  
    179             Player advenA = MakePlayer(position, width, height, 1, new List<Key> { Key.Up, Key.Down, Key.Left, Key.Right, Key.Enter }); 
    180             advenA.Color = Color.HotPink; 
    181             advenae.Add(advenA); 
    182             return advenA; 
    183         } 
    184  
    185  
    186         Player CreatePlayer2(Vector position, double width, double height) 
    187         { 
    188             if (advenae.Count > 1 && !advenae[1].IsVisible) { advenae[1].Reappear(); return advenae[1]; }; 
    189  
    190             Player advenA = MakePlayer(position, width, height, 2, new List<Key> { Key.W, Key.S, Key.A, Key.D, Key.E }); 
    191             advenA.Color = Color.Harlequin; 
    192             advenae.Add(advenA); 
    193             return advenA; 
    194         } 
    195  
    196         void CreateWaterDrip(Vector position, double width, double height, Dictionary<string, string> properties) 
    197         { 
    198             // Luo ajastetusti vesipisaroita. 
    199             var dripTimer = new Timer { Interval = RandomGen.NextDouble(1.0, 4.0) }; 
    200             dripTimer.Timeout += () => 
    201             { 
    202                 Add(new SimplePhysics.Object(10, 10) 
    203                 { 
    204                     Position = position, 
    205                     Image = dripImage, 
    206                     LifetimeLeft = TimeSpan.FromSeconds(5), 
    207                     IgnoresCollisionResponse = true 
    208                 }, -1); 
    209             }; 
    210             dripTimer.Start(); 
    211         } 
    212  
     116         
    213117        private void SetMovementKeys(Player adven, List<Key> keys) 
    214118        { 
     
    220124            Keyboard.Listen(keys[4], ButtonState.Pressed, Interact, null, adven); 
    221125            // Keyboard.Listen(keys[4], ButtonState.Pressed, SplitOrMorph, "Splits or morphs the player back to 1 player", adven); 
    222  
    223126        } 
    224127 
     
    226129        { 
    227130            //Jos kannetaan jotain, viskataan se 
    228             SimplePhysics.Object carryed = adven.Carrying; 
    229             if (carryed != null) //Throw 
     131            var carrying = adven.Carrying; 
     132            if (carrying != null) //Throw 
    230133            { 
    231134                adven.Carrying = null; 
    232135                double dir = adven.FacingDirection == Direction.Left ? -1 : 1; 
    233                 carryed.Velocity = new Vector(dir * 350, 350); 
    234                 carryed.Position = carryed.Position + new Vector(dir * 10, 30); 
     136                carrying.Velocity = new Vector(dir * 350, 350); 
     137                carrying.Position = carrying.Position + new Vector(dir * 10, 30); 
    235138                //Pitäisiköhän oma aliohjelma tehdä 
    236                 carryed.IgnoresGravity = false; 
    237                 carryed.IgnoresCollisionResponse = false; 
     139                carrying.IgnoresGravity = false; 
     140                carrying.IgnoresCollisionResponse = false; 
    238141            } 
    239142 
     
    251154            foreach (GameObject item in interactedObjects) 
    252155            { 
    253                 InteractableObject obj = item as InteractableObject; 
    254                 if (obj == null) 
    255                     continue; 
    256                 obj.InteractWith(adven); 
    257             } 
    258         } 
    259  
    260  
    261         void Pickup(SimplePhysics.Object player, InteractableObject target) 
    262         { 
    263             Player adven = player as Player; 
    264             if (adven.Carrying == null) 
     156                var obj = item as InteractableObject; 
     157                obj?.InteractWith(adven); 
     158            } 
     159        } 
     160 
     161        private void Pickup(SimplePhysics.Object player, InteractableObject target) 
     162        { 
     163            var adven = player as Player; 
     164            if (adven != null && adven.Carrying == null) 
    265165            { 
    266166                adven.Carrying = target; 
     
    269169                //Lentävän palikan nostaminen  
    270170            } 
    271  
    272171        } 
    273172 
     
    277176            Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 
    278177 
    279             //Keyboard.Listen(keys[4], ButtonState.Pressed, SplitOrMorph, "Splits or morphs the player back to 1 player", adven); 
    280178            Keyboard.Listen(Key.X, ButtonState.Pressed, SplitOrMorph, "Splits or morphs the player", 2); 
    281179            Keyboard.Listen(Key.RightShift, ButtonState.Pressed, SplitOrMorph, "Splits or morphs the player", 1); 
    282180        } 
    283  
    284  
    285         private Player MakePlayer(Vector position, double width, double height, int playerNum, List<Key> keys) 
    286         { 
    287             Player adven = new Player(TileSize * 0.99, TileSize * 1.98); 
    288             adven.Position = position; 
    289             adven.Friction = 0.2; 
    290             adven.Tag = "player"; 
    291             adven.Crushed += adven.Destroy; 
    292             adven.CollisionIgnoreGroup = playerNum; 
    293             adven.PlayerNumber = playerNum; 
    294             adven.ControlKeys = keys; 
    295             adven.OnInteractedWith += Pickup; 
    296             Add(adven); 
    297  
    298             adven.AddCollisionHandler("death", (a, b) => adven.Destroy()); 
    299  
    300             SetMovementKeys(adven, keys); 
    301  
    302             return adven; 
    303         } 
    304  
     181         
    305182        /// <summary> 
    306183        /// Sotku 
     
    352229        } 
    353230 
    354         void Split(Player adven) 
     231        private void Split(Player adven) 
    355232        { 
    356233            if (advenae.FindAll(o => o.IsVisible == true).Count == 2) return; 
     
    365242                    advenNew = CreatePlayer1(adven.Position + new Vector(adven.Width, 0), adven.Width, adven.Height); 
    366243                    break; 
    367                 default: 
    368                     break; 
    369244            } 
    370245 
     
    383258        } 
    384259 
    385         void Walk(Player pelaaja, double nopeus) 
     260        private void Walk(Player pelaaja, double nopeus) 
    386261        { 
    387262            pelaaja.Walk(nopeus); 
     
    398273            player.Crouch = crouch; 
    399274        } 
    400  
    401         private void CreateMovingPlatform(Vector position, double width, double height, Dictionary<string, string> properties) 
    402         { 
    403             var dirX = double.Parse(properties["directionx"]); 
    404             var dirY = double.Parse(properties["directiony"]); 
    405             var distance = double.Parse(properties["distance"]); 
    406             var platform = new MovingPlatform(position, new Vector(dirX, dirY), distance, width, height); 
    407             Add(platform); 
    408         } 
    409  
    410  
    411         private void CreateDoor(Vector position, double width, double height, Dictionary<string, string> properties) 
    412         { 
    413             string lvlName = properties["levelName"]; 
    414             InteractableObject door = new InteractableObject(width, height); 
    415             door.Position = position; 
    416             door.Color = Color.Purple; 
    417             door.OnInteractedWith += delegate (SimplePhysics.Object actor, InteractableObject actedDoor) 
    418             { 
    419                 EnterDoor(actor, actedDoor, lvlName); 
    420             }; 
    421             Add(door); 
    422         } 
    423  
    424         private void EnterDoor(SimplePhysics.Object actor, InteractableObject actedDoor, string lvlName) 
    425         { 
    426             //Tämä tänne, jotta anim. tai jotain jos joskus halutaan, muuten suoraan voi vaihtaa kenttää delegattissa 
    427             StartLevel(lvlName); 
    428         } 
    429  
    430         private void Foreground(int x, int y, Image image, string layerName, Dictionary<string, string> properties) 
    431         { 
    432             var tile = new SimplePhysics.Object(TileSize, TileSize) { IsStatic = true }; 
    433             tile.Image = image; 
    434             tile.IgnoresCollisionResponse = true; 
    435             Add(tile, 3); 
    436             SetTile(x, y, tile); 
    437         } 
    438  
    439         private void TileMethod(int x, int y, Image image, string layerName, Dictionary<string, string> properties) 
    440         { 
    441             var tile = new SimplePhysics.Object(TileSize, TileSize) { IsStatic = true }; 
    442             tile.Image = image; 
    443             Add(tile); 
    444             SetTile(x, y, tile); 
    445  
    446             if (properties.ContainsKey("type")) 
    447             { 
    448                 var features = properties["type"].Split(','); 
    449                 foreach (var feature in features) 
    450                 { 
    451                     ApplyFeature(tile, feature); 
    452                 } 
    453             } 
    454         } 
    455  
    456         private void ApplyFeature(SimplePhysics.Object tile, string feature) 
    457         { 
    458             switch (feature) 
    459             { 
    460                 case "ice": 
    461                     tile.Friction = 0.0; 
    462                     break; 
    463  
    464                 case "death": 
    465                     tile.Tag = "death"; 
    466                     break; 
    467  
    468                 case "oneway": 
    469                     tile.OneWayPlatform = true; 
    470                     break; 
    471  
    472                 case "break": 
    473                     tile.AddCollisionHandler("player", (t, player) => 
    474                     { 
    475                         if (player.Top <= tile.Bottom) 
    476                         { 
    477                             tile.Destroy(); 
    478                         } 
    479                     }); 
    480                     break; 
    481                 default: 
    482                     throw new Exception("Unknown tile feature: " + feature); 
    483             } 
    484         } 
    485275    } 
    486276} 
Note: See TracChangeset for help on using the changeset viewer.