示例#1
0
		public frmSpriteFrameAdd(RoSprite Sprite) {
			mSprite = Sprite;

			InitializeComponent();

			for (int i = 0; i < mSprite.Images.Count; i++)
				cmbAddPosition.Items.Add((i + 1));

			cmbAddType.SelectedIndex = 0;
			cmbAddPosition.SelectedIndex = cmbAddPosition.Items.Count - 1;
		}
示例#2
0
		public void SetData(byte[] spriteData, string name) {
			if (spriteData == null || spriteData.Length == 0) {
				ResetAllOperations();
				return;
			}

			mName = name;
			mSprite = new RoSprite(spriteData);
			if (mSprite.ImagesPal.Count == 0 && mSprite.ImagesRgba.Count == 0) {
				ResetAllOperations();
				return;
			}

			mCurrentTypePal = (mSprite.ImagesPal.Count > 0);

			// force to update image
			mCurrentIndex = -1;

			SetImage(0);
		}
示例#3
0
		public bool ExportImage(RoGrfFileItem grfItem) {
			byte[] spriteData = grfItem.FileData;
			string sprFilepath = Path.GetTempFileName();
			File.WriteAllBytes(sprFilepath, spriteData);
			spriteData = null;

			try {
				using (RoSprite sprFile = new RoSprite(sprFilepath)) {
					sprFile.DrawImage(0);

					using (Bitmap bmp = sprFile.GetImageTransparent(0)) {
						bmp.Save(Environment.CurrentDirectory + @"\data\mobs\" + ID + ".png");
					}
				}
			} catch (Exception ex) {
				return false;
			}

			return true;
		}
示例#4
0
		private bool OpenSprite(string spritepath, bool fromBash) {
			mSprite = new RoSprite(spritepath);
			if (mSprite.Images.Count == 0) { // lol
				mSprite = null;

				if (fromBash) {
					SetControls(false);
				}
				return false;
			}

			InitializePalette();
			mWndSprite.SpriteControl.BackColor = mSprite.Palette[0];
			SetImage(0);

			if (fromBash) {
				SetControls(true);
			}
			return true;
		}
示例#5
0
		public void TestGodPoring() {
			var spr = new RoSprite(GetDataPath("god_poring.spr"));
		}