protected virtual void AddArmy(Type type, NodeBase node, PlayerBase player) { if (type == null && !type.IsSubclassOf(typeof(ArmyBase))) throw new ArgumentNullException("type"); ArmyBase newarmy = Activator.CreateInstance(type, armyNext++, node, player) as ArmyBase; player.Armys.Add(newarmy.Id, newarmy); this.ArmyList.Add(newarmy.Id, newarmy); }
public RoadBase(int id, NodeBase node1, NodeBase node2) { Node1 = node1; node1.Roads.Add(this); Node2 = node2; node2.Roads.Add(this); this.RoadDisplayMode = RoadDisplayMode.Direct; this.Id = id; }
public override void Dispose() { if (Node1 != null) Node1.Roads.Remove(this); if (Node2 != null) Node2.Roads.Remove(this); Node1 = null; Node2 = null; GC.SuppressFinalize(this); }
public void Select(NodeBase node) { if (SelectTest(node)) { SelectNode = node; TargetArmy = node.Army; OnNodeSelected(this, new EventArgs()); } else OnNodeNotSelected(this, new EventArgs()); }
protected ArmyBase(int id, ArmyDefinition army,NodeBase position, PlayerBase owner) { Id = id; Owner = owner; Position = position; Name = army.DefaultName; Attack = army.DefaultAttack; Move = army.DefaultMove; Description = army.DefaultDescription; Definition = army; }
public static ArmyBase CreateArmy(ArmyDefinition armyDefinition, NodeBase position, PlayerBase owner) { ArmyBase army; army = ResourceManager.CurrentResouceManager.LoadedArmys[armyDefinition.EntityType].InvokeMember( null, System.Reflection.BindingFlags.CreateInstance, null, null, new object[] { index++, armyDefinition, position, owner } ) as ArmyBase; return army; }
public static RoadBase CreateRode(int typeId,NodeBase node1,NodeBase node2) { RoadBase road; road = ResourceManager.CurrentResouceManager.LoadedRoads[ ResourceManager.CurrentResouceManager.RoadDefinitions[typeId]].InvokeMember( null, System.Reflection.BindingFlags.CreateInstance, null, null, new object[] { index++, node1, node2 } ) as RoadBase; return road; }
public static void Wirte(this BinaryWriter writer,NodeBase node) { node.WriteNode(writer); }
void comp_OnButtonUp(object sender, EventArgs e) { Node node = ((Node)sender); if (mode == 4) { map.Nodes.Remove(node.NodeData); this.Components.Remove(node); int length = this.Components.Count; for (int i = 0; i < length; i++) { if(Components[i] is Road) { var r = Components[i] as Road; if (r.RodeData.Node1 == null || r.RodeData.Node2 == null) { Components.Remove(r); i--; length--; } } } } //如果目前没有选择任何节点则选中此节点 else if (selectNode == null) { selectNode = node.NodeData; } else { //否则先寻找两节点之间是否有路 bool flag = true; RoadBase rode = null; foreach(var r in selectNode.Roads) { if (r.Node1 == node.NodeData || r.Node2 == node.NodeData) { flag = false; rode = r; break; } } //如果此时是新建道路模式 节点间没路 且两节点不同则添加一个新的路 if (mode == 2) { if (selectNode != ((Node)sender).NodeData && flag) { rode = RoadBase.CreateRode(0, selectNode, node.NodeData); rode.RoadDisplayMode = roadmode; map.Roads.Add(rode); var rodecomp = new Road(Game, rode); this.Components.Add(rodecomp); } } //否则判断是否为道路删除模式 节点间有路 且两节点不同则删除这个路 else if (mode == 3) { if (selectNode != ((Node)sender).NodeData && !flag) { Road res = null; foreach(var com in this.Components) { if (com is Road) { Road r = com as Road; if (r.RodeData == rode) { res = r; } } } if(res!=null) { this.Components.Remove(res); map.Roads.Remove(res.RodeData); res.Dispose(); } } } selectNode = null; mode = 0; } }
void btnnode_Click(object sender, EventArgs e) { mode = 1; selectNode = null; }
public TwoWayRoad(int id, NodeBase node1, NodeBase node2) : base(id, node1, node2) { }
public bool SelectTest(NodeBase node) { return (node.Army != null); }
protected override void UnloadContent() { NodeData.Dispose(); NodeData = null; base.UnloadContent(); }
public Node(LogicGraph game, NodeBase data) : base(game) { NodeData = data; this.DrawOrder = 1; }
public Soilder(int id, ArmyDefinition army, NodeBase position, PlayerBase owner) : base(id, army, position, owner) { }