class_docstr: Dummy structured (multi-agent, with two agents) core environment.
  
  :param observation_space: The observation space to sample observations from
class_docstr_tok: ["Dummy","structured","(","multi-agent",",","with","two","agents",")","core","environment",".",":","param","observation_space",":","The","observation","space","to","sample","observations","from"]
docstr: Switch agents, increment env step after the second agent
docstr_tok: ["Switch","agents",",","increment","env","step","after","the","second","agent"]
code: def step(
      self, maze_action: Dict
  ) -> Tuple[Dict[str, np.ndarray], float, bool, Optional[Dict]]:
      """Switch agents, increment env step after the second agent"""
      if self.current_agent == 0:
          self.current_agent = 1
          # No reward yet
          return self.get_maze_state(), 0, False, {}
      else:
          # Increment env step, return reward of 2 (sum for both agents)
          self.current_agent = 0
          self.context.increment_env_step()
          return self.get_maze_state(), 2, False, {}
  
file_path: maze/maze/test/shared_test_utils/dummy_env/dummy_structured_core_env.py
imports: from typing import Tuple, Dict, Any, Optional
  import gym
  import numpy
  from maze.core.annotations import override
  from maze.core.env.core_env import CoreEnv
  from maze.core.env.structured_env import StepKeyType, ActorID
label_desc: Use image node_id 2 for calling the DummyStructuredCoreEnvironment obj's underlying member method code with example usage: obj.step(maze_action) and returns: self,  int,  False,  dict, self,  int,  False,  dict