Example #1
0
        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);
        }
Example #2
0
 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;
 }
Example #3
0
 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);
 }
Example #4
0
 public void Select(NodeBase node)
 {
     if (SelectTest(node))
     {
         SelectNode = node;
         TargetArmy = node.Army;
         OnNodeSelected(this, new EventArgs());
     }
     else
         OnNodeNotSelected(this, new EventArgs());
 }
Example #5
0
 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;
 }
Example #6
0
        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;
        }
Example #7
0
        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;
        }
Example #8
0
		public static void Wirte(this BinaryWriter writer,NodeBase node)
		{
			node.WriteNode(writer);
		}
Example #9
0
        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;
            }

        }
Example #10
0
 void btnnode_Click(object sender, EventArgs e)
 {
     mode = 1;
     selectNode = null;
 }
Example #11
0
 public TwoWayRoad(int id, NodeBase node1, NodeBase node2)
     : base(id, node1, node2)
 {
 }
Example #12
0
 public bool SelectTest(NodeBase node)
 {
     return (node.Army != null);
 }
Example #13
0
 protected override void UnloadContent()
 {
     NodeData.Dispose();
     NodeData = null;
     base.UnloadContent();
 }
Example #14
0
 public Node(LogicGraph game, NodeBase data)
     : base(game)
 {
     NodeData = data;
     this.DrawOrder = 1;
 }
Example #15
0
 public Soilder(int id, ArmyDefinition army, NodeBase position, PlayerBase owner) :
     base(id, army, position, owner)
 {
 }