示例#1
0
 /// <summary>
 /// Gets the single tag for a Cartridge.
 /// </summary>
 /// <param name="cartridge">The Cartridge to get the tag for.</param>
 /// <returns></returns>
 public CartridgeTag GetCartridgeTag(Cartridge cartridge)
 {
     lock (_syncRoot)
     {
         return(this.SingleOrDefault(ct => ct.Cartridge.Guid == cartridge.Guid));
     }
 }
示例#2
0
        /// <summary>
        /// Gets a displayable full name of the author of this Cartridge.
        /// </summary>
        /// <param name="c"></param>
        /// <returns>The author name and company, aggregated in a presentable
        /// way.</returns>
        public static string GetFullAuthor(this Cartridge c)
        {
            System.Text.StringBuilder sb = new System.Text.StringBuilder();
            bool hasAuthor  = !String.IsNullOrWhiteSpace(c.AuthorName);
            bool hasCompany = !String.IsNullOrWhiteSpace(c.AuthorCompany) &&
                              c.AuthorCompany != c.AuthorName;

            if (hasAuthor || hasCompany)
            {
                if (hasAuthor)
                {
                    sb.Append(c.AuthorName);
                    if (hasCompany)
                    {
                        sb.Append(" (");
                    }
                }
                if (hasCompany)
                {
                    sb.Append(c.AuthorCompany);
                    if (hasAuthor)
                    {
                        sb.Append(")");
                    }
                }
            }

            return(sb.ToString());
        }
示例#3
0
        public void Add(ExpenseDTO item)
        {
            // Найти в бд связанные сущности для списания.
            Cartridge cart = Database.Cartridges.Get(item.Cartridge.Id);
            User      user = Database.Users.Get(item.User.Id);
            Osp       osp  = Database.Osps.Get(item.OspId);
            // Найти баланс ОСП с картриджем списания.
            Balance balance = Database.Balances.Find(x => x.Osp.Id == item.OspId && x.Cartridge.Id == item.Cartridge.Id).FirstOrDefault();

            // Вычесть из баланса количество картриджей в списании.
            balance.Count -= item.Count;
            // Найти последнее списание в ОСП.
            Expense lastExpense = Database.Expenses.Find(x => x.Osp.Id == item.OspId).LastOrDefault();
            // Создать списание по данным DTO.
            Expense newExpense = new Expense()
            {
                Basis     = item.Basis,
                Count     = item.Count,
                Date      = item.Date,
                Delete    = item.Delete,
                Edit      = item.Edit,
                Number    = lastExpense is null ? 1 : lastExpense.Number + 1,
                Cartridge = cart,
                User      = user,
                Osp       = osp
            };

            // Добавить созданное списание в бд.
            Database.Expenses.Create(newExpense);
            // Обновить баланс в БД.
            Database.Balances.Update(balance);
            // Сохранить изменения.
            Database.Save();
        }
示例#4
0
        public Mapper001(Cartridge cartridge)
        {
            this.cartridge = cartridge;

            PRGOffsets[0] = 0;
            PRGOffsets[1] = (cartridge.PRGROM_16KBankCount - 1) * 0x4000;
        }
示例#5
0
        public string DeletePublicEndpoints(string cartName)
        {
            Manifest      cart              = Cartridge.GetCartridge(cartName);
            StringBuilder output            = new StringBuilder();
            Dictionary <string, string> env = Environ.ForGear(this.ContainerDir);

            try
            {
                foreach (Endpoint endpoint in cart.Endpoints)
                {
                    string port = env[endpoint.PrivatePortName];

                    // TODO: will have to change this once prison is integrated
                    Network.CloseFirewallPort(port);

                    output.AppendFormat("NOTIFY_ENDPOINT_DELETE: {0} {1}", NodeConfig.Values["PUBLIC_IP"], port);
                }

                Logger.Warning(@"Deleted all public endpoints for cart {0} in gear {1}", cartName, this.Uuid);
            }
            catch (Exception ex)
            {
                Logger.Warning(@"Couldn't delete all public endpoints for cart {0} in gear {1}: {2} - {3}", cartName, this.Uuid, ex.Message, ex.StackTrace);
            }

            return(output.ToString());
        }
