Exemplo n.º 1
0
        public override void Core_Update()
        {
            try
            {
                byte[] data;
                if (Compressed < 0)
                {
                    data    = Core.ReadData(Address, Compressed * -1);
                    Current = new OAM_Array(data, 0);
                }
                else
                {
                    data    = Core.ReadData(Address, 0);
                    Current = new OAM_Array(data, (uint)Compressed);
                }

                Entry_NumBox.Maximum = (Current.Sprites.Count <= 0) ? 0 : Current.Sprites.Count - 1;
                Core_UpdateValues(Entry_NumBox.Value);

                Display = new SpriteSheet(240, 160);
                Display.AddSprite(Colors, Tiles, Current, OffsetX, OffsetY);
                Core_UpdateDisplay(Display);
            }
            catch (Exception ex)
            {
                Program.ShowError("There has been an error while trying to update the OAM Editor.", ex);
            }
        }
Exemplo n.º 2
0
 public BattleAnimFrame(
     OAM_Array oamData_L,
     OAM_Array oamData_R,
     uint tileset,
     uint offset,
     uint duration)
 {
     OAM_Data_L   = oamData_L;
     OAM_Data_R   = oamData_R;
     TilesetIndex = tileset;
     OAM_Offset   = offset;
     Duration     = duration;
 }
Exemplo n.º 3
0
        private static string GetAnimationCode_AddAffinesIfAny(string file,
                                                               uint tileset, OAM_Array oam, ref List <Tuple <uint, OAM> > affines)
        {
            string result = "";
            int    s      = 0;

            while (s < oam.Sprites.Count)
            {
                if (oam.Sprites[s].IsAffineSprite())
                {
                    int affine_index = -1;
                    for (int i = 0; i < affines.Count; i++)
                    {
                        if (tileset == affines[i].Item1 &&
                            oam.Sprites[s].SheetX == affines[i].Item2.SheetX &&
                            oam.Sprites[s].SheetY == affines[i].Item2.SheetY &&
                            oam.Sprites[s].SpriteShape == affines[i].Item2.SpriteShape &&
                            oam.Sprites[s].SpriteSize == affines[i].Item2.SpriteSize)
                        {
                            affine_index = i;
                        }
                    }
                    if (affine_index == -1)
                    {
                        affine_index = affines.Count;
                        affines.Add(Tuple.Create(tileset, oam.Sprites[s]));
                    }
                    if (result.Length > 0)
                    {
                        result += "\r\n\t";
                    }
                    int  index = oam.Sprites[s].AffineIndex;
                    bool big   = oam.Sprites[s].OBJMode == OAM_OBJMode.BigAffine;
                    result += (big ? " d" : " a");
                    result += " [" + file + "_affine_" + affine_index;
                    result += ".png]";
                    result += " (" + (oam.Sprites[s].ScreenX + SCREEN_OFFSET_X_R);
                    result += ", " + (oam.Sprites[s].ScreenY + SCREEN_OFFSET_Y);
                    result += ") (" + oam.Affines[index].Ux.ToString("0.00000").Replace(',', '.');
                    result += ", " + oam.Affines[index].Vx.ToString("0.00000").Replace(',', '.');
                    result += ", " + oam.Affines[index].Uy.ToString("0.00000").Replace(',', '.');
                    result += ", " + oam.Affines[index].Vy.ToString("0.00000").Replace(',', '.');
                    result += ")";
                }
                s++;
            }
            return(result);
        }