Ignore:
Timestamp:
2013-07-24 15:02:03 (8 years ago)
Author:
dezhidki
Message:

Talletus.

Location:
2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/AStar.cs

    r4593 r4635  
    5757        public void InitializePathFinder(int xStart, int zStart, int xEnd, int zEnd, bool ignoreSolidnessForEnd) 
    5858        { 
    59             tiles = level.BuildSolidnessTable(mob, ignoreSolidnessForEnd, xEnd, zEnd); 
     59            tiles = level.BuildSolidnessTable(mob, ignoreSolidnessForEnd); 
    6060            nodeMap = new Node[level.Width * level.Height]; 
    6161            open.Clear(); 
     
    100100                canPathFind = false; 
    101101            } 
     102        } 
     103 
     104        public void ApplySolidnessToPos(List<int> posList) 
     105        { 
     106            foreach (int i in posList) 
     107                tiles[i] = false; 
    102108        } 
    103109 
  • 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Ai/Orders/OrderMove.cs

    r4592 r4635  
    1717        private int moveFails = 0; 
    1818        private float lastDist = 0.0F; 
     19        private bool shouldFindPath = false; 
     20        private bool createNewPathFinder; 
    1921 
    20         public OrderMove(float x, float z, float stopDistance = 2.0F, bool excludeEndSolidness = false) 
     22        public OrderMove(float x, float z, float stopDistance = 2.0F, bool excludeEndSolidness = false, bool createNewPathFinder = true) 
    2123        { 
    2224            this.stopDistance = stopDistance; 
    2325            this.excludeEndSolidness = excludeEndSolidness; 
     26            this.createNewPathFinder = createNewPathFinder; 
    2427            this.x = x; 
    2528            this.z = z; 
     
    2932        { 
    3033            base.Initialize(mob); 
    31             mob.PathFinder.InitializePathFinder((int)(mob.X / Viewport.TILESIZE), (int)(mob.Z / Viewport.TILESIZE), (int)(x / Viewport.TILESIZE), (int)(z / Viewport.TILESIZE), excludeEndSolidness); 
     34 
     35            if (createNewPathFinder && mob.DistanceTo(x, z) > 64.0F) 
     36            { 
     37                mob.PathFinder.InitializePathFinder((int)(mob.X / Viewport.TILESIZE), (int)(mob.Z / Viewport.TILESIZE), (int)(x / Viewport.TILESIZE), (int)(z / Viewport.TILESIZE), excludeEndSolidness); 
     38                shouldFindPath = true; 
     39            } 
    3240            return this; 
    3341        } 
     
    3543        public override void Update() 
    3644        { 
    37             if (!mob.PathFinder.CanFindPath) 
    38                 return; 
    39             if (mob.PathFinder.IsPathFinding) 
    40                 mob.PathFinder.FindPath(50); 
     45            if (shouldFindPath) 
     46            { 
     47                if (!mob.PathFinder.CanFindPath) 
     48                    return; 
     49                if (mob.PathFinder.IsPathFinding) 
     50                    mob.PathFinder.FindPath(50); 
     51            } 
    4152 
    42             if (mob.PathFinder.Path.Count > 0 && ppi < mob.PathFinder.Path.Count) 
     53            if (shouldFindPath && mob.PathFinder.Path.Count > 0 && ppi < mob.PathFinder.Path.Count) 
    4354            { 
    4455                Node currentTarget = mob.PathFinder.Path[ppi]; 
     
    8697            get 
    8798            { 
    88                 return (mob.DistanceTo(x, z) < stopDistance) || moveFails > 10 || !mob.PathFinder.CanFindPath; 
     99                return (mob.DistanceTo(x, z) < stopDistance) || moveFails > 5 || !mob.PathFinder.CanFindPath; 
    89100            } 
    90101        } 
Note: See TracChangeset for help on using the changeset viewer.