示例#6
0
        public void MountCartridge(Cartridge cartridge)
        {
            if (cartridge == null)
            {
                throw new ArgumentNullException("cartridge");
            }

            if (m_CurrentCartridge != null)
            {
                ReleaseCartridge();
            }

            m_CurrentCartridge = cartridge;
            m_CurrentCartridge.Open();

            OnCartridgeChanged(cartridge);

            logger.Trace("A catridge has been inserted into the slot");
            logger.Trace("Cartridge Rom Header ==========================");
            logger.Trace("Name:         " + m_CurrentCartridge.RomImage.Name);
            logger.Trace("Serial:       " + m_CurrentCartridge.RomImage.Serial.ToString());
            logger.Trace("Computed CIC: " + m_CurrentCartridge.RomImage.BootRomInformation.CIC.GetGoodName());
            logger.Trace("Linked CIC:   " + ((m_CurrentCartridge.LockoutKey != null) ? m_CurrentCartridge.LockoutKey.ToString() : "None"));
            logger.Trace("CRC1:         " + m_CurrentCartridge.RomImage.CRC1.ToString("X8"));
            logger.Trace("CRC2:         " + m_CurrentCartridge.RomImage.CRC2.ToString("X8"));
            logger.Trace("Region:       " + m_CurrentCartridge.RomImage.Region.ToString());
            logger.Trace("VI Rate:      " + m_CurrentCartridge.RomImage.GetVIRate().ToString());
        }
示例#7
0
        public void Run(CancellationToken token)
        {
            if (!Options.RomSpecified || !Options.RomFile.Exists)
            {
                throw new ArgumentException("The ROM path doesn't exist: " + Options.RomFile);
            }

            var rom = new Cartridge(Options);

            Gameboy = CreateGameboy(rom);

            if (Options.Headless)
            {
                Gameboy.Run(token);
                return;
            }

            if (Display is IRunnable runnableDisplay)
            {
                _runnables.Add(new Thread(() => runnableDisplay.Run(token))
                {
                    Priority = ThreadPriority.AboveNormal
                });
            }

            _runnables.Add(new Thread(() => Gameboy.Run(token))
            {
                Priority = ThreadPriority.AboveNormal
            });

            _runnables.ForEach(t => t.Start());
        }
示例#8
0
        private void buttonOverlay_Click(object sender, EventArgs e)
        {
            var selector = new SelectorOverlay(CurrentOverlay);

            selector.ShowDialog();
            CurrentOverlay = selector.SelectedOverlay;

            if (selector.None)
            {
                buttonOverlay.BackgroundImage = Properties.Resources.none;
                CurrentOverlay = null;
            }

            else
            {
                if (CurrentOverlay != null)
                {
                    buttonOverlay.BackgroundImage = CurrentOverlay.Image;

                    if (CurrentOverlay.Asociate)
                    {
                        CurrentCartridge = Cartridge.Create(CurrentOverlay.Cartridge);
                        buttonCart.Image = GetCartridgeImage(CurrentOverlay.Cartridge);
                    }
                }
            }
        }
示例#9
0
        public CartridgeTest()
        {
            var obj          = Resources.ResourceManager.GetObject("sample1");
            var binaryStream = new MemoryStream((byte[])obj);

            sut = new Cartridge(binaryStream);
        }
示例#10
0
        public async Task <IActionResult> SendCartrige(Guid?id, [Bind("Id", "InventoryNumber", "PlaceId")] Cartridge cartrige)
        {
            if (cartrige.Id != id)
            {
                return(NotFound());
            }
            if (!ModelState.IsValid)
            {
                ViewBag.Places = _context.Offices.Include(p => p.City);
                return(View(cartrige));
            }

            cartrige.PendingConfirmation = true;
            try {
                var entry = _context.Cartridges.Attach(cartrige);
                entry.Property(c => c.PlaceId).IsModified             = true;
                entry.Property(c => c.PendingConfirmation).IsModified = true;
                await _context.SaveChangesAsync();
            } catch (DbUpdateConcurrencyException) {
                if (_context.Cartridges.Any(c => c.Id == id))
                {
                    return(NotFound());
                }
            }
            return(RedirectToAction(nameof(Index)));
        }
