Guest User

PHP makaka forever

a guest
Dec 6th, 2014
249
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.31 KB | None | 0 0
  1. public class ChangeColor : MonoBehaviour
  2. {
  3.     private struct ColorPair
  4.     {
  5.         //Цвет краски
  6.         public Color PaintColor;
  7.         //Цвет обьекта
  8.         public Color ObjColor;
  9.  
  10.         public override bool Equals(object Obj)
  11.         {
  12.             ColorPair P = (ColorPair)Obj;
  13.             return (this.PaintColor.Equals(P.PaintColor) && this.ObjColor.Equals(ObjColor));
  14.         }
  15.  
  16.         public ColorPair(Color PaintColor, Color ObjColor)
  17.         {
  18.             this.PaintColor = PaintColor ;
  19.             this.ObjColor = ObjColor;
  20.         }
  21.  
  22.         public override int GetHashCode()
  23.         {
  24.             return (PaintColor.GetHashCode() / 13) + (ObjColor.GetHashCode() * 7);
  25.         }
  26.     }
  27.  
  28.     // таблица перекраски [краска, цвет] => [цвет]
  29.     private Dictionary<ColorPair, Color> RepaintTable = new Dictionary<ColorPair, Color>();
  30.     public Color CurrentColor;
  31.  
  32.     public Color NullColor = Color.TransparentBlack;
  33.     public Color redz;
  34.     public Color bluez;
  35.     public Color yellowz;
  36.     public Color orangez;
  37.     public Color purplez;
  38.     public Color greenz;
  39.  
  40.     void InitRepaintTable()
  41.     {
  42.         CurrentColor = NullColor;
  43.  
  44.         RepaintTable.Add(new ColorPair(yellowz, NullColor), yellowz);
  45.         RepaintTable.Add(new ColorPair(redz, NullColor), redz);
  46.         RepaintTable.Add(new ColorPair(bluez, NullColor), bluez);
  47.  
  48.         RepaintTable.Add(new ColorPair(redz, yellowz), orangez);
  49.         RepaintTable.Add(new ColorPair(redz, bluez), purplez);
  50.  
  51.         RepaintTable.Add(new ColorPair(bluez, yellowz), greenz);
  52.         RepaintTable.Add(new ColorPair(bluez, redz), purplez);
  53.  
  54.         RepaintTable.Add(new ColorPair(yellowz, redz), orangez);
  55.         RepaintTable.Add(new ColorPair(yellowz, bluez), greenz);
  56.     }
  57.  
  58.     void OnTriggerEnter(Collider block)
  59.     {
  60.         Color PaintColor = (Color)block.gameObject.Tag;
  61.         // или если тег занят сделай какоенить преобразование ntrcn -> цвет
  62.         Color ObjColor = CurrentColor;
  63.  
  64.         ColorPair RP = new ColorPair(PaintColor, ObjColor);
  65.  
  66.         if (RepaintTable.ContainsKey(RP))
  67.         {
  68.             CurrentColor = RepaintTable[RP];
  69.         }
  70.         else { /*что-то пошло не так*/ }
  71.     }
  72. }
Advertisement
Add Comment
Please, Sign In to add comment