Ejemplo n.º 1
0
        public SolidBlock BuildSolidBlock(string name, Locator loc, Vector size, CollisionShape shape, Viewer viewer)
        {
            SolidBlock obj = new SolidBlock(name);

            obj.Viewer = viewer;

            obj.LocalCenter = loc.Center;
            obj.LocalAngle = loc.Angle;
            obj.LocalZIndex = loc.ZIndex;

            obj.CollisionShape = shape;
            obj.Size = size;

            map.AddObject(obj);

            obj.LocationChanged += map.UpdateObject;
            obj.LocationChanged += GameProcess.Current_Game.Manager.RegisterObject;

            obj.Crashed += map.RemoveObject;
            obj.Crashed += GameProcess.Current_Game.Camera.TryRemoveIndicator;
            obj.Crashed += GameProcess.Current_Game.Manager.UnRegisterObject;

            obj.LifeChanged += GameProcess.Current_Game.Camera.IndicateLifeChange;

            return obj;
        }
Ejemplo n.º 2
0
         /// <summary>
        /// Leaf object constructor
        /// </summary>
        /// <param name="name"></param>
        public PrimitiveObject(string name, Locator locator, Engine engine) : base(name, locator, engine)
        {
            Size = new Vector(_initialObjSize, _initialObjSize);

            Viewer = null;

            CollisionShape = CollisionShape.None;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Transparent object is an object without collision shape.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="loc"></param>
        /// <param name="viewer"></param>
        public virtual PrimitiveObject BuildLandscapeTile(Locator loc, Viewer viewer)
        {
            PrimitiveObject obj = new PrimitiveObject();

            obj.LocalCenter = loc.Center;
            obj.LocalAngle  = loc.Angle;
            obj.LocalZIndex = loc.ZIndex;

            obj.Viewer = viewer;
            obj.CollisionShape = CollisionShape.None;

            obj.Size = new Vector(map.TileSize / 2, map.TileSize / 2);

            this.map.AddObject(obj);

            return obj;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// 
        /// </summary>
        public void Fire()
        {
            if (ChargedTime < RechargeTime) return;

            int bulletVelocity = 50;

            SoundManager.PlayBoomSound();

            double angle_rad = Math.PI * AbsoluteAngle / 180.0;
      
            Vector tower_end = new Vector(Math.Cos(angle_rad), Math.Sin(angle_rad)) * Size.X + AbsoluteCenter;
   
            Locator loc = new Locator(tower_end, AbsoluteAngle + 45, 5);

            Engine engine = new Engine(new Vector(bulletVelocity * Math.Cos(angle_rad), bulletVelocity * Math.Sin(angle_rad)), new Vector(0, 0), 0, 0);

            GameProcess.Current_Game.Builder.BuildBullet("bullet", loc, engine);

            ChargedTime = 0;                   
        }   
Ejemplo n.º 5
0
 public override void BuildSpecialObject(string name, String type, Locator loc, Vector size, CollisionShape shape, Viewer viewer)
 {
     switch (type.ToLower())
     {             
         case "solidblock":
             {
                 BuildSolidBlock(name, loc, size, shape, viewer);
             }
             break;
         case "woodbox":
             {
                 BuildWoodBox(name, loc, size, shape, viewer);
             }
             break;
         case "steelblock":
             {
                 BuildSteelBlock(name, loc, size, shape, viewer);
             }
             break;
         case "brickblock":
             {
                 BuildBrickBlock(name, loc, size, shape, viewer);                     
             }
             break;
         case "barrel":
             {
                 BuildBarrel(name, loc, size, shape, viewer);
             }
             break;
         case "respaun":
             {
                 BuildRespaun(name, loc, size, shape, viewer);
             }
             break;
         default:
             {
                 BuildStandartObject(name, loc, size, shape, viewer);
             }
             break;
     }
 }
Ejemplo n.º 6
0
        /// <summary>
        /// Game process class constructor
        /// </summary>
        /// <param name="input_controller"></param>
        /// <param name="map"></param>
        /// <param name="obj"></param>
        public GameProcess(FrameworkElement gField, String mapName)
        {
            Current_Game = this;

            Camera = new Camera(new Vector(500, 500), new Vector(gField.ActualWidth, gField.ActualHeight), new Vector(200, 100));

            updateInterval = 1000 / FPS;

            Builder = new TanksMapBuilder();

            TmxBuildDirrector director = new TmxBuildDirrector(mapName, Builder);

            director.CreateMap();

            gameMap = Builder.GetMap();

            Manager = new CollisionManager(gameMap);

            director.CreateLandscape();

            director.CreateObjects();

            frameImages = TmxBuildDirrector.GetImagesFromCropedImage("Maps/Textures/explosion.png", 128, 128, 512, 512);

            Controllers = new List<Controller>();


         
            Locator loc = new Locator(new Vector(310, 310), 0, 2);       

            Engine  engine = new Engine(new Vector(0, 0), new Vector(0, 0), 0, 0);
                                                                              

            Player = Builder.BuildTank("Player", loc, engine);
            //Player.Body.Viewer = Boom;
     

            HITankController controller = new HITankController(gField, Player);

            Controllers.Add(controller);

            Enemies = new List<Tank>();

            List<GameObject> Objects = gameMap.GetObjects();

            for(int i = 0; i < Objects.Count; i++)
            {
                if(Objects[i].GetType().Name.ToLower() == "respaun")
                {
                    Engine eng = new Engine(new Vector(0, 0), new Vector(0, 0), 0, 0);

                    Tank enemy = Builder.BuildTank("Enemy_" + i.ToString(), new Locator(Objects[i].AbsoluteCenter, 0, 2), eng);

                    AITankController AIController = new AITankController(enemy);

                    Controllers.Add(AIController);
                }
            }

            Player.LocationChanged += GameProcess.Current_Game.Camera.UpdateFocus; 
        }
Ejemplo n.º 7
0
        /// <summary>
        /// This method create one specific object
        /// </summary>
        /// <param name="obj"></param>
        /// <param name="zIndex"></param>
        private void CreateOneObject(TiledSharp.TmxObjectGroup.TmxObject obj, Int32 zIndex, Boolean isLayerVisible)
        {
            String name = obj.Name;

            String type = obj.Type == null ? String.Empty : obj.Type;

            Vector size = GetObjectSize(obj);

            Double rotation = GetObjectRotation(obj);

            Vector center = new Vector(obj.X + size.X, obj.Y - size.Y);

            Locator loc = new Locator(center, rotation, tmxMap.Layers.Count + zIndex);

            Viewer viewer = GetObjectView(obj.Tile, isLayerVisible && obj.Visible);

            CollisionShape shape = GetObjectShape(obj);

            builder.BuildSpecialObject(name, type, loc, size, shape, viewer);          
        }
Ejemplo n.º 8
0
        /// <summary>
        /// This method create landscape - map from tiles, that has view, but hasn't collider.
        /// </summary>
        public void CreateLandscape()
        {
            for (int i = 0; i < tmxMap.Layers.Count; i++)
            {
                TmxLayer layer = tmxMap.Layers[i];

                for (int j = 0; j < layer.Tiles.Count; j++)
                {
                    if (layer.Tiles[j].Gid == 0) continue;

                    Viewer viewer = GetObjectView(layer.Tiles[j], layer.Visible);

                    int row = j / tmxMap.Height;
                    int col = j % tmxMap.Width;

                    Vector center = new Vector((col + 0.5) * tmxMap.TileWidth, (row + 0.5) * tmxMap.TileWidth);

                    Locator loc = new Locator(center, 0, i);

                    builder.BuildLandscapeTile(loc, viewer);
                }
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="name"></param>
        /// <param name="locator"></param>
        public GameObject(string name, Locator locator, Engine engine)
        {
            this.Name = name;

            this.Parent = null;

            this.locator = locator;

            this.Engine = engine;

            this.life = 100;
        }
Ejemplo n.º 10
0
        /// <summary>
        /// Конструктор, принимает имя обьекта
        /// </summary>
        /// <param name="name"></param>
        public GameObject(string name)
        {
            this.Name = name;

            this.Parent = null;

            this.locator = new Locator();

            this.Engine = null;

            this.life = 100;
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 
        /// </summary>
        public GameObject()
        {
            this.Name = string.Empty;

            this.Parent = null;

            this.locator = new Locator();

            this.Engine = null;

            this.life = 100;
        }
Ejemplo n.º 12
0
        public void BuildBoom(Locator locator, Vector size, List<BitmapImage> frames)
        {
            Action action = () =>
            {
                Animation Boom = new Animation();

                foreach (BitmapImage image in frames)
                {
                    Frame frame = new Frame(new Sprite(image), 10);
                    Boom.AddFrame(frame);
                }

                Explosion explosion = new Explosion("boom");

                explosion.LocalCenter = locator.Center;
                explosion.LocalAngle =  locator.Angle;
                explosion.LocalZIndex = locator.ZIndex;

                explosion.Viewer = Boom;

                explosion.Size = size;

                explosion.CollisionShape = CollisionShape.None;

                explosion.LocationChanged += map.UpdateObject;
                explosion.Crashed += map.RemoveObject;
            
                map.AddObject(explosion);      
            };


            if (!Application.Current.Dispatcher.CheckAccess())
            {
                 Application.Current.Dispatcher.Invoke(action);
            }
            else
            {
                 action();
            }

        } 
Ejemplo n.º 13
0
        public Bullet BuildBullet(string name, Locator locator, Engine engine)
        {
            Func<Bullet> action = () =>
                {
                    Bullet bl = new Bullet(name);

                    bl.LocalCenter = locator.Center;
                    bl.LocalAngle = locator.Angle;
                    bl.LocalZIndex = locator.ZIndex;

                    bl.Engine = engine;

                    bl.Viewer = new Viewer(new Sprite("Maps/Textures/rocket.png", 30, 30));

                    bl.Size = new Vector(15, 15);

                    bl.CollisionShape = CollisionShape.Rectangle;

                    bl.LocationChanged += map.UpdateObject;
                    bl.LocationChanged += GameProcess.Current_Game.Manager.RegisterObject;
                  
                    bl.Crashed += map.RemoveObject;
                    bl.Crashed += GameProcess.Current_Game.Manager.UnRegisterObject;

                    map.AddObject(bl);

                    return bl;
                };


            if (!Application.Current.Dispatcher.CheckAccess())
            {
                return Application.Current.Dispatcher.Invoke(action);
            }
            else
            {
                return action();
            }        
        }
Ejemplo n.º 14
0
        public Tank BuildTank(string name, Locator locator, Engine engine)
        {
            Tank tank = new Tank(name);

            tank.LocalCenter = locator.Center;
            tank.LocalAngle = locator.Angle;
            tank.LocalZIndex = locator.ZIndex;

            tank.Engine = engine;
            tank.Engine.Enabled = true;

            if(tank.Name.ToLower() =="player")
                tank.Body =  BuildMachineBody("Body", @"Maps/Textures/dbody128.png");
            else
                tank.Body = BuildMachineBody("Body", @"Maps/Textures/dbodyred128.png");

            tank.Gun = BuildMachineTower("Gun", @"Maps/Textures/dtower128.png");
         
            tank.LocationChanged += map.UpdateObject;
            tank.LocationChanged += GameProcess.Current_Game.Manager.RegisterObject;
 

            tank.Crashed += map.RemoveObject;
            tank.Crashed += GameProcess.Current_Game.Camera.TryRemoveIndicator;
            tank.Crashed += GameProcess.Current_Game.Manager.UnRegisterObject;

            tank.LifeChanged += GameProcess.Current_Game.Camera.IndicateLifeChange;

            map.AddObject(tank);

            return tank;
        }
Ejemplo n.º 15
0
 public virtual void BuildSpecialObject(string name, String type, Locator loc, Vector size, CollisionShape shape, Viewer viewer)
 {
     BuildStandartObject(name, loc, size, shape, viewer);
 }
Ejemplo n.º 16
0
 /// <summary>
 /// Composite object constructor
 /// </summary>
 /// <param name="name"></param>
 public CompositeObject(string name, Locator locator, Engine engine) : base(name, locator, engine)
 {
     components = new List<GameObject>();
 }