Example #1
0
		public TextureVM(XTileInfoVM _xTileInfoVM)
		{
			m_xTileInfoVM = _xTileInfoVM;
			Texture = _xTileInfoVM.Texture;
			CursorX = _xTileInfoVM.X;
			CursorY = _xTileInfoVM.Y;
			Sets = new ObservableCollection<ETextureSet>(Enum.GetValues(typeof(ETextureSet)).Cast<ETextureSet>().OrderBy(_set => _set.ToString()));
			TextureClick = new RelayCommand(ExecuteTextureClick);
			SetCommand = new RelayCommand(ExecuteSetCommand, CanSetCommand);
			AddCommand = new RelayCommand(ExecuteAddCommand, CanAddCommand);
			Subscribe(m_xTileInfoVM, info => info.PlusHalfX, _changed => OnPropertyChanged(() => ScreenCursorX));
			Subscribe(m_xTileInfoVM, info => info.PlusHalfY, _changed => OnPropertyChanged(() => ScreenCursorY));
		}
Example #2
0
 public TextureVM(XTileInfoVM _xTileInfoVM)
 {
     m_xTileInfoVM = _xTileInfoVM;
     Texture       = _xTileInfoVM.Texture;
     CursorX       = _xTileInfoVM.X;
     CursorY       = _xTileInfoVM.Y;
     Sets          = new ObservableCollection <ETextureSet>(Enum.GetValues(typeof(ETextureSet)).Cast <ETextureSet>().OrderBy(_set => _set.ToString()));
     TextureClick  = new RelayCommand(ExecuteTextureClick);
     SetCommand    = new RelayCommand(ExecuteSetCommand, CanSetCommand);
     AddCommand    = new RelayCommand(ExecuteAddCommand, CanAddCommand);
     Subscribe(m_xTileInfoVM, info => info.PlusHalfX, _changed => OnPropertyChanged(() => ScreenCursorX));
     Subscribe(m_xTileInfoVM, info => info.PlusHalfY, _changed => OnPropertyChanged(() => ScreenCursorY));
 }
Example #3
0
        public Bitmap this[ETextureSet _texture, int _x, int _y, FColor _fColor, bool _removeTransparency, bool _grayScale, bool _isTerrain, bool _plusHalfX, bool _plusHalfY]
        {
            get
            {
                Dictionary <Tuple <int, int, FColor, bool, bool, bool, bool>, Bitmap> dictionary;
                if (!m_tiles.TryGetValue(_texture, out dictionary))
                {
                    dictionary        = new Dictionary <Tuple <int, int, FColor, bool, bool, bool, bool>, Bitmap>();
                    m_tiles[_texture] = dictionary;
                }
                Bitmap bitmap;
                var    key = new Tuple <int, int, FColor, bool, bool, bool, bool>(_x, _y, _fColor, _removeTransparency, _grayScale, _plusHalfX, _plusHalfY);
                if (!dictionary.TryGetValue(key, out bitmap))
                {
                    var txtr = this[_texture, _isTerrain];
                    bitmap = new Bitmap(Constants.TILE_SIZE, Constants.TILE_SIZE);
                    using (var gr = Graphics.FromImage(bitmap))
                    {
                        gr.DrawImage(txtr, 0, 0, new Rectangle(
                                         Constants.TILE_SIZE * _x + (_plusHalfX ? (Constants.TILE_SIZE / 2) : 0),
                                         Constants.TILE_SIZE * _y + (_plusHalfY ? (Constants.TILE_SIZE / 2) : 0),
                                         Constants.TILE_SIZE, Constants.TILE_SIZE), GraphicsUnit.Pixel);
                    }
                    var transparent = txtr.GetPixel(0, 0);
                    var rct         = new Rct(0, 0, Constants.TILE_SIZE, Constants.TILE_SIZE);
                    foreach (var point in rct.AllPoints)
                    {
                        var pixel = bitmap.GetPixel(point.X, point.Y);
                        if (pixel == transparent)
                        {
                            continue;
                        }
                        var fcolor = new FColor(pixel.A, pixel.R, pixel.G, pixel.B).Multiply(1f / 255f);
                        if (_grayScale)
                        {
                            fcolor = fcolor.ToGrayScale();
                        }
                        var result = fcolor.Multiply(_fColor).GetColor();                        //.Multiply(255);
                        if (_removeTransparency)
                        {
                            result.A = 255;
                        }
                        bitmap.SetPixel(point.X, point.Y, Color.FromArgb(result.A, result.R, result.G, result.B));
                    }

                    dictionary.Add(key, bitmap);
                }
                return(bitmap);
            }
        }
