public MapMovementGameState(MapPlayGameState background_state, Haxxit.Maps.Point selected_program) { user_map_state = background_state; this.selected_program = selected_program; MoveAI = false; popTime = -1; }
public MapAttackGameState(MapPlayGameState background_state, Haxxit.Maps.Point selected_program, string selected_attack) { user_map_state = background_state; this.selected_program = selected_program; this.selected_attack = selected_attack; commandAI = false; popTime = -1; }
public SpawnDialogGameState(HaxxitGameState background_state, Haxxit.Maps.Map map, Haxxit.Maps.Point spawn_point, BoolWrapper newSpawnDialogStatus) : base() { this.background_state = background_state; this.map = map; this.spawn_point = spawn_point; spawnDialogStatus = newSpawnDialogStatus; spawnDialogStatus.Status = true; selectedProgram = null; lastSelectedRectangle = null; }
public DrawableRectangle DrawProgramHead(Haxxit.Maps.Point p, Haxxit.Maps.ProgramHeadNode head_node) { DrawableRectangle retval; if (head_node.Program.AlreadyRanCommand()) retval = new DrawableRectangle(rounded_rect_back, display_map_state.HaxxitPointToXnaRectangle(p), Color.Black * (2.0f / 3.0f)); else if (!head_node.Program.Moves.CanMove()) retval = new DrawableRectangle(rounded_rect_back, display_map_state.HaxxitPointToXnaRectangle(p), Color.Black * (1.0f / 3.0f)); else retval = new DrawableRectangle(rounded_rect_back, display_map_state.HaxxitPointToXnaRectangle(p), Color.Transparent); retval.OnMouseLeftClick += OnProgramClick; return retval; }
public Rectangle HaxxitPointToXnaRectangle(Haxxit.Maps.Point p) { return p.ToXNARectangle(map_rectangle_size, map_border_size); }
public MapDisplayGameState(Haxxit.Maps.Map map) : base() { Map = map; UndoStack = new UndoStack(256); }
private IEnumerable<DrawableRectangle> MapNodeToRectangle(Haxxit.Maps.Point p) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); if (Map.NodeIsType<Haxxit.Maps.AvailableNode>(p)) { rectangles.AddRange(DrawAvailableNode(p)); if (Map.NodeIsType<Haxxit.Maps.SilicoinNode>(p)) rectangles.AddRange(DrawSilicoinNode(p)); else if (Map.NodeIsType<Haxxit.Maps.DataNode>(p)) rectangles.AddRange(DrawDataNode(p)); } else if (Map.NodeIsType<Haxxit.Maps.SpawnNode>(p)) { Haxxit.Maps.SpawnNode node = Map.GetNode<Haxxit.Maps.SpawnNode>(p); rectangles.AddRange(DrawSpawnNode(p, node.Player, node.program)); } else if (Map.NodeIsType<Haxxit.Maps.ProgramHeadNode>(p)) { Haxxit.Maps.ProgramHeadNode node = Map.GetNode<Haxxit.Maps.ProgramHeadNode>(p); rectangles.AddRange(DrawProgramHeadNode(p, node.Player, node.Program)); } else if (Map.NodeIsType<Haxxit.Maps.ProgramTailNode>(p)) { Haxxit.Maps.ProgramTailNode node = Map.GetNode<Haxxit.Maps.ProgramTailNode>(p); rectangles.AddRange(DrawProgramTailNode(p, node.Head.coordinate - node.coordinate, node.Player, node.Program)); } return rectangles; }
private IEnumerable<DrawableRectangle> DrawSpawnNode(Haxxit.Maps.Point p, Haxxit.Player player, Haxxit.Programs.ProgramFactory program=null) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); if (program != null) { rectangles.AddRange(DrawProgramHeadNode(p, player, program.NewInstance())); } else { rectangles.AddRange(DrawAvailableNode(p)); rectangles.Add(new DrawableRectangle(spawn_overlay, p.ToXNARectangle(map_rectangle_size, map_border_size), Color.Purple)); } return rectangles; }
private IEnumerable<DrawableRectangle> DrawSilicoinNode(Haxxit.Maps.Point p) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); Rectangle square = p.ToXNARectangle(map_rectangle_size, map_border_size); Rectangle extra = square.DeepCopy().ScaleBy(0.75).CenterAlignOn(square); rectangles.Add(new DrawableRectangle(silicoin_overlay, extra, Color.White)); return rectangles; }
private IEnumerable<DrawableRectangle> DrawProgramTailNode(Haxxit.Maps.Point p, Haxxit.Maps.Point connector_direction, Haxxit.Player player, Haxxit.Programs.Program program) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); Tuple<Color, Color> program_colors; if (program.GetType() == typeof(Programs.MonoGameProgram)) { Programs.MonoGameProgram monogame_program = (Programs.MonoGameProgram)program; program_colors = new Tuple<Color, Color>(monogame_program.HeadColor, monogame_program.TailColor); } else if (!players.TryGetValue(player, out program_colors)) program_colors = new Tuple<Color, Color>(Color.Transparent, Color.Transparent); Color node_color = program_colors.Item2; rectangles.Add(new DrawableRectangle(rounded_rect_full, p.ToXNARectangle(map_rectangle_size, map_border_size), node_color)); // Used for drawing connectors between nodes. foreach (Haxxit.Maps.Point neighbor in p.GetOrthologicalNeighbors()) { if (Map.NodeIsType<Haxxit.Maps.ProgramNode>(neighbor) && Map.GetNode<Haxxit.Maps.ProgramNode>(neighbor).Player == player && Object.ReferenceEquals(Map.GetNode<Haxxit.Maps.ProgramNode>(neighbor).Program, program)) rectangles.AddRange(DrawProgramNodeConnector(p, neighbor - p, node_color)); } return rectangles; }
private IEnumerable<DrawableRectangle> DrawProgramNodeConnector(Haxxit.Maps.Point p, Haxxit.Maps.Point connector_direction, Color node_color) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); if (!connector_direction.IsDirectional()) { #if DEBUG throw new Exception(); #else return rectangles; #endif } DrawableRectangle connector = new DrawableRectangle(rectangle_texture, p.ToXNARectangle(map_rectangle_size, map_border_size), node_color); Rectangle area = connector.Area; if (connector_direction == new Haxxit.Maps.Point(0, 1)) // Down { area.Y += map_rectangle_size; area.Height /= (map_rectangle_size / map_border_size); area.Width /= 2; area.X += area.Width / 2; } else if (connector_direction == new Haxxit.Maps.Point(0, -1)) // Up { area.Y -= map_border_size; area.Height /= (map_rectangle_size / map_border_size); area.Width /= 2; area.X += area.Width / 2; } else if (connector_direction == new Haxxit.Maps.Point(1, 0)) // Right { area.X += map_rectangle_size; area.Width /= (map_rectangle_size / map_border_size); area.Height /= 2; area.Y += area.Height / 2; } else // Left { area.X -= map_border_size; area.Width /= (map_rectangle_size / map_border_size); area.Height /= 2; area.Y += area.Height / 2; } connector.Area = area; rectangles.Add(connector); return rectangles; }
private IEnumerable<DrawableRectangle> DrawProgramHeadNode(Haxxit.Maps.Point p, Haxxit.Player player, Haxxit.Programs.Program program) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); Tuple<Color, Color> program_colors; if (program.GetType() == typeof(Programs.MonoGameProgram)) { Programs.MonoGameProgram monogame_program = (Programs.MonoGameProgram)program; program_colors = new Tuple<Color, Color>(monogame_program.HeadColor, monogame_program.TailColor); } else if (!players.TryGetValue(player, out program_colors)) program_colors = new Tuple<Color, Color>(Color.Transparent, Color.Transparent); Color node_color = program_colors.Item1; Rectangle rectangle = p.ToXNARectangle(map_rectangle_size, map_border_size); rectangles.Add(new DrawableRectangle(rounded_rect_back, rectangle, node_color)); rectangles.Add(new DrawableRectangle(rounded_rect_border, rectangle, program_colors.Item2)); string programTextureName = program.TypeName; if (!program_textures.ContainsKey(programTextureName)) program_textures.Add(programTextureName, content.Load<Texture2D>(programTextureName)); rectangles.Add(new DrawableRectangle(program_textures[programTextureName], p.ToXNARectangle(map_rectangle_size, map_border_size).ScaleBy(0.75).CenterAlignOn(rectangle), Color.White)); foreach (Haxxit.Maps.Point neighbor in p.GetOrthologicalNeighbors()) { if (Map.NodeIsType<Haxxit.Maps.ProgramNode>(neighbor) && Map.GetNode<Haxxit.Maps.ProgramNode>(neighbor).Player == player && Object.ReferenceEquals(Map.GetNode<Haxxit.Maps.ProgramNode>(neighbor).Program, program)) rectangles.AddRange(DrawProgramNodeConnector(p, neighbor - p, program_colors.Item2)); } return rectangles; }
private IEnumerable<DrawableRectangle> DrawAvailableNode(Haxxit.Maps.Point p) { List<DrawableRectangle> rectangles = new List<DrawableRectangle>(); Rectangle square = p.ToXNARectangle(map_rectangle_size, map_border_size); rectangles.Add(new DrawableRectangle(rounded_rect_back, square, new Color(52, 96, 141) * 0.5f)); rectangles.Add(new DrawableRectangle(rounded_rect_border, square, new Color(24, 202, 230))); return rectangles; }
public TutorialMapSpawnGameState(Haxxit.Maps.Map map) { display_map_state = new MapDisplayGameState(map); tutorialPlayer = GlobalAccessors.mPlayer1; }
public MapSpawnGameState(Haxxit.Maps.Map map) { display_map_state = new MapDisplayGameState(map); displayingSpawnDialog = false; }