private KartImage ConvertToKartImage(Bitmap bmp, string imageName) { if (bmp != null && Kart != null && Kart.Kart != null && Kart.Kart.KartImages.ImagePalette != null) { //Create the new KartImage here //byte[] imgData = TextureConversion.CI8ToBinary(bmp, Kart.Kart.KartImages.ImagePalette); //Texture texture = new Texture(-1, imgData, Texture.ImageFormat.CI, Texture.PixelInfo.Size_8b, 64, 64, Kart.Kart.KartImages.ImagePalette); // ImageMIO0Block block = new ImageMIO0Block(-1, imgData); // block.ImageName = imageName; // block.DecodedN64DataElement = texture; //byte[] blankPaletteData = new byte[0x40]; //Palette blankPalette = new Palette(-1, blankPaletteData); //KartImage newImage = new KartImage(block, blankPalette); //return newImage; int tempPalOffset = 0; byte[] imgData = TextureConversion.CI8ToBinary(bmp, Kart.Kart.KartImages.ImagePalette, ref tempPalOffset); Texture texture = new Texture(-1, imgData, Texture.ImageFormat.CI, Texture.PixelInfo.Size_8b, 64, 64); List <Palette> palettes = new List <Palette>(); palettes.Add(Kart.Kart.KartImages.ImagePalette); byte[] blankPaletteData = new byte[0x40]; palettes.Add(new Palette(-1, blankPaletteData)); F3DEXImage image = new F3DEXImage(texture, palettes); MK64Image mkImg = new MK64Image(image, imageName, true); KartImage newImage = new KartImage(new List <MK64Image>() { mkImg }); return(newImage); } return(null); }
//Reset the view to the new kart private void ResetPreview() { if (this.DesignMode) { return; } //Clear the image Image = null; OverlayImage = null; if (_kart == null || _kart.KartAnimations.Count == 0) { return; } if (_animIndex < 0 || _kart.KartAnimations.Count <= _animIndex || _frameIndex < 0 || _kart.KartAnimations[_animIndex].OrderedImageNames.Count <= _frameIndex) { return; } //Just display the single frame KartImage selectedKartImage = _kart.KartImages.Images[_kart.KartAnimations[_animIndex].OrderedImageNames[_frameIndex]]; Image = selectedKartImage.Images[0].Image; ImageName = selectedKartImage.Images[0].ImageName; if (ShowReferenceKart) { SetReferenceImage(); } }
private void CreateKartImages(List <BitmapWrapper> bmps) { //Take each image, conform to the palette, and add as a new image List <KartImage> karts = new List <KartImage>(); foreach (BitmapWrapper bmp in bmps) { KartImage img = ConvertToKartImage(bmp.Image, bmp.Name); if (img != null) { karts.Add(img); } } if (karts.Count > 0) { Kart.AddKartImages(karts); foreach (BitmapWrapper bmp in bmps) { Kart.NewImages.Remove(bmp); } PopulateKartImagesListBox(); PopulateNewImagesListBox(); } else { MessageBox.Show("Error! Couldn't convert new images to Kart Images!"); } }
public void RemoveKartImage(KartImage image) { if (Kart.KartImages.Images.ContainsKey(image.Name)) { Kart.KartImages.Images.Remove(image.Name); IsModified = true; } //Flip something to notify that a cart got removed, and // thus update the animation form and whatnot ChompShopAlerts.UpdateKartImages(this); ComprimisedAnimations = true; }
private void SetReferenceImage() { if (_referenceKart == null) { return; } int imageIndex; KartAnimationSeries refAnim; int refFrameIndex; if (_kart.KartAnimations[_animIndex].IsTurnAnim) { imageIndex = _kart.KartAnimations[_animIndex].GetImageIndexForTurnFrame(_frameIndex); } else if (_kart.KartAnimations[_animIndex].IsSpinAnim) { imageIndex = _kart.KartAnimations[_animIndex].GetImageIndexForSpinFrame(_frameIndex); } else { imageIndex = _kart.KartAnimations[_animIndex].GetImageIndexForCrashFrame(_frameIndex); } refAnim = _referenceKart.KartAnimations.FirstOrDefault(a => (a.KartAnimationType & _kart.KartAnimations[_animIndex].KartAnimationType) != 0); if (refAnim == null) { return; } if (refAnim.IsTurnAnim) { refFrameIndex = refAnim.GetTurnFrameForImageIndex(_frameIndex); } else if (refAnim.IsSpinAnim) { refFrameIndex = refAnim.GetSpinFrameForImageIndex(_frameIndex); } else { refFrameIndex = refAnim.GetCrashFrameForImageIndex(_frameIndex); } KartImage selectedKartImage = _referenceKart.KartImages.Images[refAnim.OrderedImageNames[refFrameIndex]]; OverlayImage = selectedKartImage.Images[0].Image; }
private void PopulateAnimationImages() { KartImage selected = (KartImage)lbAnimImages.SelectedItem; lbAnimImages.Items.Clear(); if (SelectedAnimation == null) { return; } for (int i = 0; i < SelectedAnimation.OrderedImageNames.Count; i++) { KartImage image = Kart.Kart.KartImages.Images[SelectedAnimation.OrderedImageNames[i]]; lbAnimImages.Items.Add(image); } if (selected != null && SelectedAnimation.OrderedImageNames.Contains(selected.Name)) { lbAnimImages.SelectedItem = selected; } UpdateAnimationImagesEnableds(); }
public void AddKartImages(List <KartImage> images) { for (int i = 0; i < images.Count; i++) { KartImage image = images[i]; if (Kart.KartImages.Images.ContainsKey(image.Name)) { images.RemoveAt(i); i--; //NEED TO INCLUDE AN ERROR HERE?? } else { Kart.KartImages.Images.Add(image.Name, image); } } if (images.Count > 0) { IsModified = true; } //Flip an event? }
public void AddImagetoAnimation(KartAnimationSeries animation, int insertIndex, KartImage image) { animation.OrderedImageNames.Insert(insertIndex, image.Name); IsModified = true; //Event }