Example #4
0
		public Bitmap this[ETextureSet _texture, int _x, int _y, FColor _fColor, bool _removeTransparency, bool _grayScale, bool _isTerrain, bool _plusHalfX, bool _plusHalfY]
		{
			get
			{
				Dictionary<Tuple<int, int, FColor, bool, bool, bool, bool>, Bitmap> dictionary;
				if (!m_tiles.TryGetValue(_texture, out dictionary))
				{
					dictionary = new Dictionary<Tuple<int, int, FColor, bool, bool, bool, bool>, Bitmap>();
					m_tiles[_texture] = dictionary;
				}
				Bitmap bitmap;
				var key = new Tuple<int, int, FColor, bool, bool, bool, bool>(_x, _y, _fColor, _removeTransparency, _grayScale, _plusHalfX, _plusHalfY);
				if (!dictionary.TryGetValue(key, out bitmap))
				{
					var txtr = this[_texture, _isTerrain];
					bitmap = new Bitmap(Constants.TILE_SIZE, Constants.TILE_SIZE);
					using(var gr = Graphics.FromImage(bitmap))
					{
						gr.DrawImage(txtr, 0, 0, new Rectangle(
							Constants.TILE_SIZE * _x + (_plusHalfX ? (Constants.TILE_SIZE / 2) : 0), 
							Constants.TILE_SIZE * _y + (_plusHalfY ? (Constants.TILE_SIZE / 2) : 0), 
							Constants.TILE_SIZE, Constants.TILE_SIZE), GraphicsUnit.Pixel);
					}
					var transparent = txtr.GetPixel(0, 0);
					var rct = new Rct(0, 0, Constants.TILE_SIZE, Constants.TILE_SIZE);
					foreach (var point in rct.AllPoints)
					{
						var pixel = bitmap.GetPixel(point.X, point.Y);
						if (pixel == transparent) continue;
						var fcolor = new FColor(pixel.A, pixel.R, pixel.G, pixel.B).Multiply(1f / 255f);
                        if(_grayScale)
                        {
                            fcolor = fcolor.ToGrayScale();
                        }
						var result = fcolor.Multiply(_fColor).GetColor();//.Multiply(255);
						if (_removeTransparency)
						{
							result.A = 255;
						}
						bitmap.SetPixel(point.X, point.Y, Color.FromArgb(result.A, result.R, result.G, result.B));
					}

					dictionary.Add(key, bitmap);
				}
				return bitmap;
			}
		}
Example #5
0
		public Bitmap this[ETextureSet _set, bool _isTerrain]
		{
			get
			{
				Image value;
				if (_isTerrain)
				{
					if (!m_ttextures.TryGetValue(_set, out value))
					{
						throw new NotImplementedException("А на хуа?");
						//var scale = 1;
						//Bitmap bmp;
						//switch (_set)
						//{
						//	case ETextureSet.RJ:
						//		bmp = Resources.redjack15v;
						//		break;
						//	case ETextureSet.RB1:
						//		bmp = Resources.RantingRodent_Brick_01;
						//		break;
						//	case ETextureSet.RB2:
						//		bmp = Resources.RantingRodent_Brick_02;
						//		break;
						//	case ETextureSet.RN1:
						//		bmp = Resources.RantingRodent_Natural_01;
						//		break;
						//	case ETextureSet.RN2:
						//		bmp = Resources.RantingRodent_Natural_02;
						//		break;
						//	case ETextureSet.GP:
						//		bmp = Resources.gold_plated_16x16;
						//		break;
						//	case ETextureSet.NH:
						//		bmp = Resources.nethack;
						//		break;
						//	case ETextureSet.HM:
						//		bmp = Resources.aq;
						//		break;
						//	case ETextureSet.PH:
						//		bmp = Resources.Phoebus_16x16;
						//		break;
						//	case ETextureSet.U4:
						//		bmp = Resources.Ultima4;
						//		break;
						//	case ETextureSet.U5:
						//		bmp = Resources.Ultima5;
						//		break;
						//	case ETextureSet.WC_WS:
						//		bmp = Resources.wintersnow;
						//		break;
						//	case ETextureSet.WC_SG:
						//		bmp = Resources.summergrass;
						//		break;
						//	case ETextureSet.WC_SW:
						//		bmp = Resources.summerwater;
						//		break;
						//	case ETextureSet.dg_armor32:
						//		bmp = Resources.dg_armor32;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster1:
						//		bmp = Resources.dg_monster132;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster2:
						//		bmp = Resources.dg_monster232;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster3:
						//		bmp = Resources.dg_monster332;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster4:
						//		bmp = Resources.dg_monster432;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster5:
						//		bmp = Resources.dg_monster532;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster6:
						//		bmp = Resources.dg_monster632;
						//		scale = 2;
						//		break;
						//	case ETextureSet.dg_monster7:
						//		bmp = Resources.dg_monster732;
						//		scale = 2;
						//		break;
						//	default:
						//		throw new ArgumentOutOfRangeException();
						//}
						//if(scale==2)
						//{
						//	bmp = Scale(bmp);
						//}

						//value = new Image(bmp, false, false);

						//m_ttextures[_set] = value;
					}
				}
				else
				{
					if (!m_textures.TryGetValue(_set, out value))
					{
						var bmp = this[_set, true];
						value = new Image(bmp, true, false);
						m_textures[_set] = value;
					}
				}

				return value.Bitmap;
			}
		}
