Beispiel #1
0
    private void SetCurrentSpawnPoint(LoadPoint aLoadPoint)
    {
        switch (aLoadPoint)
        {
        case LoadPoint.AreaMRoom1:
            CurrentSpawnPoint = AreaMRoom1_SpawnPoint;
            break;

        case LoadPoint.AreaMRoom4:
            CurrentSpawnPoint = AreaMRoom4_SpawnPoint;
            break;

        case LoadPoint.Area1Room2:
            CurrentSpawnPoint = Area1Room2_SpawnPoint;
            break;

        case LoadPoint.Area1Room8:
            CurrentSpawnPoint = Area1Room2_SpawnPoint;
            break;

        case LoadPoint.Area1Room15:
            CurrentSpawnPoint = Area1Room15_SpawnPoint;
            break;

        default:
            break;
        }
    }
 public static dynamic GetTSObject(LoadPoint dynObject)
 {
     if (dynObject is null)
     {
         return(null);
     }
     return(dynObject.teklaObject);
 }
Beispiel #3
0
 public LoadSystem(Vector2 startPoint, Vector2 endPoint, List <Vector2> map)
 {
     this.endPoint        = new LoadPoint((int)endPoint.x, (int)endPoint.y);
     LoadPoint.endPoint   = this.endPoint;
     this.startPoint      = new LoadPoint((int)startPoint.x, (int)startPoint.y);
     LoadPoint.startPoint = this.startPoint;
     this.map             = new List <LoadPoint>();
     foreach (Vector2 point in map)
     {
         this.map.Add(new LoadPoint((int)point.x, (int)point.y));
     }
 }
Beispiel #4
0
    /// <summary>
    /// Clears all data in current SaveData.
    /// </summary>
    public void ResetSaveData(int in_iSaveDataIndex)
    {
        SaveDataIndex = in_iSaveDataIndex;

        if (DataPools == null)
        {
            DataPools = new int[(int)GSaveManager.eDataPoolID.MAX_POOL_IDS];
        }

        for (int i = 0; i < DataPools.Length; i++)
        {
            DataPools[i] = 0;
        }

        SecurityClearance = -1;

        CurrentSavePoint = LoadPoint.AreaMRoom1;
    }
Beispiel #5
0
    public void TransferPlayer(LoadPoint in_LoadPoint)
    {
        switch (in_LoadPoint)
        {
        case LoadPoint.AreaMRoom1:
            activateLevel(0);
            Player.transform.position = AreaMRoom1_SpawnPoint.transform.position;
            break;

        case LoadPoint.AreaMRoom4:
            activateLevel(0);
            Player.transform.position = AreaMRoom4_SpawnPoint.transform.position;
            break;

        case LoadPoint.AreaMRoom11:
            activateLevel(0);
            Player.transform.position = AreaMRoom11_SpawnPoint.transform.position;
            break;

        case LoadPoint.Area1Room1:
            activateLevel(1);
            Player.transform.position = Area1Room1_SpawnPoint.transform.position;
            break;

        case LoadPoint.Area1Room2:
            activateLevel(1);
            Player.transform.position = Area1Room2_SpawnPoint.transform.position;
            break;

        case LoadPoint.Area1Room8:
            activateLevel(1);
            Player.transform.position = Area1Room8_SpawnPoint.transform.position;
            break;

        case LoadPoint.Area1Room15:
            activateLevel(1);
            Player.transform.position = Area1Room15_SpawnPoint.transform.position;
            break;

        default:
            break;
        }
    }
Beispiel #6
0
    protected override void Start()
    {
        _stateInfo = new StateInfo(STATE_NAME, this);
        base.Start();

        StateMachine = StateMachine <eLevels> .Initialize(this);

        LoadPoint loadPoint = GPlayerManager.Instance.PlayerData.CurrentSavePoint;

        switch (loadPoint)
        {
        case LoadPoint.AreaMRoom1:
            CurrentSpawnPoint = AreaMRoom1_SpawnPoint;
            activateLevel(0);
            break;

        case LoadPoint.AreaMRoom4:
            CurrentSpawnPoint = AreaMRoom4_SpawnPoint;
            activateLevel(0);
            break;

        case LoadPoint.Area1Room2:
            CurrentSpawnPoint = Area1Room2_SpawnPoint;
            activateLevel(1);
            break;

        case LoadPoint.Area1Room8:
            CurrentSpawnPoint = Area1Room8_SpawnPoint;
            activateLevel(1);
            break;

        case LoadPoint.Area1Room15:
            CurrentSpawnPoint = Area1Room15_SpawnPoint;
            activateLevel(1);
            break;

        default:
            break;
        }

        SetCurrentSpawnPoint(loadPoint);
        Player.transform.position = CurrentSpawnPoint.transform.position;
    }
Beispiel #7
0
            //两者距离之和


            public LoadPoint(int x, int y, LoadPoint parentPoint = null)
            {
                this.X           = x;
                this.Y           = y;
                this.ParentPoint = parentPoint;
                if (parentPoint == null)
                {
                    this.G = 0;
                }
                else
                {
                    this.G = parentPoint.G + 1;
                }

                if (endPoint != null)
                {
                    this._H = Mathf.Abs(endPoint.X - this.X) + Mathf.Abs(endPoint.Y - this.Y);
                    this._F = this.G + this.H;
                }
            }
Beispiel #8
0
        public List <LoadPoint> FindLoadPath()
        {
            openPoints.Add(startPoint);

            while (openPoints.Count > 0)
            {
                //列表排序
                openPoints.Sort(delegate(LoadPoint x, LoadPoint y)
                {
                    return(Comparer <int> .Default.Compare(x.F, y.F));
                });

                LoadPoint minPoint = openPoints[0];


                // H=1 说明查找结束
                if (minPoint.H == 1)
                {
                    List <LoadPoint> path = new List <LoadPoint>();
                    path.Add(endPoint);
                    endPoint.ParentPoint = minPoint;
                    while (path[path.Count - 1].ParentPoint != null)
                    {
                        path.Add(path[path.Count - 1].ParentPoint);
                    }
                    path.Reverse();

                    return(path);
                }

                //添加到关闭列表
                closePoints.Add(minPoint);
                //从打开别表删除
                openPoints.Remove(minPoint);

                foreach (LoadPoint point in minPoint.SurroundPoints())
                {
                    //关闭列表是否存在 关闭列表中已存在 说明已经处理过 不做处理
                    if (closePoints.Exists(delegate(LoadPoint p)
                    {
                        return(p.X == point.X && p.Y == point.Y);
                    }))
                    {
                        continue;
                    }
                    //判断 是否存在在地图中 不存在不做处理
                    if (!map.Exists(delegate(LoadPoint mp)
                    {
                        return(mp.X == point.X && mp.Y == point.Y);
                    }))
                    {
                        continue;
                    }
                    //打开列表是否存在
                    LoadPoint oldPoint = openPoints.Find(delegate(LoadPoint po)
                    {
                        return(po.X == point.X && po.Y == point.Y);
                    });
                    //存在 则比较两个 的G值 存在的G值大于则  替换
                    if (oldPoint != null && oldPoint.G > point.G)
                    {
                        oldPoint.ParentPoint = minPoint;
                    }
                    else
                    {
                        openPoints.Add(point);
                    }
                }
            }

            //跳出循环说明查找结束 没有找到路径
            return(null);
        }
Beispiel #9
0
 public LoadSystem(LoadPoint startPoint, LoadPoint endPoint, List <LoadPoint> map)
 {
     this.startPoint = startPoint;
     this.endPoint   = endPoint;
     this.map        = map;
 }