Пример #1
0
        public static void StartGame()
        {
            debug = Document.GetElementById <HTMLDivElement>("debug");

            // Set up canvas rendering.
            screen             = Document.GetElementById <HTMLCanvasElement>("screen");
            screenContext      = screen.GetContext(CanvasTypes.CanvasContext2DType.CanvasRenderingContext2D);
            lightPixel         = screenContext.CreateImageData(1, 1);
            lightPixel.Data[1] = 0x64;            // Set green part (#006400)
            lightPixel.Data[3] = 255;             // Alpha

            // Set up touch events for canvas so we can play on mobile.
            screen.OnTouchStart += SetTouchDown;
            screen.OnTouchEnd   += SetTouchUp;

            // Set up audio.
            // http://stackoverflow.com/a/23395136/25124
            beep = new HTMLAudioElement("data:audio/wav;base64,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qJrx4KOQjahZxWbcZgztj2c49nKmkId44S71j0c8eV9yDK6uPRzx5X18eDvjvQ6yKo9ZSS6l//8elePK/Lf//IInrOF/FvDoADYAGBMGb7FtErm5MXMlmPAJQVgWta7Zx2go+8xJ0UiCb8LHHdftWyLJE0QIAIsI+UbXu67dZMjmgDGCGl1H+vpF4NSDckSIkk7Vd+sxEhBQMRU8j/12UIRhzSaUdQ+rQU5kGeFxm+hb1oh6pWWmv3uvmReDl0UnvtapVaIzo1jZbf/pD6ElLqSX+rUmOQNpJFa/r+sa4e/pBlAABoAAAAA3CUgShLdGIxsY7AUABPRrgCABdDuQ5GC7DqPQCgbbJUAoRSUj+NIEig0YfyWUho1VBBBA//uQZB4ABZx5zfMakeAAAAmwAAAAF5F3P0w9GtAAACfAAAAAwLhMDmAYWMgVEG1U0FIGCBgXBXAtfMH10000EEEEEECUBYln03TTTdNBDZopopYvrTTdNa325mImNg3TTPV9q3pmY0xoO6bv3r00y+IDGid/9aaaZTGMuj9mpu9Mpio1dXrr5HERTZSmqU36A3CumzN/9Robv/Xx4v9ijkSRSNLQhAWumap82WRSBUqXStV/YcS+XVLnSS+WLDroqArFkMEsAS+eWmrUzrO0oEmE40RlMZ5+ODIkAyKAGUwZ3mVKmcamcJnMW26MRPgUw6j+LkhyHGVGYjSUUKNpuJUQoOIAyDvEyG8S5yfK6dhZc0Tx1KI/gviKL6qvvFs1+bWtaz58uUNnryq6kt5RzOCkPWlVqVX2a/EEBUdU1KrXLf40GoiiFXK///qpoiDXrOgqDR38JB0bw7SoL+ZB9o1RCkQjQ2CBYZKd/+VJxZRRZlqSkKiws0WFxUyCwsKiMy7hUVFhIaCrNQsKkTIsLivwKKigsj8XYlwt/WKi2N4d//uQRCSAAjURNIHpMZBGYiaQPSYyAAABLAAAAAAAACWAAAAApUF/Mg+0aohSIRobBAsMlO//Kk4soosy1JSFRYWaLC4qZBYWFRGZdwqKiwkNBVmoWFSJkWFxX4FFRQWR+LsS4W/rFRb/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////VEFHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAU291bmRib3kuZGUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMjAwNGh0dHA6Ly93d3cuc291bmRib3kuZGUAAAAAAAAAACU=");

            // Create the interpreter.
            chip8 = new Chip8(Draw, Beep);

            // Pass keypresses over to the interpreter.
            Document.OnKeyDown += SetKeyDown;
            Document.OnKeyUp   += SetKeyUp;

            // Kick off async loading of ROM.
            BeginLoadRom(ROM);
        }
Пример #2
0
        public Audio(HTMLAudioElement audio, string ID, AudioManager AudioManager)
        {
            _audio  = audio;
            this.ID = ID;
            var self = this;

            _AM = AudioManager;
            //object A = (() => self._OnPlay);
            //Action A = new Action(() => self._OnPlay());

            _audio.OnPlay  = new Action(() => self._OnPlay()).ToDynamic();
            _audio.OnPause = new Action(() => self._OnStop()).ToDynamic();
            //_audio.OnEnded = new Action(() => self._OnStop()).ToDynamic();
            _audio.OnEnded      = new Action(() => self._OnEnd()).ToDynamic();
            _audio.OnTimeUpdate = new Action(() => self._OnUpdate()).ToDynamic();

            _blast = new List <HTMLAudioElement>();
            int maxvoices = 6;
            int voices    = 1;

            while (voices < maxvoices)
            {
                _blast.Add((HTMLAudioElement)_audio.CloneNode());
                voices += 1;
            }

            /*_blast.Add((AudioElement)_audio.CloneNode());
            *  _blast.Add((AudioElement)_audio.CloneNode());
            *  _blast.Add((AudioElement)_audio.CloneNode());
            *  _blast.Add((AudioElement)_audio.CloneNode());*/
            /*_audio.OnPlay = "self._OnPlay()".ToDynamic();
             * _audio.OnPause = "self._OnStop()".ToDynamic();
             * _audio.OnEnded = "self._OnStop()".ToDynamic();*/
        }
