Advertisement
cartellll

Untitled

May 11th, 2021
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.44 KB | None | 0 0
  1. public int Write(ObservationWriter writer)
  2. {
  3. if (m_Board.Rows != m_Rows || m_Board.Columns != m_Columns || m_Board.NumCellTypes != m_NumCellTypes)
  4. {
  5. Debug.LogWarning(
  6. $"Board shape changes since sensor initialization. This may cause unexpected results. " +
  7. $"Old shape: Rows={m_Rows} Columns={m_Columns}, NumCellTypes={m_NumCellTypes} " +
  8. $"Current shape: Rows={m_Board.Rows} Columns={m_Board.Columns}, NumCellTypes={m_Board.NumCellTypes}"
  9. );
  10. }
  11.  
  12.  
  13. if (m_ObservationType == Match3ObservationType.Vector)
  14. {
  15. int offset = 0;
  16. for (var r = 0; r < m_Rows; r++)
  17. {
  18. for (var c = 0; c < m_Columns; c++)
  19. {
  20. var val = m_Board.GetCellType(r, c);
  21. for (var i = 0; i < m_NumCellTypes; i++)
  22. {
  23. writer[offset] = (i == val) ? 1.0f : 0.0f;
  24. offset++;
  25. }
  26.  
  27. if (m_NumSpecialTypes > 0)
  28. {
  29. var special = m_Board.GetSpecialType(r, c);
  30. for (var i = 0; i < SpecialTypeSize; i++)
  31. {
  32. writer[offset] = (i == special) ? 1.0f : 0.0f;
  33. offset++;
  34. }
  35. }
  36. }
  37. }
  38.  
  39. return offset;
  40. }
  41. else
  42. {
  43. // TODO combine loops? Only difference is inner-most statement.
  44.  
  45.  
  46. float[,] m_Valid =new float[m_Board.Rows, m_Board.Columns];
  47. for (int i = 0; i < m_Board.Rows; i++)
  48. {
  49. for (int j = 0; j < m_Board.Columns; j++)
  50. {
  51. m_Valid[i, i] = 0.0f;
  52. }
  53. }
  54.  
  55. foreach (var move in m_Board.ValidMoves())
  56. {
  57. m_Valid[move.Row, move.Column] = 1.0f;
  58. }
  59.  
  60. int offset = 0;
  61.  
  62. for (var r = 0; r < m_Rows; r++)
  63. {
  64. for (var c = 0; c < m_Columns; c++)
  65. {
  66. writer[r, c, 0] = m_Valid[r, c];
  67. offset++;
  68. var val = m_Board.GetCellType(r, c);
  69. for (var i = 1; i < m_NumCellTypes+1; i++)
  70. {
  71. writer[r, c, i] = (i == val) ? 1.0f : 0.0f;
  72. offset++;
  73. }
  74.  
  75.  
  76. if (m_NumSpecialTypes > 0)
  77. {
  78. var special = m_Board.GetSpecialType(r, c);
  79. for (var i = 0; i < SpecialTypeSize; i++)
  80. {
  81. writer[offset] = (i == special) ? 1.0f : 0.0f;
  82.  
  83. offset++;
  84. }
  85. }
  86.  
  87. }
  88. }
  89.  
  90. return offset;
  91. }
  92. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement