コード例 #1
0
ファイル: LevelContent.cs プロジェクト: Elof3/Treefrog
        public LevelContent(Level level)
        {
            Level = level;
            UidMap = new Dictionary<Guid, int>();
            AssetMap = new Dictionary<Guid, string>();

            PopulateUidMap();
        }
コード例 #2
0
ファイル: ObjectLayerForm.cs プロジェクト: Elof3/Treefrog
        public ObjectLayerForm(Level level, string name)
        {
            InitializeForm();

            Text = "New Object Layer";

            _level = level;
            _nameField.Text = name;

            _validateController.Validate();
        }
コード例 #3
0
ファイル: NewLevel.cs プロジェクト: Elof3/Treefrog
        private void ApplyNew()
        {
            int originX = (int)_originXField.Value;
            int originY = (int)_originYField.Value;
            int levelWidth = (int)_levelWidth.Value;
            int levelHeight = (int)_levelHeight.Value;

            _level = new Level(_name.Text.Trim(), originX, originY, levelWidth, levelHeight);
            _level.Project = _project;
            //_level.Layers.Add(new MultiTileGridLayer("Tile Layer 1", originX, originY, levelWidth, levelHeight));
            _project.Levels.Add(_level);
        }
コード例 #4
0
ファイル: LevelCommandActions.cs プロジェクト: Elof3/Treefrog
        public void CommandClone(object param)
        {
            if (!LevelExists(param))
                return;

            Level level = Editor.Project.Levels[(Guid)param];

            Level clone = new Level(level, Editor.Project);
            clone.TrySetName(Editor.Project.Levels.CompatibleName(level.Name));

            Editor.Project.Levels.Add(clone);
        }
コード例 #5
0
ファイル: TileGridLayer.cs プロジェクト: JuliaABurch/Treefrog
        protected TileGridLayer(string name, int tileWidth, int tileHeight, Level level)
            : base(name, tileWidth, tileHeight)
        {
            Level = level;

            _tileOriginX = (int)Math.Floor(level.OriginX * 1.0 / tileWidth);
            _tileOriginY = (int)Math.Floor(level.OriginY * 1.0 / tileHeight);

            int diffOriginX = level.OriginX - (_tileOriginX * tileWidth);
            int diffOriginY = level.OriginY - (_tileOriginY * tileHeight);

            _tilesWide = (int)Math.Ceiling((level.OriginX + level.Width + diffOriginX) * 1.0 / tileWidth) - _tileOriginX;
            _tilesHigh = (int)Math.Ceiling((level.OriginY + level.Height + diffOriginY) * 1.0 / tileHeight) - _tileOriginY;
        }
コード例 #6
0
        public MultiTileGridLayer(LevelX.MultiTileGridLayerX proxy, Level level, Dictionary<int, Guid> tileIndex)
            : base(proxy.Name, proxy.TileWidth, proxy.TileHeight, level)
        {
            _tiles = new TileStack[TilesHigh, TilesWide];

            Opacity = proxy.Opacity;
            IsVisible = proxy.Visible;
            RasterMode = proxy.RasterMode;
            Level = level;

            foreach (var blockProxy in proxy.Blocks)
                ParseTileBlockString(blockProxy.Data);

            if (proxy.Properties != null) {
                foreach (var propertyProxy in proxy.Properties)
                    CustomProperties.Add(Property.FromXmlProxy(propertyProxy));
            }
        }
コード例 #7
0
ファイル: ResizeLevelForm.cs プロジェクト: Elof3/Treefrog
        public ResizeLevelForm(Level level)
        {
            InitializeComponent();

            _level = level;

            NewWidth = level.Width;
            NewHeight = level.Height;

            _alignmentControl.SourceIcon = Properties.Resources.Map;
            _alignmentControl.OldSize = new Size(_level.Width, _level.Height);
            _alignmentControl.NewSize = new Size(_level.Width, _level.Height);
            _alignmentControl.Alignment = Alignment.TopLeft;
            _alignmentControl.AlignmentChanged += _alignmentControl_AlignmentChanged;

            _oldWidthLabel.Text = _level.Width.ToString();
            _oldHeightLabel.Text = _level.Height.ToString();

            CalculatePositionValues(_alignmentControl.Alignment);
        }