示例#11
0
        public ScreenController(AppDelegate appDelegate, Cartridge cart, Boolean restore)
        {
            // Save for later use
            this.appDelegate = appDelegate;
            this.cart        = cart;
            this.restore     = restore;

            // Set color of NavigationBar and NavigationButtons (TintColor)
            if (new Version(UIDevice.CurrentDevice.SystemVersion) >= new Version(7, 0))
            {
                NavigationBar.SetBackgroundImage(Images.BlueTop, UIBarMetrics.Default);
            }
            else
            {
                NavigationBar.SetBackgroundImage(Images.Blue, UIBarMetrics.Default);
            }

            // Create Location Manager
            locationManager = new CLLocationManager();
            locationManager.DesiredAccuracy = CLLocation.AccurracyBestForNavigation;
            if (CLLocationManager.LocationServicesEnabled)
            {
                locationManager.StartUpdatingLocation();
            }

            // Now check, if location is accurate enough
            checkLocation = new CheckLocation(this, locationManager);
            PushViewController(checkLocation, true);
        }
示例#12
0
        static void Main(string[] args)
        {
            var cart = new Cartridge();
            cart.LoadFromFile(@"/home/jp/ROMs/Tetris.gb");

            var mmu = new Mmu();
            var cpu = new Cpu(mmu, new Registers());
            var gameboy = new GameBoy(cpu, mmu, cart);

            gameboy.PowerUp();

            gameboy.Cpu.Registers.PC.Value = 0x00;

            var cycles = 0;

            while (true)
            {
                gameboy.Cpu.Cycle();
                cycles++;

                if(cpu.Registers.PC.Value == 0x00e9)
                {
                    Console.WriteLine("End of boot");
                    Console.ReadLine();
                }

                Console.WriteLine($"Cycle: {cycles}");

                // Hack: until we emulate interrupts properly, just set the vblank manually
                gameboy.Mmu.WriteByte(0xFF44, 144);
            }
        }
示例#13
0
        static void Main(string[] args)
        {
            var rifleInfo = new RifleInfo
            {
                Name              = "My Rifle",
                BarrelTwist       = Length.FromInches(11.25), //1:11.25
                ZeroingConditions = new WeatherCondition
                {
                    Altitude         = Length.FromMeters(0),   //sea level
                    Barometer        = Pressure.FromPsi(14.7), //sea level
                    RelativeHumidity = 0.5,                    //in percentage from 0.0 to 1.0 (0% - 100%)
                    Temperature      = Temperature.FromDegreesCelsius(30)
                }
            };

            var ammoInfo = new Cartridge
            {
                MuzzleVelocity = Speed.FromMetersPerSecond(790),
                BC             = 0.505,
                DragFunction   = DragFunction.G1,
                Name           = "My Ammo",
                WeightGrains   = 175,
                Length         = Length.FromInches(1.240),
                Caliber        = Length.FromInches(0.308)
            };

            var scopeInfo = new Scope
            {
                Name                  = "My Scope",
                Height                = Length.FromCentimeters(4),
                ZeroDistance          = Length.FromMeters(100),
                ElevationClicksPerMOA = 1,
                WindageClicksPerMOA   = 0.5
            };

            var locationInfo = new ShotLocationInfo
            {
                Latitude    = 45, //degrees
                ShotAzimuth = 270 //degrees -> west
            };

            var currentWeatherConditions = new WeatherCondition
            {
                Altitude         = Length.FromMeters(0),   //sea level
                Barometer        = Pressure.FromPsi(14.7), //sea level
                RelativeHumidity = 0.5,                    //in percentage from 0.0 to 1.0 (0% - 100%)
                Temperature      = Temperature.FromDegreesCelsius(30)
            };

            var rifle = new Rifle(rifleInfo, scopeInfo, ammoInfo);

            var solution = rifle.Solve(
                0.0, //shooting angle
                Speed.FromKilometersPerHour(10),
                90,  //wind direction angle (degrees)
                Length.FromMeters(500),
                currentWeatherConditions,
                locationInfo);
        }