Example #6
0
        public Bitmap this[ETextureSet _set, bool _isTerrain]
        {
            get
            {
                Image value;
                if (_isTerrain)
                {
                    if (!m_ttextures.TryGetValue(_set, out value))
                    {
                        throw new NotImplementedException("А на хуа?");
                        //var scale = 1;
                        //Bitmap bmp;
                        //switch (_set)
                        //{
                        //	case ETextureSet.RJ:
                        //		bmp = Resources.redjack15v;
                        //		break;
                        //	case ETextureSet.RB1:
                        //		bmp = Resources.RantingRodent_Brick_01;
                        //		break;
                        //	case ETextureSet.RB2:
                        //		bmp = Resources.RantingRodent_Brick_02;
                        //		break;
                        //	case ETextureSet.RN1:
                        //		bmp = Resources.RantingRodent_Natural_01;
                        //		break;
                        //	case ETextureSet.RN2:
                        //		bmp = Resources.RantingRodent_Natural_02;
                        //		break;
                        //	case ETextureSet.GP:
                        //		bmp = Resources.gold_plated_16x16;
                        //		break;
                        //	case ETextureSet.NH:
                        //		bmp = Resources.nethack;
                        //		break;
                        //	case ETextureSet.HM:
                        //		bmp = Resources.aq;
                        //		break;
                        //	case ETextureSet.PH:
                        //		bmp = Resources.Phoebus_16x16;
                        //		break;
                        //	case ETextureSet.U4:
                        //		bmp = Resources.Ultima4;
                        //		break;
                        //	case ETextureSet.U5:
                        //		bmp = Resources.Ultima5;
                        //		break;
                        //	case ETextureSet.WC_WS:
                        //		bmp = Resources.wintersnow;
                        //		break;
                        //	case ETextureSet.WC_SG:
                        //		bmp = Resources.summergrass;
                        //		break;
                        //	case ETextureSet.WC_SW:
                        //		bmp = Resources.summerwater;
                        //		break;
                        //	case ETextureSet.dg_armor32:
                        //		bmp = Resources.dg_armor32;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster1:
                        //		bmp = Resources.dg_monster132;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster2:
                        //		bmp = Resources.dg_monster232;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster3:
                        //		bmp = Resources.dg_monster332;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster4:
                        //		bmp = Resources.dg_monster432;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster5:
                        //		bmp = Resources.dg_monster532;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster6:
                        //		bmp = Resources.dg_monster632;
                        //		scale = 2;
                        //		break;
                        //	case ETextureSet.dg_monster7:
                        //		bmp = Resources.dg_monster732;
                        //		scale = 2;
                        //		break;
                        //	default:
                        //		throw new ArgumentOutOfRangeException();
                        //}
                        //if(scale==2)
                        //{
                        //	bmp = Scale(bmp);
                        //}

                        //value = new Image(bmp, false, false);

                        //m_ttextures[_set] = value;
                    }
                }
                else
                {
                    if (!m_textures.TryGetValue(_set, out value))
                    {
                        var bmp = this[_set, true];
                        value            = new Image(bmp, true, false);
                        m_textures[_set] = value;
                    }
                }

                return(value.Bitmap);
            }
        }