コード例 #8
0
        public ResizeLevelForm(Level level)
        {
            InitializeComponent();

            System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

            _level = level;

            NewWidth = level.Width;
            NewHeight = level.Height;

            _alignmentControl.SourceIcon = Image.FromStream(assembly.GetManifestResourceStream("Treefrog.Icons._16.map.png"));
            _alignmentControl.OldSize = new Size(_level.Width, _level.Height);
            _alignmentControl.NewSize = new Size(_level.Width, _level.Height);
            _alignmentControl.Alignment = Alignment.TopLeft;
            _alignmentControl.AlignmentChanged += _alignmentControl_AlignmentChanged;

            _oldWidthLabel.Text = _level.Width.ToString();
            _oldHeightLabel.Text = _level.Height.ToString();

            CalculatePositionValues(_alignmentControl.Alignment);
        }
コード例 #9
0
ファイル: ObjectLayer.cs プロジェクト: Elof3/Treefrog
        public ObjectLayer(LevelX.ObjectLayerX proxy, Level level)
            : this(proxy.Name, level)
        {
            Opacity = proxy.Opacity;
            IsVisible = proxy.Visible;
            RasterMode = proxy.RasterMode;
            GridColor = Color.ParseArgbHex(proxy.GridColor);
            GridWidth = proxy.GridWidth;
            GridHeight = proxy.GridHeight;
            Level = level;

            IResourceCollection<ObjectPool> pools = Level.Project.ObjectPoolManager.Pools;
            foreach (var objProxy in proxy.Objects) {
                ObjectInstance inst = ObjectInstance.FromXProxy(objProxy, Level.Project.ObjectPoolManager);
                if (inst != null)
                    AddObject(inst);
            }

            if (proxy.Properties != null) {
                foreach (var propertyProxy in proxy.Properties)
                    PropertyManager.CustomProperties.Add(Property.FromXmlProxy(propertyProxy));
            }
        }
コード例 #10
0
ファイル: ObjectLayer.cs プロジェクト: Elof3/Treefrog
 public ObjectLayer(string name, Level level)
     : this(name, level.OriginX, level.OriginY, level.Width, level.Height)
 {
 }
コード例 #11
0
ファイル: LevelContent.cs プロジェクト: Elof3/Treefrog
 public LevelContent(Level level, IEnumerable<KeyValuePair<Guid, string>> assetMap)
     : this(level)
 {
     foreach (var kvp in assetMap)
         AssetMap.Add(kvp.Key, kvp.Value);
 }
コード例 #12
0
ファイル: Project.cs プロジェクト: Jorch72/CS-Treefrog
 private void AddLevel(Level level)
 {
     _levels.Add(level);
 }
コード例 #13
0
ファイル: LevelPresenter.cs プロジェクト: Elof3/Treefrog
        public LevelPresenter(PresenterManager pm, EditorPresenter editor, Level level)
        {
            _pm = pm;
            _pm.InstanceRegistered += PresenterRegsitered;
            _pm.InstanceUnregistered += PresenterUnregistered;

            _editor = editor;
            _level = level;

            _zoom = new ZoomState();
            _zoom.ZoomLevelChanged += ZoomStateLevelChanged;

            _info = new LevelInfoPresenter(this);

            _layerPresenters = new Dictionary<Guid, LevelLayerPresenter>();

            _history = new CommandHistory();
            _history.HistoryChanged += HistoryChangedHandler;

            _annotations = new ObservableCollection<Annotation>();

            InitializeCommandManager();
            InitializeLayerHierarchy();
            InitializeLayers();
        }
コード例 #14
0
ファイル: MultiTileGridLayer.cs プロジェクト: Elof3/Treefrog
 public MultiTileGridLayer(string name, int tileWidth, int tileHeight, Level level)
     : base(name, tileWidth, tileHeight, level)
 {
     _tiles = new TileStack[TilesHigh, TilesWide];
 }
コード例 #15
0
 public SyncLevelEventArgs(Level level, LevelPresenter controller)
 {
     PreviousLevel = level;
     PreviousLevelPresenter = controller;
 }
