Пример #1
0
 /// <summary>
 /// Slouzi pro deserializaci(nacteni)
 /// </summary>
 /// <param name="hero"></param>
 /// <param name="animatedSprite"></param>
 public Hero(Hero hero, AnimatedSprite animatedSprite)
 {
     keys = new List<int>();
     units = new List<Unit>();
     Gender = hero.Gender;
     Cell.X = hero.Cell.X;
     Cell.Y = hero.Cell.Y;
     Position = hero.Position;
     Direction = hero.Direction;
     Sprite = animatedSprite;
     Sprite.Position = Position;
     keys = hero.keys;
 }
 /// <summary>
 /// Jadro simulace boje dvou stran
 /// </summary>
 public static void SimulateTheFight(Hero left, Unit right, out bool whowon, out string LOG)
 {
     LOG = "";
     Random x = new Random();
     int WhoStarts = x.Next(0,2);
     while (!right.isDead && left.units.Count != 0)
     {
         int index = x.Next(0, left.units.Count);
         if (WhoStarts == 0)
         {
             ushort dmg = (left.units[index].Attack - right.Defense > 0) ? (ushort)(left.units[index].Attack - right.Defense) : (ushort)1;
             right.HitPoints.Damage(dmg);
             LOG += "Ubral jste nepriteli " + dmg + " zivotu\n";
             WhoStarts = 1;
         }
         else
         {
             ushort dmg = (right.Attack - left.units[index].Defense > 0) ? (ushort)(right.Attack - left.units[index].Defense) : (ushort)1;
             left.units[index].HitPoints.Damage(dmg);
             LOG += "Nepritel ubral " + left.units[index].Name + " " + dmg + " zivotu\n";
             WhoStarts = 0;
         }
         left.CheckUnits();
     }
     if (right.isDead)
         whowon = false;
     else
         whowon = true;
 }
        /// <summary>
        /// Metoda slouzici pro nahrani hry
        /// </summary>
        /// <param name="gamename"></param>
        public static void LoadGame(string gamename)
        {
            GameSerialize ob = new GameSerialize();
            try
            {
                Serializer ser = new Serializer();
                ob = ser.DeSerializeGame(gamename);
                LoadMapAndTextures(ob.mapName);
                LoadHeroSprite(ob.hero.Gender);

                //Overrides Units loaded from MapSerialize
                Units = new List<Unit>();
                foreach (Unit item in ob.units)
                {
                    Unit klon = baseUnits[item.Name].Clone(item.Notoriety, item.Cell.X, item.Cell.Y);
                    Session.FrontMap.GetTile(item.Cell).obj = klon;
                    Units.Add(klon);
                }

                //Overrides Keys loaded from MapSerialize
                Keys = new List<GameKey>();
                foreach (GameKey item in ob.keys)
                {
                    GameKey klon = baseKeys[item.index].Clone(item.Cell.X, item.Cell.Y);
                    Session.FrontMap.GetTile(item.Cell).obj = klon;
                    Keys.Add(klon);
                }

                MapLayer frontPath = new MapLayer(Session.MapProps.FrontSizeX, Session.MapProps.FrontSizeY);
                for (int y = 0; y < frontPath.Height; y++)
                {
                    for (int x = 0; x < frontPath.Width; x++)
                    {
                        Tile tile = new Tile(-1, -1, y, x);
                        frontPath.SetTile(x, y, tile);
                    }
                }
                Session.FrontMap.mapLayers.Add(frontPath);

                Session.CurrentHero = new Hero(ob.hero, playerSpriteHero);
                Session.CurrentHero.units = new List<Unit>();
                foreach (Unit item in ob.hero.units)
                {
                    Session.CurrentHero.units.Add(baseUnits[item.Name].Clone(item.Notoriety, item.Cell.X, item.Cell.Y, item.Attack, item.Defense, item.HitPoints, item.isInHero));
                }
                Session.Camera = ob.cam;
                Session.FrontMap.mapLayers[1] = ob.frontSplatter;
            }
            catch (Exception ex)
            {
                string message = ex.Message;

            }
        }
Пример #4
0
 /// <summary>
 /// Uzamkne kameru na hrdinu 
 /// </summary>
 /// <param name="sprite"></param>
 public void LockToSprite(Hero sprite)
 {
     Position.X = sprite.Position.X + sprite.Sprite.Width / 2 - (Session.ViewportRect.Width / 2);
     Position.Y = sprite.Position.Y + sprite.Sprite.Height / 2 - (Session.ViewportRect.Height / 2);
 }