public void AddMask() { int x = Random.Next(Darkness.Width, Game.ActualFormWidth - Mask.Width - Goal.Width); int y = Random.Next(70, Game.ActualFormHeight - Mask.Height); Masks.Add(new Mask(x, y)); }
protected override void onStart() { unreadMessages = chatContent.transform.GetChild(0); playerMessagePrefab = chatContent.GetComponent <ChatPrefabs>().PlayerMessage; advisorMessagePrefab = chatContent.GetComponent <ChatPrefabs>().AdvisorMessage; panelAnimator = chatContent.GetComponentInParent <Animator>(); scrollRect = chatContent.GetComponentInParent <ScrollRect>(); // Récupération de l'échelle de temps time = simulationData.GetComponent <TimeScale>(); // Récupération de données de la frontière frontierPermeability = simulationData.GetComponent <FrontierPermeability>(); // Récupération de données des impôts de entreprises tax = simulationData.GetComponent <Tax>(); // Récupération de données du télétravail remoteworking = simulationData.GetComponent <Remoteworking>(); // Récupération de données du chômage partiel shortTimeWorking = simulationData.GetComponent <ShortTimeWorking>(); // Récupération des masques masks = simulationData.GetComponent <Masks>(); // Récupération des données du vaccin vaccine = simulationData.GetComponent <Vaccine>(); f_chatMessage.addEntryCallback(OnNewMessage); }
public void MascaraNaoPodeSerNullOuVazio(string mask) { Action act = () => Masks.Apply(mask, "012345678909"); act.Should().ThrowExactly <ArgumentNullException>() .And.ParamName.Should().Be("mask"); }
private void CheckDarknessCollisions() { for (int i = 0; i < Masks.Count; i++) { if (Darkness.CheckMask(Masks[i])) { Masks.Remove(Masks[i]); } } for (int i = 0; i < Disinfectants.Count; i++) { if (Darkness.CheckDisinfectant(Disinfectants[i])) { Disinfectants.Remove(Disinfectants[i]); } } for (int i = 0; i < SickPersons.Count; i++) { if (Darkness.CheckSickPerson(SickPersons[i])) { SickPersons.Remove(SickPersons[i]); } } if (Hero.CheckDarkness(Darkness)) { IsEnabled = false; CustomMessageBox cmb = new CustomMessageBox(); cmb.SetMessage("The darkness caught you. Game over!"); cmb.SetRetryButton(true); cmb.Show(); } }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Load += (s, e) => { var data = _mPedido.Query().Select("desconto").Where("id", idPedido).FirstOrDefault <Model.Pedido>(); if (data == null) { return; } if (data.Desconto > 0) { dinheiro.Text = Validation.FormatPrice(data.Desconto); } }; btnSalvar.Click += (s, e) => Save(); porcentagem.TextChanged += (s, e) => { if (string.IsNullOrEmpty(porcentagem.Text)) { return; } var dataPedido = _mPedido.Query().Select("id", "total").Where("id", idPedido).First <Model.Pedido>(); var dP = Validation.ConvertToDouble(porcentagem.Text) / 100 * dataPedido.Total; valorPorcentagem.Text = Validation.FormatPrice(dP); }; porcentagem.KeyPress += (s, e) => Masks.MaskDouble(s, e); dinheiro.KeyPress += (s, e) => Masks.MaskDouble(s, e); }
// Start is called before the first frame update void Start() { move = GetComponent <PlayerMove>(); jump = GetComponent <PlayerJump>(); climb = GetComponent <PlayerClimb>(); playerMask = GetComponent <Masks>(); playerItem = GetComponent <Item>(); maskController = FindObjectOfType <MaskController>(); inventory = FindObjectOfType <Inventory>(); speech = FindObjectOfType <SpeechScript>(); anim = GetComponent <Animator>(); grapple = FindObjectOfType <GrapplingHook>(); hasJumped = false; hasWallJumped = false; isClimbing = false; isZipping = false; moving = true; launched = false; hasRune = false; GetComponent <DistanceJoint2D>().enabled = false; maskInventory = new List <string>(); itemInventory = new List <string>(); maskCounter = 0; itemCounter = 0; knockbackCount = knockbackLength; }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Masks.SetToUpper(this); Load += (s, e) => { search.Select(); DataTableStart(); }; label5.Click += (s, e) => Close(); btnExit.Click += (s, e) => Close(); Adicionar.Click += (s, e) => EditImposto(true); Editar.Click += (s, e) => EditImposto(); GridListaImpostos.DoubleClick += (s, e) => EditImposto(); search.TextChanged += (s, e) => { timer.Stop(); timer.Start(); Loading.Visible = true; GridListaImpostos.Visible = false; }; //search.KeyDown += KeyDowns; //GridListaImpostos.KeyDown += KeyDowns; btnHelp.Click += (s, e) => Support.OpenLinkBrowser(Configs.LinkAjuda); using (var b = workerBackground) { b.DoWork += async(s, e) => { dataTable = await _controller.GetDataTable(); }; b.RunWorkerCompleted += async(s, e) => { await _controller.SetTable(GridListaImpostos, dataTable); Loading.Visible = false; GridListaImpostos.Visible = true; }; } timer.AutoReset = false; timer.Elapsed += (s, e) => search.Invoke((MethodInvoker) delegate { DataTable(); Loading.Visible = false; GridListaImpostos.Visible = true; }); search.Enter += async(s, e) => { await Task.Delay(100); DataTable(); }; }
public MaskDetails ToMaskDetails() { return(new MaskDetails { Masks = Masks.Select(m => m.ToMaskInfo()).ToList(), Requirements = Requirements }); }
public unsafe ComponentTypes(ComponentType a) { this.m_sorted = new ResizableArray64Byte <int>(); this.m_masks = new Masks(); this.m_sorted.Length = 1; SortingUtilities.InsertSorted((int *)this.m_sorted.GetUnsafePointer(), 0, a.TypeIndex); this.ComputeMasks(); }
public MaskDetailsModel ToMaskDetailsModel() { return(new MaskDetailsModel { Masks = Masks.Select(m => m.ToMaskInfoModel()).ToList(), Requirements = Requirements }); }
private void Initialize() { #region units //primary value: radians string[] angles = { "radian", "mil", "grad", "degree", "minute", "second", "point", "1/16 circle", "1/10 circle", "1/8 circle", "1/6 circle", "1/4 circle", "1/2 circle", "full circle " }; this.Units = angles; #endregion #region conversions double[] anglesConversions = { 1, //radian 0 1018.5916358, //mil 1 63.661977237, //grad 2 57.295779513, //degree 3 3437.7467707, //minute 4 206264.80625, //second 5 5.0929581789, //point 6 2.54647908951, //1/16 circle 7 1.59154943091, //1/10 circle 8 1.27323954471, //1/8 circle 9 0.954929658551, //1/6 circle 10 0.636619772371, //1/4 circle 11 0.318309886182, //1/2 circle 12 0.15915494309 //full circle 13 }; this.Conversions = anglesConversions; #endregion #region filters string[] angleFilters = { }; this.Filters = angleFilters; #endregion #region masks int[] angleCommon = { 3, 0, 1, 4, 5, 6 }; Masks.Add(angleCommon); #endregion }
private void UpdateMasks() { Masks.Clear(); foreach (var mask in myPresentation.GetModule <INodeMaskModule>().Items) { Masks.Add(new Entry(mask, myPresentation)); } }
public void MaskedMemCpy_MaskedMemCopyTestsData_HasExpectedMask() { var mask = Masks.GetTypeMask <MemMaskTestData_Mask>(); using (var expectedMask = DeterminismTestUtility.GenerateMask(48, i => MaskedFields_MemMaskTestData.Contains(i % 12))) { Assert.That(mask, Is.EquivalentTo(expectedMask), DeterminismTestUtility.PrintAll(mask, expectedMask)); } }
private byte[] GetSalt() { var data = Masks.Skip(38).Take(12).ToArray(); if (data.Length != 12) { throw new CryptographicException("Ошибка в данных masks.key."); } return(data); }
private byte[] GetMasksKey() { var data = Masks.Skip(4).Take(32).Reverse().ToArray(); if (data.Length != 32) { throw new CryptographicException("Ошибка в данных masks.key."); } return(data); }
public override int GetHashCode() { unchecked { int hash = 13; hash = (hash * 7) + BitsPerPixel.GetHashCode(); hash = (hash * 7) + Masks.GetHashCode(); return(hash); } }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Masks.SetToUpper(this); Load += (s, e) => Carregar(); label6.Click += (s, e) => Close(); btnExit.Click += (s, e) => Close(); btnSalvar.Click += (s, e) => { _modelImposto.Id = idImpSelected; _modelImposto.Nome = nome.Text; _modelImposto.Cfop = cfop.Text; GetImpostos(0); if (_modelImposto.Save(_modelImposto)) { DialogResult = DialogResult.OK; Close(); } }; btnRemover.Click += (s, e) => { var data = _modelImposto.Remove(idImpSelected); if (data) { Close(); } }; Icms.SelectedValueChanged += (s, e) => SetIcms(); addCfop.Click += (s, e) => { var form = new Cfops { TopMost = true }; if (form.ShowDialog() == DialogResult.OK) { // _mPedido.Id = Id; // _mPedido.Colaborador = PedidoModalClientes.Id; // _mPedido.Save(_mPedido); // LoadData(); } }; cfop.KeyPress += (s, e) => Masks.MaskOnlyNumbers(s, e, 4); btnHelp.Click += (s, e) => Support.OpenLinkBrowser(Configs.LinkAjuda); }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Masks.SetToUpper(this); ToolHelp.Show("Título para identificar a Mesa.", pictureBox1, ToolHelp.ToolTipIcon.Info, "Ajuda!"); ToolHelp.Show("A quantidade de pessoas que cabem na mesa.", pictureBox5, ToolHelp.ToolTipIcon.Info, "Ajuda!"); Shown += (s, e) => { mesa.Focus(); if (IdMesa > 0) { _mMesas = _mMesas.FindById(IdMesa).WhereFalse("excluir").FirstOrDefault <Model.Mesas>(); if (_mMesas == null) { return; } label11.Text = @"Editar mesa"; mesa.Text = _mMesas.Mesa; nrPessoas.Text = _mMesas.NrPessoas.ToString(); } else { IdMesa = 0; } }; btnSalvar.Click += (s, e) => Save(); btnDelete.Click += (s, e) => { if (IdMesa <= 0) { return; } if (_mMesas.Remove(IdMesa)) { Alert.Message("Pronto", "Mesa removida com sucesso.", Alert.AlertType.success); DialogResult = DialogResult.OK; Close(); return; } Alert.Message("Opps", "Erro ao remover mesa.", Alert.AlertType.error); }; FormClosing += (s, e) => { DialogResult = DialogResult.OK; }; }
private void Eventos() { Masks.SetToUpper(this); Shown += (s, e) => { Impostos(); LoadDados(); }; btnCancelar.Click += (s, e) => Close(); btnSalvar.Click += (s, e) => { Save(); }; btnExcluir.Click += (s, e) => { itemPedido.Id = idPdt; itemPedido.Excluir = 1; if (itemPedido.Save(itemPedido)) { DialogResult = DialogResult.OK; Close(); } }; valorUnitario.TextChanged += new EventHandler(Masks.MaskPriceEvent); valorDesconto.TextChanged += new EventHandler(Masks.MaskPriceEvent); valorFrete.TextChanged += new EventHandler(Masks.MaskPriceEvent); valorSeguro.TextChanged += new EventHandler(Masks.MaskPriceEvent); vlrDespesa.TextChanged += new EventHandler(Masks.MaskPriceEvent); valorTotal.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsaliq.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsBase.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsvlr.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsstaliq.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsstbasecomreducao.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsstbase.TextChanged += new EventHandler(Masks.MaskPriceEvent); icmsstvlr.TextChanged += new EventHandler(Masks.MaskPriceEvent); pisaliq.TextChanged += new EventHandler(Masks.MaskPriceEvent); pisvlr.TextChanged += new EventHandler(Masks.MaskPriceEvent); cofinsaliq.TextChanged += new EventHandler(Masks.MaskPriceEvent); cofinsvlr.TextChanged += new EventHandler(Masks.MaskPriceEvent); ipialiq.TextChanged += new EventHandler(Masks.MaskPriceEvent); ipivlr.TextChanged += new EventHandler(Masks.MaskPriceEvent); federal.TextChanged += new EventHandler(Masks.MaskPriceEvent); estadual.TextChanged += new EventHandler(Masks.MaskPriceEvent); municipal.TextChanged += new EventHandler(Masks.MaskPriceEvent); }
public void CountDuplicatesTest_GiveDuplicatesAndSingleItems_WillPrintThemGrouped() { Swords testSword = new Swords(); testSword.Name = "testSword"; testSword.Price = 5; Shields testShield = new Shields(); testShield.Name = "testShield"; testShield.Price = 10; Consumables testConsumable = new Consumables(); testConsumable.Name = "testConsumable"; testConsumable.Price = 15; Potions testPotion = new Potions(); testPotion.Name = "testPotion"; testPotion.Price = 20; Masks testMask = new Masks(); testMask.Name = "testMask"; testMask.Price = 25; List <Product> testCart = new List <Product>(); for (int i = 0; i < 5; i++) { testCart.Add(testSword); } for (int i = 0; i < 132; i++) { testCart.Add(testShield); } testCart.Add(testConsumable); for (int i = 0; i < 45; i++) { testCart.Add(testPotion); } for (int i = 0; i < 98; i++) { testCart.Add(testMask); } string expected = "testSword x 5 - - - 25 Rupees\n\ntestShield x 132 - - - 1320 Rupees\n\ntestConsumable" + " x 1 - - - 15 Rupees\n\ntestPotion x 45 - - - 900 Rupees\n\ntestMask x 98 - - - 2450 Rupees\n\n"; string itemizerTest = Itemizer.CountDuplicates(testCart); Assert.AreEqual(expected, itemizerTest); }
public unsafe ComponentTypes(ComponentType a, ComponentType b) { this.m_sorted = new ResizableArray64Byte <int>(); this.m_masks = new Masks(); this.m_sorted.Length = 2; int *data = (int *)ref this.m_sorted.GetUnsafePointer(); SortingUtilities.InsertSorted(data, 0, a.TypeIndex); SortingUtilities.InsertSorted(data, 1, b.TypeIndex); this.ComputeMasks(); }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Masks.SetToUpper(this); Shown += (s, e) => { switch (Home.pedidoPage) { case "Delivery": if (page == "Entregadores") { label11.Text = @"Selecione o Entregador!"; label2.Text = @"Buscar entregador (F1):"; NovoCliente.Text = @"Entregador Novo ? (F9)"; label1.Text = @"Entregadores encontrados:"; pictureBox1.Image = Resources.deliveryman; } else { label11.Text = @"Selecione o Cliente!"; label2.Text = @"Buscar cliente (F1):"; NovoCliente.Text = @"Cliente Novo ? (F9)"; label1.Text = @"Clientes encontrados:"; } break; case "Compras": label11.Text = @"Selecione o Fornecedor!"; label2.Text = @"Buscar fornecedor (F1):"; NovoCliente.Text = @"Fornecedor Novo ? (F9)"; label1.Text = @"Fornecedores encontrados:"; break; default: label11.Text = @"Selecione o Cliente!"; label2.Text = @"Buscar cliente (F1):"; NovoCliente.Text = @"Cliente Novo ? (F9)"; label1.Text = @"Clientes encontrados:"; break; } }; search.TextChanged += (s, e) => DataTable(); search.Enter += (s, e) => DataTable(); NovoCliente.Click += (s, e) => FormNovoCliente(); btnSelecionar.Click += (s, e) => SelectItemGrid(); GridListaClientes.CellDoubleClick += (s, e) => SelectItemGrid(); search.KeyPress += (s, e) => Masks.MaskOnlyNumberAndCharAndMore(s, e); }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; //KeyDown += KeyDowns; //nr.KeyDown += KeyDowns; //btnContinuar.KeyDown += KeyDowns; btnContinuar.Click += (s, e) => CancelItem(); nr.KeyPress += (s, e) => Masks.MaskOnlyNumbers(s, e); }
public static void Draw(Pass pass) { if (pass.drawShadows) { Shadows.Draw(pass); } if (pass.drawMask) { Masks.Draw(pass); } }
public PlayerAnimationProvider(UxContext uxContext, int playerRadius) { Texture = uxContext.GetTexture("player-texture.png"); var playerDiameter = playerRadius * 2; MaskTexture = Masks.GetCircleMask(playerRadius); TextureRect = new SDL_Rect { x = 0, y = 0, w = playerDiameter, h = playerDiameter }; OutputSize = new Size(TextureRect.w, TextureRect.h); NonRepeatingTextureSize = 64 - TextureRect.w; }
private void Eventos() { Masks.SetToUpper(this); Shown += (s, e) => { if (Home.financeiroPage == "Pagar") { label6.Text = @"Pagamentos"; label2.Text = @"Pagamentoss a serem editados:"; label3.Text = @"As alterações abaixo, será aplicado a todos os pagamentos listado acima."; label23.Text = @"Pagar para"; label8.Text = @"Despesa"; visualGroupBox2.Text = @"Pagamento"; label9.Text = @"Data Pagamento"; label10.Text = @"Valor Pagamento"; } Refresh(); formaPgto.ValueMember = "Id"; formaPgto.DisplayMember = "Nome"; formaPgto.DataSource = new FormaPagamento().GetAll(); LoadFornecedores(); LoadCategorias(); SetHeadersTable(GridLista); SetContentTable(GridLista); }; btnSalvar.Click += (s, e) => { var result = AlertOptions.Message("Atenção!", "Confirmar alterações?", AlertBig.AlertType.warning, AlertBig.AlertBtn.YesNo); if (result) { Save(); } }; dataRecebido.KeyPress += Masks.MaskBirthday; recebido.TextChanged += (s, e) => { var txt = (TextBox)s; Masks.MaskPrice(ref txt); }; label6.Click += (s, e) => Close(); btnExit.Click += (s, e) => Close(); }
protected override void onStart() { // Récupération de l'échelle de temps time = countrySimData.GetComponent <TimeScale>(); // Récupération des masques masks = countrySimData.GetComponent <Masks>(); // Récupération des stats du vaccin vaccine = countrySimData.GetComponent <Vaccine>(); // Récupération des données financières finances = countrySimData.GetComponent <Finances>(); // Récupération des données de révolution revolution = countrySimData.GetComponent <Revolution>(); }
private void OnDeleteMask() { if (SelectedItem == null) { return; } var module = myPresentation.GetModule <INodeMaskModule>(); module.Remove(SelectedItem.Mask); SelectedItem = Masks.FirstOrDefault(); }
public void GetTotalTest_GiveRandomPricedProducts_WillPrintTheTotalPrice() { Swords testSword = new Swords(); testSword.Name = "testSword"; testSword.Price = 5; Shields testShield = new Shields(); testShield.Name = "testShield"; testShield.Price = 10; Consumables testConsumable = new Consumables(); testConsumable.Name = "testConsumable"; testConsumable.Price = 15; Potions testPotion = new Potions(); testPotion.Name = "testPotion"; testPotion.Price = 20; Masks testMask = new Masks(); testMask.Name = "testMask"; testMask.Price = 25; List <Product> testCart = new List <Product>(); for (int i = 0; i < 5; i++) { testCart.Add(testSword); } for (int i = 0; i < 132; i++) { testCart.Add(testShield); } testCart.Add(testConsumable); for (int i = 0; i < 45; i++) { testCart.Add(testPotion); } for (int i = 0; i < 98; i++) { testCart.Add(testMask); } int actual = Itemizer.GetTotal(testCart); Assert.AreEqual(4710, actual); }
private void Eventos() { KeyDown += KeyDowns; KeyPreview = true; Masks.SetToUpper(this); search.TextChanged += (s, e) => DataTable(); search.Enter += (s, e) => DataTable(); Novo.Click += (s, e) => FormNovoCliente(); btnSelecionar.Click += (s, e) => SelectItemGrid(); search.KeyPress += (s, e) => Masks.MaskOnlyNumberAndCharAndMore(s, e); }
public TypeMessage UpdateMaskMap(Vector2 location, Vector2 vector, Masks type) { int i = (int) (location.Y - startY)/Helper.SizeBlock; int j = (int) (location.X - startX)/Helper.SizeBlock; int iNext = i + (int) vector.Y; int jNext = j + (int) vector.X; // если вышли за границы if (i < 0 || j < 0 || jNext < 0 || iNext < 0 || i >= SizeY || j >= SizeX || iNext >= SizeY || jNext >= SizeX) return TypeMessage.Dead; switch (type) { case Masks.Snake: if (_mask[iNext, jNext] == (int) Masks.Wall) { return TypeMessage.WallBreak; } if (_mask[iNext, jNext] == (int) Masks.Apple) { _mask[iNext, jNext] = (int) Masks.Snake; _mask[i, j] = (int) Masks.Empty; // обработать съедание яблока return TypeMessage.Add; } _mask[iNext, jNext] = (int) Masks.Snake; _mask[i, j] = (int) Masks.Empty; break; case Masks.Sk: if (_mask[iNext, jNext] == (int)Masks.Snake) return TypeMessage.Dead; _mask[i, j] = (int) Masks.Empty; _mask[iNext, jNext] = (int) Masks.Sk; _mongoose.I = iNext; _mongoose.J = jNext; break; } return TypeMessage.None; }
/// <summary> /// Gibt den angegebenen Frame als Farbarray zurück. /// </summary> /// <param name="frameID">Die ID des Frames.</param> /// <param name="Pal">Die zu verwendende Farbpalette als Palette-Objekt.</param> /// <param name="mask">Optional. Gibt die abzurufende Maske an; Standardwert ist die reine Frame-Grafik.</param> /// <remarks></remarks> public Color[,] getFrameAsColorArray(uint frameID, ColorTable Pal, Masks mask = Masks.Graphic) { // Framedaten abrufen FrameInformationHeader FIH = _frameInformationHeaders[(int)frameID]; // Rückgabebild erstellen Color[,] ret = new Color[FIH.Width, FIH.Height]; // Welche Maske ist gewollt? if(mask == Masks.Graphic) // Es handelt sich um die reine Frame-Grafik { // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Sonderindizes in die jeweiligen Farben umsetzen; meist Rein-Weiß switch(farbID) { case -1: farbID = 255; break; case -2: farbID = 255; break; case -3: farbID = 255; break; case -4: farbID = _schatten; break; } // Pixel in das Bild schreiben ret[i, j] = (farbID == 255 ? Color.FromArgb(0, 255, 255, 255) : Pal[farbID]); // 255er-Weiß gilt als transparent (Alpha = 0) } } } else if(mask != Masks.PlayerColor) // Es handelt sich um eine Maske (außer der Spielerfarbe) { // Den Index und die Zielfarbe angeben int maskIndex = 0; int maskColor = 0; if(mask == Masks.Transparency) { maskIndex = -1; maskColor = 0; } else if(mask == Masks.Outline1) { maskIndex = -2; maskColor = 8; } else if(mask == Masks.Outline2) { maskIndex = -3; maskColor = 124; } else if(mask == Masks.Shadow) { maskIndex = -4; maskColor = 131; } // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Je nach Masken Farben setzen if(farbID == maskIndex) { // Masken-Farbe übernehmen farbID = maskColor; } else { // Keine Maske, also weiß farbID = 255; } // Pixel übernehmen ret[i, j] = Pal[farbID]; } } } else // Spielerfarbe { // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Liegt keine Spielerfarbe vor? if(farbID < 16 || farbID > 23) { // Pixel weiß einfärben farbID = 255; } // Pixel übernehmen ret[i, j] = Pal[farbID]; } } } // Fertig return ret; }
/// <summary> /// Gibt den angegebenen Frame als Bitmap-Bild zurück. /// </summary> /// <param name="frameID">Die ID des Frames.</param> /// <param name="Pal">Die zu verwendende Farbpalette als Palette-Objekt.</param> /// <param name="mask">Optional. Gibt die abzurufende Maske an; Standardwert ist die reine Frame-Grafik.</param> /// <param name="maskReplacementColor">Optional. Gibt die Farbe an, die anstatt der Masken verwendet werden soll, die nicht angezeigt werden.</param> /// <param name="shadowColor">Optional. Gibt die Farbe an, die für Schatten verwendet werden soll.</param> /// <remarks></remarks> public Bitmap getFrameAsBitmap(uint frameID, ColorTable Pal, Masks mask = Masks.Graphic, Color? maskReplacementColor = null, Color? shadowColor = null) { // Framedaten abrufen FrameInformationHeader frameHeader = _frameInformationHeaders[(int)frameID]; FrameInformationData frameData = _frameInformationData[(int)frameID]; // Rückgabebild erstellen Bitmap ret = new Bitmap((int)frameHeader.Width, (int)frameHeader.Height); // Welche Maske ist gewollt? if(mask == Masks.Graphic) // Es handelt sich um die reine Frame-Grafik { // Unsafe ist hier enorm schneller als SetPixel() BitmapData retData = ret.LockBits(new Rectangle(0, 0, ret.Width, ret.Height), System.Drawing.Imaging.ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppArgb); int retStride = retData.Stride; unsafe { // Pixelpointer abrufen byte* ptr = (byte*)retData.Scan0; // Bild pixelweise durchgehen for(int i = 0; i < frameHeader.Width; i++) { for(int j = 0; j < frameHeader.Height; j++) { // Palettenindex abrufen int farbID = frameData.CommandTable[j, i]; // Sonderindizes in die jeweiligen Farben umsetzen Color col; switch(farbID) { case -1: case -2: case -3: col = maskReplacementColor ?? Color.White; break; case -4: col = shadowColor ?? Pal[_schatten]; break; default: col = Pal[farbID]; break; } // Pixel in das Bild schreiben ptr[i * 4 + j * retStride] = col.B; ptr[i * 4 + j * retStride + 1] = col.G; ptr[i * 4 + j * retStride + 2] = col.R; ptr[i * 4 + j * retStride + 3] = col.A; } } } ret.UnlockBits(retData); } else if(mask != Masks.PlayerColor) // Es handelt sich um eine Maske (außer der Spielerfarbe) { // Den Index und die Zielfarbe angeben int maskIndex = 0; int maskColor = 0; if(mask == Masks.Transparency) { maskIndex = -1; maskColor = 0; } else if(mask == Masks.Outline1) { maskIndex = -2; maskColor = 8; } else if(mask == Masks.Outline2) { maskIndex = -3; maskColor = 124; } else if(mask == Masks.Shadow) { maskIndex = -4; maskColor = 131; } // Bild pixelweise durchgehen for(int i = 0; i < frameHeader.Width; i++) { for(int j = 0; j < frameHeader.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Je nach Masken Farben setzen if(farbID == maskIndex) { // Masken-Farbe übernehmen farbID = maskColor; } else { // Keine Maske, also weiß farbID = 255; } // Pixel übernehmen ret.SetPixel(i, j, Pal[farbID]); } } } else // Spielerfarbe { // Bild pixelweise durchgehen for(int i = 0; i < frameHeader.Width; i++) { for(int j = 0; j < frameHeader.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Liegt keine Spielerfarbe vor? if(farbID < 16 || farbID > 23) { // Pixel weiß einfärben farbID = 255; } // Pixel übernehmen ret.SetPixel(i, j, Pal[farbID]); } } } // Fertig return ret; }
/// <summary> /// Exportiert den angegebenen Frame in eine Bitmap-Datei (50500er-Palette). /// </summary> /// <param name="frameID">Die ID des zu exportierenden Frame.</param> /// <param name="Pal">Die Farbtabelle.</param> /// <param name="filename">Die Bitmap-Datei, in die die Daten geschrieben werden sollen.</param> /// <param name="mask">Die zu exportierende Maske (oder reine Grafik) als Element der Masks-Enumeration.</param> public void exportFrame(int frameID, string filename, ColorTable Pal, Masks mask = Masks.Graphic) { // Framedaten abrufen FrameInformationHeader FIH = _frameInformationHeaders[(int)frameID]; // Rückgabebild erstellen BitmapLoader bmp = new BitmapLoader((int)FIH.Width, (int)FIH.Height, Pal); // Welche Maske ist gewollt? if(mask == Masks.Graphic) // Es handelt sich um die reine Frame-Grafik { // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Sonderindizes in die jeweiligen Farben umsetzen; meist Rein-Weiß switch(farbID) { case -1: farbID = 255; break; case -2: farbID = 255; break; case -3: farbID = 255; break; case -4: farbID = _schatten; break; } // Pixel in das Bild schreiben bmp[i, j] = (byte)farbID; } } } else if(mask != Masks.PlayerColor) // Es handelt sich um eine Maske (außer der Spielerfarbe) { // Den Index und die Zielfarbe angeben int maskIndex = 0; int maskColor = 0; if(mask == Masks.Transparency) { maskIndex = -1; maskColor = 0; } else if(mask == Masks.Outline1) { maskIndex = -2; maskColor = 8; } else if(mask == Masks.Outline2) { maskIndex = -3; maskColor = 124; } else if(mask == Masks.Shadow) { maskIndex = -4; maskColor = 131; } // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Je nach Masken Farben setzen if(farbID == maskIndex) { // Masken-Farbe übernehmen farbID = maskColor; } else { // Keine Maske, also weiß farbID = 255; } // Pixel übernehmen bmp[i, j] = (byte)farbID; } } } else // Spielerfarbe { // Bild pixelweise durchgehen for(int i = 0; i < FIH.Width; i++) { for(int j = 0; j < FIH.Height; j++) { // Palettenindex abrufen int farbID = _frameInformationData[(int)frameID].CommandTable[j, i]; // Liegt keine Spielerfarbe vor? if(farbID < 16 || farbID > 23) { // Pixel weiß einfärben farbID = 255; } // Pixel übernehmen bmp[i, j] = (byte)farbID; } } } // Fertig, Bild speichern bmp.saveToFile(filename); }