Ejemplo n.º 1
0
        private void Update()
        {
            if (ErrorManager.HasError)
            {
                return;
            }

            DisposeDistance      = SetDisposeDistance;
            MinDisposeMultiply   = SetMinDisposeMultiply;
            GenerateDistance     = SetGenerateDistance;
            MaxGeneratePlatforms = SetMaxGeneratePlatforms;

            Runner.PlayerController player = Player.Current;
            if (player == null)
            {
                ErrorManager.Show("ERROR", "player == null");
                return;
            }
            float moveSpeed = Player.Speed * Time.deltaTime;

            Player.Move(moveSpeed);
            Generator.Generate(moveSpeed, player);
            Platforms.Move(moveSpeed, player);
            DisposedManager.Update(player);
            Missions.Dispatch("run", player.Distance);
        }
Ejemplo n.º 2
0
        public void Move(float speed, Runner.PlayerController player)
        {
            var result = from c in _platforms.List
                         where c.transform.position.z < player.transform.position.z
                         select c;

            foreach (var current in result)
            {
                current.AllowDispose = true;
                _disposedManager.Add(current);
            }
        }
Ejemplo n.º 3
0
        public void Update(Runner.PlayerController player)
        {
            List <Runner.PlatformObject> collection = children.List;
            var len = collection.Count;

            Runner.PlatformObject platform = null;
            var distance = player.gameObject.transform.position;

            for (var i = 0; i < len; i++)
            {
                platform = collection[i];
                if (platform.AllowDispose == false)
                {
                    if (platform.transform.position.z < distance.z)
                    {
                        platform.AllowDispose = true;
                        Add(platform);
                    }
                    else
                    {
                        break;
                    }
                }
            }

            len = list.Count;
            var   index = 0;
            float currentDistance;
            float halfPlatformSize;

            while (index < len)
            {
                platform         = list[index];
                currentDistance  = Mathf.Abs(platform.transform.position.Distance(ref distance));
                halfPlatformSize = platform.Size.z / 2;
                if (currentDistance >= LocationManager.DisposeDistance && currentDistance > halfPlatformSize * LocationManager.MinDisposeMultiply)
                {
                    index++;
                    platform.AllowDispose = false;
                    children.Remove(platform);
                }
                else
                {
                    break;
                }
            }

            if (index > 0)
            {
                list.RemoveRange(0, index);
            }
        }
Ejemplo n.º 4
0
        public void Move(float move, Runner.PlayerController player)
        {
            vectorHelper.Set(0, 0, -move);
            var len = list.Count;

            Runner.PlatformObject p;
            float distance;

            for (var i = 0; i < len; i++)
            {
                p = list[i];
                p.Move(vectorHelper);
                distance = p.Distance(player);
            }
        }
Ejemplo n.º 5
0
        public void Generate(float speed, Runner.PlayerController player)
        {
            Runner.PlatformObject platform = _platforms.Last;
            bool isStartPlatform           = false;

            if (platform == null)
            {
                platform        = _platformsManager.GetRandomStartPlatform(Runner.PlayerData.PlatformType);
                isStartPlatform = true;
                if (platform == null)
                {
                    ErrorManager.Show("empty start platform", "add start platforms");
                    return;
                }
                PlayerData.PlatformTypeRemainingDistance = _platformsManager.GetDistanceByType(platform.Type);
                _next = platform.GetNextRandom();
                _platforms.Add(platform);
            }
            float   distance = platform.Distance(player);
            Vector3 size;
            int     count = 0;

            while (distance <= LocationManager.GenerateDistance && count < Runner.LocationManager.MaxGeneratePlatforms)
            {
                int nextType = -1;
                if (PlayerData.PlatformTypeRemainingDistance <= 0.0f && isStartPlatform == false)
                {
                    nextType = _platformsManager.GetTypeByDistance(player.Distance, PlayerData.PlatformType, Random.Range(0, 2) > 0);
                    if (nextType == -1)
                    {
                        nextType = platform.Type;
                    }
                    if (nextType != PlayerData.PlatformType)
                    {
                        _next = _platformsManager.GetTransitionPlatform(PlayerData.PlatformType, nextType);
                    }
                    if (_next == null)
                    {
                        _next = _platformsManager.GetRandomPlatformByTypeAndDistance(PlayerData.PlatformType, player.Distance);
                    }
                    PlayerData.PlatformType = nextType;
                    PlayerData.PlatformTypeRemainingDistance += _platformsManager.GetDistanceByType(nextType);
                }
                else
                {
                    _next = _next != null ? _next : _platformsManager.GetRandomPlatformByTypeAndDistance(PlayerData.PlatformType, _player.Distance);
                }
                _platformsManager.GetSize(out size, platform);
                vectorHelper.x           = 0;
                vectorHelper.y           = 0;
                vectorHelper.z           = size.z - size.z / 2;
                _next.transform.position = platform.transform.position + vectorHelper;
                platform = _next;
                _platformsManager.GetSize(out size, platform);
                vectorHelper.x = 0;
                vectorHelper.y = 0;
                vectorHelper.z = size.z - size.z / 2;
                platform.transform.position += vectorHelper;
                distance = platform.Distance(player);
                _platforms.Add(platform);
                _next = platform.GetNextRandom();
                count++;
            }
        }