Inheritance: Point
Esempio n. 1
0
        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();
        }
Esempio n. 2
0
        public void Hit(double x, double y)
        {
            if (SonicManager.Instance.DrawTickCount - sonicLastHitTick < 120)
                return;
            JustHit = true;
            Ysp = -4;
            Xsp = 2 * ( ( X - x ) < 0 ? -1 : 1 );
            sonicLastHitTick = SonicManager.Instance.DrawTickCount;
            var t = 0;
            var angle = 101.25;
            var n = false;
            var speed = 4;
            while (t < Rings) {
                var ring = new Ring(true);
                SonicManager.Instance.ActiveRings.Add(ring);
                ring.X = (int) X;
                ring.Y = (int) Y - 10;
                ring.Ysp = -Math.Sin(angle) * speed;
                ring.Xsp = Math.Cos(angle) * speed;

                if (n) {
                    ring.Ysp *= -1;
                    angle += 22.5;
                }
                n = !n;
                t++;
                if (t == 16) {
                    speed = 2;
                    angle = 101.25;
                }
            }
            Rings = 0;
        }