private List <int> SetMask() { actionList.Clear(); if (gridWorld.GetRight(agentPosIdx) == -1) { SetActionMask(right); } else { actionList.Add(right); } if (gridWorld.GetLeft(agentPosIdx) == -1) { SetActionMask(left); } else { actionList.Add(left); } if (gridWorld.GetUp(agentPosIdx) == -1) { SetActionMask(up); } else { actionList.Add(up); } if (gridWorld.GetDown(agentPosIdx) == -1) { SetActionMask(down); } else { actionList.Add(down); } if (gridWorld.GetRightUp(agentPosIdx) == -1) { SetActionMask(rightUp); } else { actionList.Add(rightUp); } if (gridWorld.GetLeftUp(agentPosIdx) == -1) { SetActionMask(leftUp); } else { actionList.Add(leftUp); } if (gridWorld.GetRightDown(agentPosIdx) == -1) { SetActionMask(rightDown); } else { actionList.Add(rightDown); } if (gridWorld.GetLeftDown(agentPosIdx) == -1) { SetActionMask(leftDown); } else { actionList.Add(leftDown); } //None if (actionList.Count == 0) { actionList.Add(none); } else { SetActionMask(none); } return(actionList); }