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();
}