예제 #1
0
        public GameSetupSvc(AppConfigMgnr conf)
        {
            int id = -1;
            FileHelper fReader = new FileHelper();
            var persistentLevels = fReader.ReadFromXml<Level>(conf.GetSetting<string>("LevelFile"));
            AllLevels = new List<NonPersistentLevel>();
            int k = 0;

            foreach (Level level in persistentLevels)
            {
                NonPersistentLevel npl = new NonPersistentLevel();
                npl.Lvl = level;
                npl.Coins = new List<Coin>();

                int rasterHalb = level.Raster / 2;
                for (int i = 0; i < level.Height / level.Raster; i++) // vertical
                {
                    for (int j = 0; j < level.Width / level.Raster; j++) // horizontal
                    {
                        Coin c = new Coin();
                        c.Pos = new Point() { X = j * level.Raster + rasterHalb, Y = i * level.Raster + rasterHalb };
                        c.Id = ++id;

                        npl.Coins.Add(c);
                    }
                }

                AllLevels.Add(npl);
                ++k;
            }
        }
예제 #2
0
 private void DrawCoins(NonPersistentLevel level)
 {
     foreach (Coin c in level.Coins)
     {
         Ellipse e = DrawEllipse(Scale(c.Pos.X), Scale(c.Pos.Y), Scale(Const.COIN_RADIUS), Color.FromRgb(0, 255, 0));
         coins.Add(c.Pos, e);
     }
 }
예제 #3
0
        private void initLevel(NonPersistentLevel l)
        {
            Point size = new Point(l.Lvl.Width, l.Lvl.Height);
            IMap2d map = new Map2d(size);
            Model.Map = map;

            map.InsertWalls(l.Lvl.Walls);
            //add coins
            int coinSize = 1;
            for (int i = 0; i < l.Coins.Count; i++)
            {
                ModelCoin mc = new ModelCoin(Model, l.Coins[i].Id, coinSize);
                Model.AddModelObject(mc, l.Coins[i].Pos);
            }
        }
예제 #4
0
 private void OnReset()
 {
     lvl = GameClient.Get();
     TotalCounter = lvl.Lvl.Walls.Count;
     CurrentCounter = lvl.Lvl.Walls.Count;
     LevelName = lvl.Lvl.Name;
 }
예제 #5
0
        public void Save(NonPersistentLevel level)
        {
            try
            {
                int idx = AllLevels.FindIndex(x => x.Lvl.Name.Equals(level.Lvl.Name));
                if (idx >= 0) AllLevels[idx] = level;

                FileHelper fWriter = new FileHelper();
                fWriter.WriteAsXml<Level>(AllLevels.Select(x => x.Lvl).ToList(), Conf.GetSetting<string>("LevelFile"));
            }
            catch (Exception e)
            {
                throw ThrowWCFException(e, 500);
            }
        }
예제 #6
0
 public void Save(NonPersistentLevel currentLevel)
 {
     IGameSetup4ClientSvc svc = Svc;
     svc.Save(currentLevel);
     EpMgnr.CloseWcfChannel(svc);
 }