示例#14
0
        public Gameboy(
            GameboyOptions options,
            Cartridge rom,
            IDisplay display,
            IController controller,
            ISoundOutput soundOutput,
            SerialEndpoint serialEndpoint)
        {
            _display  = display;
            _gbc      = rom.Gbc;
            SpeedMode = new SpeedMode();

            var interruptManager = new InterruptManager(_gbc);

            _timer = new Timer(interruptManager, SpeedMode);
            Mmu    = new Mmu();

            var oamRam = new Ram(0xfe00, 0x00a0);

            _dma        = new Dma(Mmu, oamRam, SpeedMode);
            _gpu        = new Gpu(display, interruptManager, _dma, oamRam, _gbc);
            _hdma       = new Hdma(Mmu);
            _sound      = new Sound(soundOutput, _gbc);
            _serialPort = new SerialPort(interruptManager, serialEndpoint, SpeedMode);

            Mmu.AddAddressSpace(rom);
            Mmu.AddAddressSpace(_gpu);
            Mmu.AddAddressSpace(new Joypad(interruptManager, controller));
            Mmu.AddAddressSpace(interruptManager);
            Mmu.AddAddressSpace(_serialPort);
            Mmu.AddAddressSpace(_timer);
            Mmu.AddAddressSpace(_dma);
            Mmu.AddAddressSpace(_sound);

            Mmu.AddAddressSpace(new Ram(0xc000, 0x1000));
            if (_gbc)
            {
                Mmu.AddAddressSpace(SpeedMode);
                Mmu.AddAddressSpace(_hdma);
                Mmu.AddAddressSpace(new GbcRam());
                Mmu.AddAddressSpace(new UndocumentedGbcRegisters());
            }
            else
            {
                Mmu.AddAddressSpace(new Ram(0xd000, 0x1000));
            }

            Mmu.AddAddressSpace(new Ram(0xff80, 0x7f));
            Mmu.AddAddressSpace(new ShadowAddressSpace(Mmu, 0xe000, 0xc000, 0x1e00));

            Cpu = new Cpu(Mmu, interruptManager, _gpu, display, SpeedMode);

            interruptManager.DisableInterrupts(false);

            if (!options.UseBootstrap)
            {
                InitiliseRegisters();
            }
        }
示例#15
0
    void Start()
    {
        //int dis = Screen.currentResolution.refreshRate;
        //QualitySettings.vSyncCount = 2;

        Cartridge cart = new Cartridge();

        processor = new NLuaPicoEmulator();

        /*
         * WWW www = new WWW(filename);
         * while(!www.isDone);
         *
         *
         * cart.LoadFromP8PNG(new MemoryStream(www.bytes));
         */

        cart.LoadFromP8PNG(new FileStream(filename, FileMode.Open));

        // Load script
        processor.LoadCartridge(cart);
        //processor2.LoadCartridge(cart);

        mesh.material.SetTexture("_MainTex", processor.Texture);
        //mesh2.material.SetTexture("_MainTex", processor2.Texture);

        /*
         * processor.Run(@"a = {5,6} b = {""haha""}");
         * processor.Run(@"add(a, b)");
         * processor.Run(@"foreach(a, dprint)");
         * processor.Run(@"del(a, b)");
         * processor.Run(@"foreach(a, dprint)");
         *
         * processor.Run(@"function next_room()
         * dprint(""next_room"")
         * if room.x==2 and room.y==1 then
         * music(30,500,7)
         * elseif room.x==3 and room.y==1 then
         * music(20,500,7)
         * elseif room.x==4 and room.y==2 then
         * music(30,500,7)
         * elseif room.x==5 and room.y==3 then
         * music(30,500,7)
         * end
         *
         * if room.x==7 then
         *      load_room(0,room.y+1)
         * else
         *      load_room(room.x+1,room.y)
         * end
         * end");*/

        #if UNITY_EDITOR
        QualitySettings.vSyncCount = 0;      // VSync must be disabled
        #endif
        Application.targetFrameRate = 30;

        initialized = true;
    }