Пример #3
0
        private void PlatformInitialize(string fileName)
        {
            Content.ContentManager.BlockContentLoaading = true;

            _audio = new HTMLAudioElement();
            _audio.oncanplaythrough += (e) => Content.ContentManager.BlockContentLoaading = false;
            _audio.src = fileName;
            _audio.load();

            _duration = TimeSpan.FromSeconds(_audio.duration);

            _audio.onended += (e) => MediaPlayer.OnSongFinishedPlaying(null, null);
        }
Пример #4
0
 public Opening()
 {
     _music = new HTMLAudioElement()
     {
         Src = Resource.Audio.Theme
     };
     _music.Play();
     _music.AddEventListener(EventType.Ended, ev =>
     {
         _musicPlayed = true;
         _timePassed  = 0;
     });
 }
Пример #5
0
 public static void Beep()
 {
     if (!Settings.MessageFormBeep)
     {
         return;
     }
     if (snd == null)
     {
         snd     = new HTMLAudioElement();
         snd.src = ResourceManager.GetResourceString("beepSound");
     }
     snd.play();
 }
 public Audio Get(string path)
 {
     path = Directory + path;
     if (data.ContainsKey(path))
     {
         return(data[path]);
     }
     else
     {
         HTMLAudioElement AE = new HTMLAudioElement(path);
         Audio            A  = new Audio(AE, path, this);
         data.Add(path, A);
         return(A);
     }
 }
Пример #7
0
        public void Blast(float volume = 1f)
        {
            var T = App.totalTime;

            if (T - lasttime < 150)
            {
                return;//prevent audio spam.
            }
            if (!IsPlaying)
            {
                Volume = volume;
                Play();
                lasttime = T;
            }
            else
            {
                //((AudioElement)_audio.CloneNode()).Play();
                int i = 0;
                while (i < _blast.Count)
                {
                    HTMLAudioElement A = _blast[i];
                    //if (A.Paused || A.CurrentTime<0.15f || A.Played.Length==0)
                    if (A.Paused || A.CurrentTime < 0.10f || A.Played.Length == 0)
                    {
                        if (A.Paused || A.CurrentTime == 0.0 || A.Played.Length == 0)
                        {
                            A.Volume = volume;
                            A.Play();
                            i        = _blast.Count;
                            lasttime = T;
                        }
                    }
                    i++;
                }
            }
        }
Пример #8
0
        public void Draw()
        {
            if (_message == "")
            {
                return;
            }

            int brightness   = 0;
            var levelContext = _core.Layers.GetStageLayer(0).GetContext();
            var resolution   = _core.Resolution;

            if (!_resourcePool.Loaded)
            {
                levelContext.FillStyle = "rgb(" + (brightness) + "," + (brightness) + "," + (brightness) + ")";
                levelContext.FillRect(0, 0, resolution.Width, resolution.Height);                 // Clear
                levelContext.FillStyle = "white";
                levelContext.Font      = resolution.MultiplyClamp(10) + "px Consolas, monospace";
                levelContext.FillText("Loading...", resolution.MultiplyClamp(4), resolution.MultiplyClamp(12));
                return;
            }

            var data = Data.Instance;

            _image = _resourcePool.Images[Image.Background];
            _audio = _resourcePool.Audio[Audio.Theme];

            if (!_musicPlayed)
            {
                _musicPlayed = true;
                _audio.Play();
            }

            levelContext.DrawImage(_image, 0, 0);

            levelContext.FillStyle = "white";

            levelContext.Font = resolution.MultiplyClamp(10) + "px Consolas, monospace";
            levelContext.FillText("Playing Game", resolution.MultiplyClamp(4), resolution.MultiplyClamp(12));

            levelContext.Font = resolution.MultiplyClamp(20) + "px Consolas, monospace";
            levelContext.FillText("Score: " + data.Score, resolution.MultiplyClamp(4), resolution.MultiplyClamp(42));

            levelContext.Font = resolution.MultiplyClamp(4) + "px Consolas, monospace";
            levelContext.FillText("Press [UP] to win :)", resolution.MultiplyClamp(115), resolution.MultiplyClamp(36.5));

            levelContext.Font = resolution.MultiplyClamp(20) + "px Consolas, monospace";
            levelContext.FillText("Lives: " + data.Lives, resolution.MultiplyClamp(4), resolution.MultiplyClamp(72));

            levelContext.Font = resolution.MultiplyClamp(4) + "px Consolas, monospace";
            levelContext.FillText("Press [DOWN] to lose :(", resolution.MultiplyClamp(107), resolution.MultiplyClamp(67));

            levelContext.Font = resolution.MultiplyClamp(4) + "px Consolas, monospace";
            levelContext.FillText($"'{_image.Width}x{_image.Height}'", resolution.MultiplyClamp(10), resolution.MultiplyClamp(20));

            levelContext.Font = resolution.MultiplyClamp(4) + "px Consolas, monospace";
            levelContext.FillText($"'{_audio.Duration}'", resolution.MultiplyClamp(10), resolution.MultiplyClamp(25));

            levelContext.Font = resolution.MultiplyClamp(6) + "px Consolas, monospace";
            levelContext.FillText(_message, resolution.MultiplyClamp(4), resolution.MultiplyClamp(96));

            if (!_renderedControls)
            {
                _core.RenderActions();
                _renderedControls = true;
            }
        }