コード例 #16
0
        public void NewDefault()
        {
            Project prevProject = _project;

            if (_project != null) {
                _project.Modified -= ProjectModifiedHandler;
            }

            _project = EmptyProject();
            _project.Modified += ProjectModifiedHandler;
            //_project.Levels.ResourceRemapped += LevelNameChangedHandler;

            _project.ObjectPoolManager.Pools.Add(new ObjectPool("Default"));

            _openContent = new List<Guid>();
            _levels = new Dictionary<Guid, LevelPresenter>();

            Level level = new Level("Level 1", 0, 0, 800, 480);
            level.Project = _project;
            level.Layers.Add(new MultiTileGridLayer("Tile Layer 1", 16, 16, 50, 30));

            Level level2 = new Level("Level 2", 0, 0, 800, 480);
            level2.Project = _project;
            level2.Layers.Add(new MultiTileGridLayer("Tile Layer 1", 32, 32, 25, 15));

            LevelPresenter pres = new LevelPresenter(this, level);
            _levels[level.Uid] = pres;

            LevelPresenter pres2 = new LevelPresenter(this, level2);
            _levels[level2.Uid] = pres2;

            _openContent.Add(level.Uid);
            _openContent.Add(level2.Uid);

            _project.Levels.Add(level);
            _project.Levels.Add(level2);

            SelectLevel(level.Uid);

            PropertyListPresenter propList = _presentation.PropertyList as PropertyListPresenter;
            propList.Provider = level;

            ContentInfoArbitrationPresenter info = _presentation.ContentInfo as ContentInfoArbitrationPresenter;
            info.BindInfoPresenter(CurrentLevel.InfoPresenter);

            Modified = false;
            Project.ResetModified();

            OnSyncCurrentProject(new SyncProjectEventArgs(prevProject));

            RefreshEditor();
        }
コード例 #17
0
ファイル: Level.cs プロジェクト: JuliaABurch/Treefrog
 public LevelProperties (Level parent)
     : base(_reservedPropertyNames)
 {
     _parent = parent;
 }
コード例 #18
0
ファイル: Project.cs プロジェクト: jaquadro/Treefrog
 private void AddLevel(Level level)
 {
     _levels.Add(level);
 }
コード例 #19
0
ファイル: Project.cs プロジェクト: jaquadro/Treefrog
        private static void WriteLevel(ProjectResolver resolver, Level level, string levelPath)
        {
            using (Stream stream = resolver.OutputStream(levelPath)) {
                XmlWriterSettings settings = new XmlWriterSettings() {
                    CloseOutput = true,
                    Indent = true,
                };

                XmlWriter writer = XmlTextWriter.Create(stream, settings);

                LevelX proxy = Level.ToXProxy(level);
                XmlSerializer serializer = new XmlSerializer(typeof(LevelX));
                serializer.Serialize(writer, proxy);

                writer.Close();
            }
        }
コード例 #20
0
ファイル: Level.cs プロジェクト: JuliaABurch/Treefrog
        public static Level FromXProxy (LevelX proxy, Project project)
        {
            if (proxy == null)
                return null;

            Guid uid = proxy.PropertyGroup != null ? proxy.PropertyGroup.LevelGuid : Guid.NewGuid();

            Level level = new Level(uid, proxy.Name);
            level.Initialize(proxy, project);

            return level;
        }
コード例 #21
0
ファイル: Level.cs プロジェクト: JuliaABurch/Treefrog
        public static LevelX ToXProxy (Level level)
        {
            if (level == null)
                return null;

            foreach (Layer layer in level.Layers) {
                if (layer is TileGridLayer) {
                    TileGridLayer tileLayer = layer as TileGridLayer;
                    foreach (LocatedTile tile in tileLayer.Tiles) {
                        if (!level._localTileIndex.ContainsValue(tile.Tile.Uid))
                            level._localTileIndex.Add(level._indexSequence++, tile.Tile.Uid);
                    }
                }
            }

            List<LevelX.TileIndexEntryX> tileIndexEntries = new List<LevelX.TileIndexEntryX>();
            foreach (var item in level._localTileIndex) {
                tileIndexEntries.Add(new LevelX.TileIndexEntryX() {
                    Id = item.Key,
                    Uid = item.Value,
                });
            }

            LevelX.TileIndexX tileIndex = new LevelX.TileIndexX() {
                Entries = tileIndexEntries,
                Sequence = level._indexSequence,
            };

            List<AbstractXmlSerializer<LevelX.LayerX>> layers = new List<AbstractXmlSerializer<LevelX.LayerX>>();
            foreach (Layer layer in level.Layers) {
                if (layer is MultiTileGridLayer)
                    layers.Add(MultiTileGridLayer.ToXmlProxyX(layer as MultiTileGridLayer));
                else if (layer is ObjectLayer)
                    layers.Add(ObjectLayer.ToXmlProxyX(layer as ObjectLayer));
            }

            LevelX.PropertyGroupX propGroup = new LevelX.PropertyGroupX() {
                LevelGuid = level.Uid,
                Extra = level.Extra,
            };

            if (level.Project != null)
                propGroup.ProjectGuid = level.Project.Uid;

            return new LevelX() {
                PropertyGroup = propGroup,
                Name = level.Name,
                OriginX = level.OriginX,
                OriginY = level.OriginY,
                Width = level.Width,
                Height = level.Height,
                TileIndex = tileIndex,
                Layers = layers.Count > 0 ? layers : null,
            };
        }