public TileChunkArea(UIManager.UIManager uiManager) { var tileChunkArea = uiManager.UIManagerAreas.TileChunkArea = new UIArea<TileChunk>(null, 700, 500, 390, 390) {Closable = true}; tileChunkArea.Visible = false; uiManager.AddArea(tileChunkArea); tileChunkArea.AddControl(new TextArea(30, 25, "Tile Chunks") {Color = "blue"}); tileChunkArea.AddControl(chunkPieceList = new ScrollBox(30, 70, 96 - 16, 3, 64) {BackColor = "rgb(50,60,127)"}); TileChunk[] tileChunks = SonicManager.Instance.SonicLevel.TileChunks.Array(); for (int index = 0; index < tileChunks.Length; index++) { var tileChunk = tileChunks[index]; ImageButton<TileChunk> chunkButton = new ImageButton<TileChunk>(tileChunk, 0, 0, 0, 0); chunkButton.OnDraw = (cnv, x, y) => { // chunkButton.Data.DrawUI(cnv, new Point(x, y), new DoublePoint(0.5d, 0.5d), 0); // chunkButton.Data.DrawUI(cnv, new Point(x, y), new DoublePoint(0.5d, 0.5d), 1); }; chunkButton.Font = UIManager.UIManager.SmallTextFont; chunkButton.Text = "Chunk #" + index; chunkButton.Click = (e) => { tileChunkArea.Data = tileChunk; }; chunkPieceList.AddControl(chunkButton); } Image image = new Image(125, 70, 256, 256); int areaDrawScale = 2; image.OnDraw += (context, x, y) => { if (tileChunkArea.Data == null) return; // tileChunkArea.Data.DrawUI(context, new Point(x, y), new Point(areaDrawScale, areaDrawScale), 0); // tileChunkArea.Data.DrawUI(context, new Point(x, y), new Point(areaDrawScale, areaDrawScale), 1); }; image.Click += (e) => { if (tileChunkArea.Data == null) return; // var tilePiece = tileChunkArea.Data.GetBlockAt(e.X / areaDrawScale, e.Y / areaDrawScale); // uiManager.UIManagerAreas.TilePieceArea.Visible = false; // uiManager.UIManagerAreas.TilePieceArea.Data = tilePiece; // tilePieceList.ScrollIndex = Math.Max(uiManager.sonicManager.SonicLevel.TilePieces.IndexOf(tilePiece) - 1, 0); }; tileChunkArea.AddControl(image); buildTilePiece(uiManager); /* var table=tileChunkArea.AddControl(new Table(10, 40, 350, 280)); var row = table.AddRow(new TableRow(50.Percent())); var cell = row.AddCell(new TableCell(50.Percent(), 50.Percent())); cell.AddControl(new Button(0, 0, 0, 0, "Text")); cell = row.AddCell(new TableCell(50.Percent(), 50.Percent())); cell.AddControl(new Button(0, 0, 0, 0, "Text1")); row = table.AddRow(new TableRow(100)); cell = row.AddCell(new TableCell(100, 100)); cell.AddControl(new Button(0, 0, 100, 100, "Text")); cell = row.AddCell(new TableCell(100, 100){FullSize=false}); cell.AddControl(new Button(0, 0, 100, 50, "Text1")); cell.AddControl(new Button(0, 50, 100, 50, "Text2"));*/ }
public ColorEditorArea(UIManager.UIManager uiManager) { var colorEditorArea = uiManager.UIManagerAreas.ColorEditorArea = new UIArea<ColorEditorAreaData>(new ColorEditorAreaData(), 650, 30, 960, 800) {Closable = true}; colorEditorArea.Visible = false; uiManager.AddArea(colorEditorArea); colorEditorArea.Data.ColorEditor = new ColorEditingArea(30, 45, 680, 680) {ShowOffset = false}; colorEditorArea.AddControl(colorEditorArea.Data.ColorEditor); colorEditorArea.AddControl(new Button(770, 70, 150, 22, "Show Outline") { Color = "rgb(50,150,50)", Click = (p) => { colorEditorArea.Data.ColorEditor.Editor.ShowOutline = !colorEditorArea.Data.ColorEditor.Editor.ShowOutline; } }); Button bt = null; colorEditorArea.AddControl(bt = new Button(770, 190, 150, 22, "Modify Hurt Map") { Color = "rgb(50,150,50)", Click = (p) => { if (colorEditorArea.Data.ColorEditor.ShowHurtMap == false && colorEditorArea.Data.ColorEditor.ShowCollideMap == false) { colorEditorArea.Data.ColorEditor.ShowHurtMap = true; colorEditorArea.Data.ColorEditor.ShowCollideMap = false; bt.Text = "Modify Collide Map"; } else if (colorEditorArea.Data.ColorEditor.ShowCollideMap == false) { colorEditorArea.Data.ColorEditor.ShowHurtMap = false; colorEditorArea.Data.ColorEditor.ShowCollideMap = true; bt.Text = "Modify Pixel Map"; } else { colorEditorArea.Data.ColorEditor.ShowHurtMap = false; colorEditorArea.Data.ColorEditor.ShowCollideMap = false; bt.Text = "Modify Hurt Map"; } } }); colorEditorArea.AddControl(new TextArea(750, 150, ( (Func<string>) ( () => { return "Line Width:" + colorEditorArea.Data.ColorEditor.Editor.LineWidth; } ) )) {Color = "Black"}); colorEditorArea.AddControl(new Button(900, 120, 14, 20, "^") { Color = "rgb(50,150,50)", Click = (p) => { colorEditorArea.Data.ColorEditor.Editor.LineWidth = Math.Max(colorEditorArea.Data.ColorEditor.Editor.LineWidth + 1, 1); } }); colorEditorArea.AddControl(new Button(900, 145, 14, 20, "v") { Color = "rgb(50,150,50)", Click = (p) => { colorEditorArea.Data.ColorEditor.Editor.LineWidth = Math.Min(colorEditorArea.Data.ColorEditor.Editor.LineWidth - 1, 10); } }); colorEditorArea.AddControl(colorEditorArea.Data.PaletteArea = new PaletteArea(770, 250) {Scale = new Point(45, 45), ShowCurrent = true}); colorEditorArea.Data.ColorEditor.PaletteEditor = colorEditorArea.Data.PaletteArea; colorEditorArea.Data.Init = (frame) => { colorEditorArea.Data.ColorEditor.Scale = new Point(700 / frame.Width, 700 / frame.Height); colorEditorArea.Data.ColorEditor.Init(frame); colorEditorArea.Data.PaletteArea.Init(frame.Palette, false); }; }
public LevelManagerArea(UIManager.UIManager uiManager) { LevelManager = uiManager.UIManagerAreas.LevelManagerArea = new UIArea(Window.OuterWidth - 440, 100, 390, 390) { Closable = true }; LevelManager.Visible = true; uiManager.AddArea(LevelManager); LevelManager.AddControl(new TextArea(30, 25, "Level Manager") { Color = "blue" }); LevelManager.AddControl(new Button(50, 70, 120, 28, "Live Objects") { Click = (p) => { new LiveObjectsArea(uiManager); } }); LevelManager.AddControl(new Button(50, 110, 120, 28, "Debug Animations") { Click = (p) => { SonicManager.Instance.TileChunkDebugDrawOptions.OutlineChunk = !SonicManager.Instance.TileChunkDebugDrawOptions.OutlineChunk; SonicManager.Instance.TileChunkDebugDrawOptions.ShowPaletteAnimationData = !SonicManager.Instance.TileChunkDebugDrawOptions.ShowPaletteAnimationData; SonicManager.Instance.TileChunkDebugDrawOptions.ShowBaseData = !SonicManager.Instance.TileChunkDebugDrawOptions.ShowBaseData; SonicManager.Instance.TileChunkDebugDrawOptions.ShowTileAnimationData = !SonicManager.Instance.TileChunkDebugDrawOptions.ShowTileAnimationData; } }); }
public ObjectFrameworkArea(UIManager.UIManager manager) { var size = 40 * 4; objectFrameworkArea = new UIArea<ObjectFrameworkData>(new ObjectFrameworkData() {ObjectFramework = new LevelObject("Foo")}, 540, 75, 850, 690) {Closable = true}; objectFrameworkArea.Visible = false; manager.AddArea(objectFrameworkArea); manager.UIManagerAreas.ObjectFrameworkArea = this; objectFrameworkArea.AddControl(new TextArea(30, 25, "Object Framework") {Color = "blue"}); objectFrameworkArea.AddControl(new TextArea(16, 60, "Assets") {Color = "black"}); objectFrameworkArea.AddControl(new Button(160, 38, 140, 25, "Add Asset") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.Assets.Add( new LevelObjectAsset("Asset " + ( objectFrameworkArea.Data.ObjectFramework.Assets.Count + 1 ))); Populate(objectFrameworkArea.Data.ObjectFramework); } }); objectFrameworkArea.AddControl( objectFrameworkArea.Data.Assets = new ScrollBox(30, 60 + 10, 25, 4, 250) {BackColor = "rgb(50, 60, 127)",}); objectFrameworkArea.AddControl(new TextArea(16, 60 + ( size * 1 ), "Pieces") {Color = "black"}); objectFrameworkArea.AddControl(new Button(160, 38 + ( size * 1 ), 140, 25, "Add Piece") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.Pieces.Add( new LevelObjectPiece("Piece " + ( objectFrameworkArea.Data.ObjectFramework. Pieces.Count + 1 ))); Populate(objectFrameworkArea.Data.ObjectFramework); } }); objectFrameworkArea.AddControl( objectFrameworkArea.Data.Pieces = new ScrollBox(30, 60 + 10 + ( size * 1 ), 25, 4, 250) {BackColor = "rgb(50, 60, 127)",}); objectFrameworkArea.AddControl(new TextArea(16, 60 + ( size * 2 ), "Piece Layouts") {Color = "black"}); objectFrameworkArea.AddControl(new Button(160, 38 + ( size * 2 ), 140, 25, "Add Piece Layout") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.PieceLayouts.Add( new LevelObjectPieceLayout("Piece Layout " + ( objectFrameworkArea.Data. ObjectFramework . PieceLayouts .Count + 1 ))); Populate(objectFrameworkArea.Data.ObjectFramework); } }); objectFrameworkArea.AddControl( objectFrameworkArea.Data.PieceLayouts = new ScrollBox(30, 60 + 10 + ( size * 2 ), 25, 4, 250) {BackColor = "rgb(50, 60, 127)",}); objectFrameworkArea.AddControl(new TextArea(16, 60 + ( size * 3 ), "Projectiles") {Color = "black"}); objectFrameworkArea.AddControl(new Button(160, 38 + ( size * 3 ), 140, 25, "Add Projectile") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.Projectiles.Add( new LevelObjectProjectile( "Piece Projectile " + ( objectFrameworkArea.Data.ObjectFramework.Projectiles. Count + 1 ))); Populate(objectFrameworkArea.Data.ObjectFramework); } }); objectFrameworkArea.AddControl( objectFrameworkArea.Data.Projectiles = new ScrollBox(30, 60 + 10 + ( size * 3 ), 25, 4, 250) {BackColor = "rgb(50, 60, 127)",}); objectFrameworkArea.AddControl(new TextArea(320, 80 - 20, "Key: ") {Font = UIManager.UIManager.SmallTextFont, Color = "black"}); objectFrameworkArea.AddControl( objectFrameworkArea.Data.Key = new TextBox(370, 60 - 20, 150, 25, "") {Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.Key = objectFrameworkArea.Data.Key.Text; }}); objectFrameworkArea.AddControl(new TextArea(320 + 205, 80 - 24, "Description: ") {Font = UIManager.UIManager.SmallTextFont, Color = "black"}); objectFrameworkArea.AddControl( objectFrameworkArea.Data.Description = new TextBox(370 + 240, 60 - 20, 220, 25, "") {Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.ObjectFramework.Description = objectFrameworkArea.Data.Description.Text; }}); objectFrameworkArea.AddControl(objectFrameworkArea.Data.b1 = new Button(320, 95 - 20, 250, 25, "onInit") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.b2.Toggled = false; objectFrameworkArea.Data.b3.Toggled = false; objectFrameworkArea.Data.b4.Toggled = false; if (objectFrameworkArea.Data.b1.Toggled) { addCodeWindow(objectFrameworkArea.Data.ObjectFramework.InitScript, () => { objectFrameworkArea.Data.ObjectFramework.InitScript = objectFrameworkArea.Data.Editor.GetValue(); }); } else ClearMainArea(); } }); objectFrameworkArea.Data.b1.Toggle = true; objectFrameworkArea.AddControl(objectFrameworkArea.Data.b2 = new Button(580, 95 - 20, 250, 25, "onTick") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.b1.Toggled = false; objectFrameworkArea.Data.b3.Toggled = false; objectFrameworkArea.Data.b4.Toggled = false; if (objectFrameworkArea.Data.b2.Toggled) { addCodeWindow(objectFrameworkArea.Data.ObjectFramework.TickScript, () => { objectFrameworkArea.Data.ObjectFramework.TickScript = objectFrameworkArea.Data.Editor.GetValue(); }); } else ClearMainArea(); } }); objectFrameworkArea.Data.b2.Toggle = true; objectFrameworkArea.AddControl(objectFrameworkArea.Data.b3 = new Button(320, 130 - 20, 250, 25, "onCollide") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.b1.Toggled = false; objectFrameworkArea.Data.b2.Toggled = false; objectFrameworkArea.Data.b4.Toggled = false; if (objectFrameworkArea.Data.b3.Toggled) { addCodeWindow(objectFrameworkArea.Data.ObjectFramework.CollideScript, () => { objectFrameworkArea.Data.ObjectFramework.CollideScript = objectFrameworkArea.Data.Editor.GetValue(); }); } else ClearMainArea(); } }); objectFrameworkArea.Data.b3.Toggle = true; objectFrameworkArea.AddControl(objectFrameworkArea.Data.b4 = new Button(580, 130 - 20, 250, 25, "onHurtSonic") { Color = "rgb(50,150,50)", Click = (p) => { objectFrameworkArea.Data.b1.Toggled = false; objectFrameworkArea.Data.b2.Toggled = false; objectFrameworkArea.Data.b3.Toggled = false; if (objectFrameworkArea.Data.b4.Toggled) { addCodeWindow(objectFrameworkArea.Data.ObjectFramework.HurtScript, () => { objectFrameworkArea.Data.ObjectFramework.HurtScript = objectFrameworkArea.Data.Editor.GetValue(); }); } else ClearMainArea(); } }); objectFrameworkArea.Data.b4.Toggle = true; objectFrameworkArea.AddControl(objectFrameworkArea.Data.MainPanel = new Panel<MainPanelData>(new MainPanelData(), 320, 150, 510, 510)); // setTimeout(" var sc = document.getElementById("picFieldUploader");sc.style.visibility = "hidden";sc.style.position="absolute";", 300); }
public LiveObjectsArea(UIManager.UIManager uiManager) { var liveObjectsArea = uiManager.UIManagerAreas.LiveObjectsArea = new UIArea<LiveObjectsAreaData>(new LiveObjectsAreaData(), 947, 95, 770, 700) {Closable = true}; liveObjectsArea.Visible = true; uiManager.AddArea(liveObjectsArea); liveObjectsArea.AddControl(new TextArea(30, 25, "Live Objects") {Color = "blue"}); HScrollBox scl; liveObjectsArea.AddControl(scl = new HScrollBox(20, 60, 85, 8, 85) {BackColor = "rgb(50,150,50)"}); liveObjectsArea.Data.Populate = (liveObjects) => { foreach (Element t in scl.Controls) { ( (ImageButton<LivePopulateModel>) t ).Data.@checked = false; } foreach (var lo in liveObjects) { var satisfied = false; foreach (Element t in scl.Controls) { if (lo.Index == ( (ImageButton<LivePopulateModel>) t )[email protected]) { ( (ImageButton<LivePopulateModel>) t ).Data.@checked = true; satisfied = true; break; } } if (!satisfied) { var obj = lo; ImageButton<LivePopulateModel> dm = null; ImageButton<LivePopulateModel> imageButton = new ImageButton<LivePopulateModel>(new LivePopulateModel(), 0, 0, 0, 0); imageButton.Text = obj.ObjectData.Description + "(" + obj.ObjectData.Key + ")"; imageButton.OnDraw = (canv, x, y) => { obj.Draw(canv, x + dm.Width / 2, y + dm.Height / 2, false); }; imageButton.Click = (p) => { liveObjectsArea.Data.DebugConsole.Data.Populate(obj); }; scl.AddControl(dm = imageButton); dm.Data.@checked = true; dm.Data.@object = obj; } } for (var i = scl.Controls.Count - 1; i >= 0; i--) { if (!( (ImageButton<LivePopulateModel>) scl.Controls[i] ).Data.@checked) scl.Controls.RemoveAt(i); } }; liveObjectsArea.AddControl(liveObjectsArea.Data.DebugConsole = new Panel<DebugConsoleData>(new DebugConsoleData(), 20, 200, 730, 450)); liveObjectsArea.Data.DebugConsole.Data.Populate = (obj) => { liveObjectsArea.Data.DebugConsole.Clear(); liveObjectsArea.Data.DebugConsole.AddControl(liveObjectsArea.Data.DebugConsole.Data.Watch = new ScrollBox(10, 15, 30, 12, 210) {BackColor = "rgb(50,150,50)"}); var o = JsDictionary<string, object>.GetDictionary(obj); foreach (var pr in o) { if (true /*!Help.IsFunction(pr.Value)*/) { KeyValuePair<string, object> pr1 = pr; liveObjectsArea.Data.DebugConsole.Data.Watch.AddControl(new Button(0, 0, 0, 0, (Func<string>) ( () => pr1.Key + ": " + pr1.Value )) {Color = "rgb(50,190,90)"}); } } foreach (LevelObjectInfo t in SonicManager.Instance.SonicLevel.Objects) { t.ConsoleLog = null; } obj.ConsoleLog = (txt) => { liveObjectsArea.Data.DebugConsole.Data.Element.InnerHTML = txt.Join("\n"); liveObjectsArea.Data.DebugConsole.Data.Element.ScrollTop = liveObjectsArea.Data.DebugConsole.Data.Element.ScrollHeight; }; liveObjectsArea.Data.DebugConsole.AddControl(new HtmlBox(270, 15) { Width = 445, Height = 430, Init = () => { var gm = liveObjectsArea.Data.DebugConsole.Data.Element; if (gm != null) gm.ParentNode.RemoveChild(gm); jQuery.FromElement(Document.Body).Append( @"<textarea id=""console"" name=""console"" style=""position:absolute;width:445px;height:430px;""></textarea>"); liveObjectsArea.Data.DebugConsole.Data.Element = Document.GetElementById("console"); }, UpdatePosition = (x, y) => { var scroller = liveObjectsArea.Data.DebugConsole.Data.Element; if (scroller.Style.Left == x + "px" && scroller.Style.Top == y + "px") return; scroller.Style.Left = x + "px"; scroller.Style.Top = y + "px"; }, _Focus = () => { var sc = liveObjectsArea.Data.DebugConsole.Data.Element; if (sc != null) sc.Style.Visibility = "visible"; }, _Hide = () => { var sc = liveObjectsArea.Data.DebugConsole.Data.Element; sc.Blur(); // Engine.uiCanvasItem.focus(); // document.body.focus(); // editor.onBlur(); if (sc != null) { sc.Style.Left = "-100px"; sc.Style.Top = "-100px"; sc.Style.Visibility = "hidden"; } } }); }; }
public SonicManager(SonicEngine engine, CanvasInformation gameCanvas, Action resize) { Instance = this; // SonicToon = new Sonic(); this.engine = engine; this.engine.canvasWidth = jQuery.Window.GetWidth(); this.engine.canvasHeight = jQuery.Window.GetHeight(); gameCanvas.DomCanvas[0].SetAttribute("width", this.engine.canvasWidth.ToString()); gameCanvas.DomCanvas[0].SetAttribute("height", this.engine.canvasHeight.ToString()); jQuery.GetJsonData<JsDictionary<string, SonicImage>>("Content/sprites/sonic.js", data => { sonicSprites = data; }); objectManager = new ObjectManager(this); objectManager.Init(); int scl = 2; Scale = new Point(scl, scl); RealScale = new DoublePoint(1, 1); mainCanvas = gameCanvas; WindowLocation = Constants.DefaultWindowLocation(GameState.Editing, mainCanvas, Scale); BigWindowLocation = Constants.DefaultWindowLocation(GameState.Editing, mainCanvas, Scale); BigWindowLocation.Width = (int)(BigWindowLocation.Width * 1.8); BigWindowLocation.Height = (int)(BigWindowLocation.Height * 1.8); TileAnimations = new List<TileAnimationData>(); AnimationInstances = new List<AnimationInstance>(); //jQuery.GetJson("Content/sprites/explosion.js", data => Animations.Add(new Animation("explosion", data))); ShowHeightMap = false; GoodRing = new Ring(false); ActiveRings = new List<Ring>(); ForceResize = resize; Background = null; CurrentGameState = GameState.Editing; ScreenOffset = new Point(mainCanvas.DomCanvas.GetWidth() / 2 - WindowLocation.Width / 2, mainCanvas.DomCanvas.GetHeight() / 2 - WindowLocation.Height / 2); UIManager = new UIManager.UIManager(this, mainCanvas.Context); ; ClickState = ClickState.PlaceChunk; tickCount = 0; DrawTickCount = 0; InHaltMode = false; waitingForTickContinue = false; waitingForDrawContinue = false; TileChunkDebugDrawOptions = new TileChunkDebugDrawOptions(); }
private void buildTilePiece(UIManager.UIManager uiManager) { var tilePieceArea = uiManager.UIManagerAreas.TilePieceArea = new UIArea<TilePiece>(null, 1100, 400, 390, 390) {Closable = true}; tilePieceArea.Visible = false; uiManager.AddArea(tilePieceArea); tilePieceArea.AddControl(new TextArea(30, 25, "Tile Pieces") {Color = "blue"}); bool showHeightMap = false; tilePieceArea.AddControl(new Button(100, 50, 125, 25, (Func<string>) ( () => showHeightMap ? "Hide Height Map" : "Show Height Map" )) { Click = (e) => { if (tilePieceArea.Data == null) return; showHeightMap = !showHeightMap; } }); tilePieceList = new ScrollBox(10, 35, 96 - 16, 4, 64) {BackColor = "rgb(50,60,127)"}; tilePieceArea.AddControl(tilePieceList); var tilePieces = SonicManager.Instance.SonicLevel.TilePieces.Array(); for (int index = 0; index < tilePieces.Length; index++) { var tilePiece = tilePieces[index]; ImageButton<TilePiece> tilePieceButton = new ImageButton<TilePiece>(tilePiece, 0, 0, 0, 0); tilePieceButton.OnDraw = (cnv, x, y) => { cnv.Save(); cnv.Translate(x, y); cnv.Scale(4, 4); // tilePieceButton.Data.Draw(cnv, new Point(0, 0), ChunkLayer.Low, false, false, 0); // tilePieceButton.Data.Draw(cnv, new Point(0, 0), ChunkLayer.High, false, false, 0); if (showHeightMap) { HeightMap hmap; if (SonicManager.Instance.SonicLevel.CurHeightMap) hmap = tilePiece.GetLayer1HeightMaps(); else hmap = tilePiece.GetLayer2HeightMaps(); hmap.Draw(cnv, new Point(0, 0), false, false, 1, 0); } cnv.Restore(); }; tilePieceButton.Font = UIManager.UIManager.SmallTextFont; tilePieceButton.Text = "Tile Piece #" + index; tilePieceButton.Click = (e) => { tilePieceArea.Data = tilePiece; }; tilePieceList.AddControl(tilePieceButton); } Image image = new Image(105, 120, 256, 256); image.OnDraw += (context, x, y) => { if (tilePieceArea.Data == null) return; context.Save(); context.Translate(x, y); context.Scale(16, 16); // tilePieceArea.Data.Draw(context, new Point(0, 0), ChunkLayer.Low, false, false, 0); // tilePieceArea.Data.Draw(context, new Point(0, 0), ChunkLayer.High, false, false, 0); context.Restore(); }; tilePieceArea.AddControl(image); }
public LevelSelectorArea(UIManager.UIManager manager) { var levelInformation = new UIArea(70, 70, 460, 420); levelInformation.Visible = true; manager.AddArea(levelInformation); levelInformation.AddControl(new TextArea(30, 25, "Level Selector") { Font = UIManager.UIManager.TextFont, Color = "blue" }); levelInformation.AddControl(new TextArea(30, 52, ((Func<string>)(() => UIManager.UIManager.CurLevelName))) { Font = UIManager.UIManager.TextFont, Color = "black" }); levelInformation.AddControl(new Button(320, 70, 100, 22, "Save Level") { Font = UIManager.UIManager.ButtonFont, Color = "rgb(50,150,50)" }); levelInformation.AddControl(new Button(320, 105, 135, 22, "Load Empty Level") { Font = UIManager.UIManager.ButtonFont, Color = "rgb(50,150,50)", Click = (p) => { /* levelManagerArea.visible = true; loadingText.visible = true; var index = 0; var tim = function () { var max = 188; if (index == max) { setTimeout(function () { alert(_H.stringify(sonicManager.SonicLevel)); sonicManager.uiManager.loadGame(_H.stringify(sonicManager.SonicLevel), sonicManager.mainCanvas); loadingText.visible = false; }, 500); return; } setTimeout(tim, 100); _H.loadSprite("assets/Chunks/Tile" + index++ + ".png", function (image) { loadingText.text = "Loading " + index + "/" + max; sonicManager.importChunkFromImage(image); if (index == max) { sonicManager.inds = { done: true }; } }); }; setTimeout(tim, 100);*/ } }); var ctls = levelInformation.AddControl(new ScrollBox(30, 70, 25, 11, 250) { BackColor = "rgb(50, 60, 127)", }); var loadLevel = (Action<string>)(name => { UIManager.UIManager.UpdateTitle("Downloading " + name); SonicEngine.Instance.client.Emit("LoadLevel.Request", new DataObject<string>(name)); ; }); bool neverGot=true; SonicEngine.Instance.client.On<DataObject<string>>("LoadLevel.Response", LoadLevel); Window.SetTimeout(() => { if (neverGot) { UIManager.UIManager.CurLevelName = "Connection Failed, static level loaded"; LoadLevel(new DataObject<string>(Window.Instance.Me().STATICLEVEL)); } }, 3000); SonicEngine.Instance.client.On<DataObject<string[]>>("GetLevels.Response", data => { neverGot = false; bool load = true; foreach (var level in data.Data.OrderBy(a => a)) { if (load) { //#if RELEASE //loadLevel(level); //#endif load = false; } string area = level; ctls.AddControl(new Button(0, 0, 0, 0, level) { Color = "rgb(50,190,90)", Click = (p) => { loadLevel(area); } }); } }); SonicEngine.Instance.client.Emit("GetLevels.Request", null); UIManager.UIManager.CurLevelName = "Level Not Loaded"; }
public ObjectFrameworkListArea(UIManager.UIManager uiManager) { Action<string> loadObject = null; var objectFrameworkListArea = uiManager.UIManagerAreas.ObjectFrameworkListArea = new UIArea(90, 500, 390, 300) {Closable = true}; objectFrameworkListArea.Visible = true; uiManager.AddArea(objectFrameworkListArea); objectFrameworkListArea.AddControl(new TextArea(30, 25, "Object Frameworks") {Color = "blue"}); ScrollBox fList; objectFrameworkListArea.AddControl(fList = new ScrollBox(30, 90, 25, 6, 315) {BackColor = "rgb(50,60,127)"}); objectFrameworkListArea.AddControl(new Button(35, 50, 160, 25, "Create Framework") { Color = "rgb(50,150,50)", Click = (p) => { uiManager.UIManagerAreas.ObjectFrameworkArea.Populate(new LevelObject("SomeKey")); uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Visible = true; } }); Action getObjects = () => { SonicEngine.Instance.client.Emit("GetAllObjects", ""); SonicEngine.Instance.client.On<DataObject<string[]>>("GetAllObjects.Response", (data) => { var obj = data.Data; fList.Controls = new List<Element>(); foreach (var itm in obj.OrderBy(a => a)) { Button d; string name = itm; fList.AddControl(d = new Button(0, 0, 0, 0, itm) { Color = "rgb(50,190,90)", Click = (p) => { loadObject(name); } }); } }); }; objectFrameworkListArea.AddControl(new Button(200, 50, 160, 25, "Save Framework") { Color = "rgb(50,150,50)", Click = (p) => { var oldTitle = UIManager.UIManager.CurLevelName; UIManager.UIManager.UpdateTitle("Saving Object"); var k = uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Data.ObjectFramework.Key; var o = uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Data.ObjectFramework.oldKey ?? uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Data.ObjectFramework.Key; var v = Help.Stringify(uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Data.ObjectFramework); SonicEngine.Instance.client.Emit("SaveObject", new SaveObjectModel {Key = k, OldKey = o, Data = v}); SonicEngine.Instance.client.On<bool>("SaveObject.Response", (data) => { UIManager.UIManager.UpdateTitle(oldTitle); }); getObjects(); } }); getObjects(); loadObject = (name) => { var objects = SonicManager.Instance.cachedObjects; if (objects != null) { if (objects[name] != null) { uiManager.UIManagerAreas.ObjectFrameworkArea.Populate(objects[name]); uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Visible = true; return; } } var oldTitle = UIManager.UIManager.CurLevelName; UIManager.UIManager.UpdateTitle("Downloading Object:" + name); SonicEngine.Instance.client.Emit("GetObject", new DataObject<string>(name)); SonicEngine.Instance.client.On<DataObject<string>>("GetObject.Response", (lvl) => { UIManager.UIManager.UpdateTitle(oldTitle); var d = ObjectManager.ExtendObject(jQuery.ParseJsonData<LevelObjectData>(lvl.Data)); uiManager.UIManagerAreas.ObjectFrameworkArea.Populate(d); uiManager.UIManagerAreas.ObjectFrameworkArea.objectFrameworkArea.Visible = true; }); }; }