示例#16
0
 public void ReleaseCartridge()
 {
     if (m_CurrentCartridge != null)
     {
         m_CurrentCartridge = null;
         OnCartridgeChanged(null);
     }
 }
示例#17
0
        public void CorrectCartTypeRead()
        {
            cart = new Cartridge(testCartFile);
            Assert.That(cart.Info.Type, Is.EqualTo(CartridgeType.MBC1));

            cart = new Cartridge(testCartFileRam);
            Assert.That(cart.Info.Type, Is.EqualTo(CartridgeType.MBC1_RAM_BATTERY));
        }
示例#18
0
        public void MountCartridge(Cartridge cartridge)
        {
            if (this.ContainsKey(c_CartAddress))
                throw new InvalidOperationException("There is a cartridge already mounted");

            m_CartSize = cartridge.PiCartridgeStream.Length;
            Add(c_CartAddress, cartridge.PiCartridgeStream);
        }
        public ActionResult DeleteConfirmed(int id)
        {
            Cartridge cartridge = db.Cartridges.Find(id);

            db.Cartridges.Remove(cartridge);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
示例#20
0
        public void Setup()
        {
            var c = GetTestCartridge();

            Assert.IsNotNull(c);

            cartridge = c;
        }
示例#21
0
        public ActionResult DeleteConfirmed(int id)
        {
            Cartridge cartridge = db.CartridgeRepository.GetByID(id);

            db.CartridgeRepository.Delete(cartridge);
            db.Save();
            return(RedirectToAction("Index"));
        }
        public Cartridge Update(Cartridge cartridgeChanges)
        {
            var cartridge = context.Cartridges.Attach(cartridgeChanges);

            cartridge.State = Microsoft.EntityFrameworkCore.EntityState.Modified;
            context.SaveChanges();
            return(cartridgeChanges);
        }
示例#23
0
 private void SyncAllByteArrayDomains()
 {
     SyncByteArrayDomain("BIOS1", BIOS01);
     SyncByteArrayDomain("BIOS2", BIOS02);
     Cartridge.SyncByteArrayDomain(this);
     //SyncByteArrayDomain("ROM", Rom);
     SyncByteArrayDomain("VRAM", VRAM);
 }
示例#24
0
 public Memory(Cartridge cartridge, GPU gpu, CPURegisters cpuRegisters, GPURegisters gpuRegisters, Keyboard keyboard)
 {
     this.cartridge    = cartridge;
     this.gpu          = gpu;
     this.cpuRegisters = cpuRegisters;
     this.gpuRegisters = gpuRegisters;
     this.keyboard     = keyboard;
 }
示例#25
0
        static void Main(string[] args)
        {
            Cartridge c       = null;
            Machine   machine = Machine.FromType("Uprint SE");


            c = new Cartridge(encrypted, machine, eepromUID);
        }
示例#26
0
 public void InsertCartridge(Cartridge cartridge)
 {
     if (gameThread.IsBusy)
     {
         throw new InvalidOperationException("Game is running.");
     }
     memory.Cartridge = cartridge;
 }
示例#27
0
        protected bool addFactoryCartridge(Brass brass, Bullet bullet, CartridgeLoad cartridgeLoad, bool addToStore)
        {
            try
            {
                using (var transaction = new TransactionScope())
                {
                    int brassId;
                    if (this.brasses.OfType <Brass>().Where(b => b.CaliberId == brass.CaliberId && b.ManufacturerId == brass.ManufacturerId && b.MaterialId == brass.MaterialId && brass.TimesFired == 0).Any())
                    {
                        var existingBrass = this.brasses.OfType <Brass>().Where(b => b.CaliberId == brass.CaliberId && b.ManufacturerId == brass.ManufacturerId && b.MaterialId == brass.MaterialId && b.TimesFired == 0).First();
                        brassId = existingBrass.Id;
                    }
                    else
                    {
                        brass.TimesFired = 0;
                        brassId          = this.brassService.Add(brass);
                    }

                    Bullet existingBullet;
                    int    bulletId;
                    var    calDiameter = this.calibers.OfType <Caliber>().Where(c => c.Id == brass.CaliberId).First();
                    bullet.Diameter = calDiameter.Diameter;
                    if (this.bullets.OfType <Bullet>().Where(b => b.Diameter == bullet.Diameter && b.ManufacturerId == bullet.ManufacturerId && b.MaterialId == bullet.MaterialId && b.Mass == bullet.Mass).Any())
                    {
                        existingBullet = this.bullets.OfType <Bullet>().Where(b => b.Diameter == bullet.Diameter && b.ManufacturerId == bullet.ManufacturerId && b.MaterialId == bullet.MaterialId && b.Mass == bullet.Mass).First();
                        bulletId       = existingBullet.Id;
                    }
                    else
                    {
                        bullet.DiameterUnitId = calDiameter.DiameterUnitId;
                        bulletId = this.bulletService.Add(bullet);
                    }

                    cartridgeLoad.BulletId = bulletId;
                    var cartridgeLoadId = this.cartridgeLoadService.Add(cartridgeLoad);

                    var cartridge = new Cartridge
                    {
                        CartridgeLoadId = cartridgeLoadId,
                        BrassId         = brassId,
                        ManufacturerId  = brass.ManufacturerId
                    };
                    var cartridgeId = this.cartridgeService.Add(cartridge);

                    if (addToStore)
                    {
                    }

                    transaction.Complete();
                }

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
示例#28
0
        public override void RowSelected(UITableView tableView, NSIndexPath indexPath)
        {
            Cartridge activeCart = cartList [indexPath.Row];

            if (OnSelect != null)
            {
                OnSelect(activeCart);
            }
        }
示例#29
0
 public void OnSelect(Cartridge cart)
 {
     if (cartDetail == null)
     {
         cartDetail = new CartridgeDetail(appDelegate);
     }
     NavigationController.PushViewController(cartDetail, true);
     cartDetail.Cartridge = cart;
 }
示例#30
0
        public GameBoy()
        {
            var ram       = new Ram();
            var cartridge = new Cartridge();

            _memory     = new MemoryController(ram, cartridge);
            _cpu        = new Cpu(_memory);
            _compositor = new Compositor(_memory);
        }
示例#31
0
 private void OpenFileCommandExecute()
 {
     cartridge = OpenFileService.OpenCartridgeFile();
     if (cartridge != null)
     {
         console.InsertCartridge(cartridge);
         (Reset as RelayCommand).Execute();
     }
 }
示例#32
0
	protected override void Fire(Cartridge cartridge) {
		GameObject projectile = cartridge.InstantiateProjectile;
		projectile.transform.position = barrelDirection.position;
		projectile.transform.rotation = barrelDirection.rotation;
		projectile.GetComponent<Projectile>().RiflingTwist = riflingTwist;
		//检查是否配置消音器
		if (HasInstalled("Silencer")) {
				Debug.LogWarning("This function is currently not available!");
				return;
		}
		//生成火花
		foreach (Transform flameEmissionPoint in flameEmissionPoints) {
			Object.Instantiate(flameEffect, flameEmissionPoint.position, flameEmissionPoint.rotation);
		}
		GetComponent<AudioSource>().PlayOneShot(firingSound);
	}
示例#33
0
		internal GWS(
			Cartridge cart,
			Character player,
			IPlatformHelper platformHelper,
			LuaDataFactory dataFactory)
		{
			this._dataFactory = dataFactory;

			this._cartridgeEntity = cart;
			this._cartridge = (LuaDataContainer)cart.DataContainer;
			this._player = (LuaDataContainer)player.DataContainer;

			this._platformHelper = platformHelper;

			ZonePoint pos = player.ObjectLocation;

			this._latitude = pos.Latitude;
			this._longitude = pos.Longitude;
			this._altitude = pos.Latitude;
		} 
 public CartridgeChangedEventArgs(Cartridge newCartridge)
 {
     m_NewCartridge = newCartridge;
 }
        private void OnCartridgeChanged(Cartridge cartridge)
        {
            var e = CartridgeChanged;

            if (e != null)
            {
                e(this, new CartridgeChangedEventArgs(cartridge));
            }
        }
示例#36
0
		public void LoadMetadata(Stream inputStream, Cartridge cart)
		{
			try
			{
				// Open binary reader for reading stream
				using (BinaryReader reader = new BinaryReader(inputStream))
				{
					loadGWCHeader(reader, cart);
				}

			}
			catch (Exception e)
			{
				throw new Exception("An exception has occurred while reading the GWC file header.", e);
			}
		}
示例#37
0
		private void loadGWCHeader(BinaryReader reader, Cartridge cart)
		{
			int maxMediaFiles;
			int posterId;
			int iconId;

			Dictionary<int, int> objects;

			// Reads the file offsets.
			maxMediaFiles = loadGWCOffsets(reader, out objects);

			// Reads header length.
			int headerLength = reader.ReadInt32();

			// Reads the starting location.
			cart.StartingLocationLatitude = reader.ReadDouble();
			cart.StartingLocationLongitude = reader.ReadDouble();
			cart.StartingLocationAltitude = reader.ReadDouble();

			// The cartridge is playable anywhere if both its starting location coordinates are 360.
			if (cart.StartingLocationLatitude == 360 && cart.StartingLocationLongitude == 360)
			{
				cart.IsPlayAnywhere = true;
			}

			// Dates are in seconds beyond 2004-02-10 01:00 (it's a palindrom, if you write it as 10-02-2004 ;-) )
			long seconds = reader.ReadInt64 ();

			cart.CreateDate = new DateTime (2004, 02, 10, 01, 00, 00);

			if (seconds != 0)
				cart.CreateDate = cart.CreateDate.AddSeconds (seconds);

			// Load ids for poster and incon
			posterId = reader.ReadInt16();
			iconId = reader.ReadInt16();

			// Get activity as string and convert it to type ActivityType
			string activity = readCString(reader);
			#if SILVERLIGHT
			int enumLength = 0;
			foreach (FieldInfo fi in cart.ActivityType.GetType().GetFields(BindingFlags.Static | BindingFlags.Public))
				enumLength++;
			#else
			int enumLength = Enum.GetValues(cart.ActivityType.GetType()).Length;
			#endif
			for (int i = 0; i < enumLength; i++)
				if (((Live.WherigoCartridge.ActivityTypes)i).ToString().Equals(activity))
					cart.ActivityType = (Live.WherigoCartridge.ActivityTypes)i;

			// Read name of player
			cart.Player = readCString(reader);
			reader.ReadInt32();
			reader.ReadInt32();
			cart.Name = readCString(reader);
			cart.Guid = readCString(reader);
			cart.LongDescription = readCString(reader);
			cart.StartingDescription = readCString(reader);
			cart.Version = readCString(reader);
			cart.AuthorName = readCString(reader);
			cart.AuthorCompany = readCString(reader);
			cart.Device = readCString(reader);
			reader.ReadInt32();
			cart.CompletionCode = readCString(reader);

			// Saves the current reader position.
			long oldReaderPosition = reader.BaseStream.Position;

			// Read poster
			if (posterId > 0 && posterId < maxMediaFiles)
				cart.Poster = loadGWCMedia(reader, cart.Filename, objects[posterId], posterId, maxMediaFiles);

			// Read icon
			if (iconId > 0 && iconId < maxMediaFiles)
				cart.Icon = loadGWCMedia(reader, cart.Filename, objects[iconId], iconId, maxMediaFiles);

			// Restores the reader position
			reader.BaseStream.Position = oldReaderPosition;
		}
示例#38
0
		public void Load(Stream inputStream, Cartridge cart)
		{
			try
			{
				// Open binary reader for reading the gwc file
				using (BinaryReader reader = new BinaryReader(inputStream))
				{
					// Loads the media file offsets.
					Dictionary<int, int> objects;
					int maxMediaFiles = loadGWCOffsets(reader, out objects);

					// Loads header
					loadGWCHeader(reader, cart);

					// Create array for resources
					cart.Resources = new Media[maxMediaFiles];

					// Read Lua binary

					// Get pos of resources in stream, ...
					int pos = objects[0];
					// ... jump to this position ...
					reader.BaseStream.Position = pos;
					// ... and read resources
					long fileSize = reader.ReadInt32();
					cart.Resources[0] = new Media();
					cart.Resources[0].Data = new byte[fileSize];
					reader.Read(cart.Resources[0].Data, 0, cart.Resources[0].Data.Length);

					int i = 1;
					foreach (var item in objects.Where(kv => kv.Key > 0))
					{
						Media media = loadGWCMedia(reader, cart.Filename, item.Value, item.Key, maxMediaFiles);
						cart.Resources[i] = media;
						i++;
					}
				}

				// The cartridge has been fully loaded.
				cart.IsLoaded = true;
			}
			catch (Exception e)
			{
				throw new Exception(String.Format("An exception has occurred while reading the GWC file: {0}.", e.Message), e);
			}
		}
示例#39
0
文件: Magazine.cs 项目: Codingboy/td
	void push(Cartridge cartridge)
	{
		cartridges.Push(cartridge);
	}
示例#40
0
        /// <summary>
        /// Load a cartridge file of unkown type into an Cartridge object.
        /// </summary>
        /// <param name="inputStream">Stream containing the cartridge file.</param>
        /// <param name="cart">Cartridge object, which should be used.</param>
        public static void Load(Stream inputStream, Cartridge cart)
        {
            // Gets the first loader that can load the stream.
			CartridgeFileFormat fFormat = GetFileFormat(inputStream);
			ICartridgeLoader loader = _loaders.FirstOrDefault(icl => icl.CanLoad(fFormat));

			if (loader == null)
				throw new InvalidOperationException("The file format is not supported.");

			// Loads the cartridge.
			loader.Load(inputStream, cart);
        }
 public void ReleaseCartridge()
 {
     if (m_CurrentCartridge != null)
     {
         m_PIDataStream.UnmountCartridge();
         m_CurrentCartridge = null;
         OnCartridgeChanged(null);
     }
 }
示例#42
0
	protected virtual void Fire(Cartridge cartridge) {
	}
        public void MountCartridge(Cartridge cartridge)
        {
            if (cartridge == null)
                throw new ArgumentNullException("cartridge");

            if (m_CurrentCartridge != null)
                ReleaseCartridge();

            m_CurrentCartridge = cartridge;
            m_CurrentCartridge.Open();
            m_PIDataStream.MountCartridge(cartridge);

            OnCartridgeChanged(cartridge);

            logger.Trace("A catridge has been inserted into the slot");
            logger.Trace("Cartridge Rom Header ==========================");
            logger.Trace("Name:         " + m_CurrentCartridge.RomImage.Name);
            logger.Trace("Serial:       " + m_CurrentCartridge.RomImage.Serial.ToString());
            logger.Trace("Computed CIC: " + m_CurrentCartridge.RomImage.BootRomInformation.CIC.GetGoodName());
            logger.Trace("Linked CIC:   " + ((m_CurrentCartridge.LockoutKey != null) ? m_CurrentCartridge.LockoutKey.ToString() : "None"));
            logger.Trace("CRC1:         " + m_CurrentCartridge.RomImage.CRC1.ToString("X8"));
            logger.Trace("CRC2:         " + m_CurrentCartridge.RomImage.CRC2.ToString("X8"));
            logger.Trace("Region:       " + m_CurrentCartridge.RomImage.Region.ToString());
            logger.Trace("VI Rate:      " + m_CurrentCartridge.RomImage.GetVIRate().ToString());
        }
示例#44
0
	protected override void Fire(Cartridge cartridge) {
		GameObject shell = cartridge.InstantiateShell;
		EjectShell(shell);
	}