Exemple #1
0
        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();
            }
        }
Exemple #3
0
        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!");
            }
        }
Exemple #4
0
        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;
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        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?
        }
Exemple #8
0
        public void AddImagetoAnimation(KartAnimationSeries animation, int insertIndex, KartImage image)
        {
            animation.OrderedImageNames.Insert(insertIndex, image.Name);

            IsModified = true;

            //Event
        }