Example #1
0
	void Start() {
		unlocks = GlobalController.save.unlocks;
		rb2d = GetComponent<Rigidbody2D>();
		anim = GetComponent<Animator>();
		options = GlobalController.save.options;
		this.facingRight = false;
        cyanMaterial = Resources.Load<Material>("Shaders/CyanFlash");
		spr = GetComponent<SpriteRenderer>();
        defaultMaterial = GetComponent<SpriteRenderer>().material;
		gunEyes = transform.Find("GunEyes").transform;
		gun = GetComponentInChildren<Gun>();
		interaction = GetComponentInChildren<InteractAppendage>();
		lastSafeOffset = this.transform.position;
		speedLimiter = GetComponent<SpeedLimiter>();
		spriteRenderers = new List<SpriteRenderer>(GetComponentsInChildren<SpriteRenderer>(includeInactive:true));
		combatActives = GetComponentsInChildren<ActiveInCombat>(includeInactive:true);
		diamondShine = Resources.Load("Effects/DiamondShine") as GameObject;
		airAttackTracker = GetComponent<AirAttackTracker>();
		RefreshAirMovement();
		deathEvent = Resources.Load("ScriptableObjects/Events/Player Death") as GameEvent;
		groundCheck = GetComponent<PlayerGroundCheck>();
		groundData = groundCheck.groundData;
		LoadFromSaveData(GlobalController.save);
		EnableTriggers();
	}
 void Start()
 {
     unlocks          = GetComponentInParent <PlayerUnlocks>();
     rb2d             = GetComponent <Rigidbody2D>();
     anim             = GetComponent <Animator>();
     this.facingRight = false;
     currentHP        = unlocks.maxHP;
     currentEnergy    = unlocks.maxEnergy;
     maxEnergy        = 5;
     cyanMaterial     = Resources.Load <Material>("Shaders/CyanFlash");
     spr             = GetComponent <SpriteRenderer>();
     defaultMaterial = GetComponent <SpriteRenderer>().material;
     gunEyes         = transform.Find("GunEyes").transform;
     gun             = GetComponentInChildren <Gun>();
     interaction     = GetComponentInChildren <InteractAppendage>();
     Flip();
     ResetAirJumps();
     lastSafeOffset = this.transform.position;
     speedLimiter   = GetComponent <SpeedLimiter>();
 }
Example #3
0
        static TcpConnection()
        {
            UploadSpeedLimitGlobal   = new SpeedLimiter();
            DownloadSpeedLimitGlobal = new SpeedLimiter();

            _transferAwaitablesPool = new ObjectPool <TransferSocketAwaitable>(() =>
            {
                if (!_bufferInitialized)
                {
                    // lock to avoid multiple initialization
                    lock (_transferAwaitablesPool)
                    {
                        if (!_bufferInitialized)
                        {
                            if (_operationBufferLength <= 0)
                            {
                                _operationBufferLength = 64 * 1024;
                                Logger.Info("Using default operation buffer length");
                            }
                        }

                        _bufferInitialized = true;
                    }
                }

                Interlocked.Increment(ref _awaitablesCount);

                var arg = new SocketAsyncEventArgs();
                arg.SetBuffer(new byte[_operationBufferLength], 0, _operationBufferLength);

                return(new TransferSocketAwaitable(arg));
            });

            _voidAwaitablesPool = new ObjectPool <VoidSocketAwaitable>(() => {
                var arg = new SocketAsyncEventArgs();
                return(new VoidSocketAwaitable(arg));
            });
        }
Example #4
0
        public static AddSettingsModel LoadAddSettings()
        {
            AddSettingsModel model = new AddSettingsModel();

            try
            {
                string    filePath  = Settings.FilesSavePath + "AddSettings.xml";
                XDocument syncTasks = XDocument.Load(filePath);

                SpeedLimiter speedLimiter  = new SpeedLimiter();
                XElement     xSpeedLimiter = syncTasks.Root.Element("Ограничение_скорости");
                if (bool.TryParse(xSpeedLimiter.Element("Ограничение_скачивания").Value, out bool isLimitDownload))
                {
                    speedLimiter.IsLimitDownload = isLimitDownload;
                }
                if (bool.TryParse(xSpeedLimiter.Element("Ограничение_загрузки").Value, out bool isLimitUpload))
                {
                    speedLimiter.IsLimitUpload = isLimitUpload;
                }
                if (int.TryParse(xSpeedLimiter.Element("Скорость_скачивания").Value, out int downloadSpeedLimit))
                {
                    speedLimiter.DownloadSpeedLimit = downloadSpeedLimit;
                }
                if (int.TryParse(xSpeedLimiter.Element("Скорость_загрузки").Value, out int uploadSpeedLimit))
                {
                    speedLimiter.UploadSpeedLimit = uploadSpeedLimit;
                }
                model.SpeedLimiter = speedLimiter;
            }
            catch (Exception e)
            {
                LogController.Error(logger, e, $"Не удалось загрузить файл AddSettings.xml");
            }

            return(model);
        }
    public GameObject SpawnJunk(GameObject prefab, Vector3 position)
    {
        //Create
        GameObject junkObject = (GameObject)Instantiate(prefab);

        //Set position
        junkObject.transform.position = position;

        //Track
        junkSpawnedList.Add(junkObject);

        //Generator arrow
        GenerateArrow(junkObject, arrowPrefabJunk);

        //Set max speed limit
        SpeedLimiter speedScript = gameObject.GetComponent <SpeedLimiter>();

        if (speedScript != null)
        {
            speedScript.SetSpeed(GetPlayerOptions().currentSettings.maxJunkSpeed);
        }

        return(junkObject);
    }
Example #6
0
 public AddSettingsModel()
 {
     SpeedLimiter = new SpeedLimiter();
 }
Example #7
0
 private void Initialize()
 {
     UploadSpeedLimit   = new SpeedLimiter();
     DownloadSpeedLimit = new SpeedLimiter();
 }
        protected async Task CopyStream(Stream responseStream, CancellationToken stopToken)
        {
            using (responseStream)
            {
                using (var cache = new MemoryStream(CacheSize))
                {
                    var buffer             = new byte[BufferSize];
                    var oldTotalDownloaded = TotalDownloaded;
                    var lastSpeedUpdate    = DateTime.Now;
                    var endReached         = false;
                    int bytesRead;
                    do
                    {
                        // Read data from internet
                        bytesRead =
                            await
                            responseStream.ReadAsync(buffer, 0, buffer.Length, stopToken);

                        // Notify user about new data
                        if (bytesRead > 0)
                        {
                            OnDataAvailable(bytesRead);
                        }

                        lock (this)
                        {
                            // Limit buffer early if we meet the range expected bytes
                            if ((TotalSize > 0) && (TotalDownloaded + bytesRead > TotalSize))
                            {
                                bytesRead = (int)(TotalSize - TotalDownloaded);
                                if (bytesRead < 0)
                                {
                                    throw new DownloadException("Invalid value for the end range.");
                                }
                                endReached = true;
                            }
                        }

                        // Write newly read data to the memory cache
                        await cache.WriteAsync(buffer, 0, bytesRead);

                        _downloaded     += bytesRead;
                        TotalDownloaded += bytesRead;

                        // If the connection is closed or canceled,
                        // or if we have meet the end,
                        // or if the memory cache don't have enough space for another full buffer
                        if (endReached ||
                            (bytesRead == 0) ||
                            stopToken.IsCancellationRequested ||
                            (cache.Length < cache.Position + buffer.Length))
                        {
                            // Dump memory cache to stream
                            var cacheContent = new byte[cache.Position];
                            cache.Seek(0, SeekOrigin.Begin);
                            await cache.ReadAsync(cacheContent, 0, cacheContent.Length);

                            if (Stream.CanSeek)
                            {
                                Stream.Seek(TotalWritten, SeekOrigin.Begin);
                            }
                            await Stream.WriteAsync(cacheContent, 0, cacheContent.Length);

                            // Reset memory cache
                            cache.Seek(0, SeekOrigin.Begin);
                            TotalWritten += cacheContent.Length;

                            // Notify user
                            OnProgressChanged();
                        }

                        // Limit the reading speed
                        var limit = SpeedLimiter?.Limit(this);
                        if (limit != null)
                        {
                            await limit;
                        }

                        // Calculating time elapsed since last update
                        var speedUpdateElapsed = (DateTime.Now - lastSpeedUpdate).TotalMilliseconds;

                        // Calculate total download in the elapsed time
                        var downloadedBytes = TotalDownloaded - oldTotalDownloaded;

                        // If necessary, update the speed information
                        if (speedUpdateElapsed > UpdateMillisecond)
                        {
                            lastSpeedUpdate    = DateTime.Now;
                            oldTotalDownloaded = TotalDownloaded;

                            // Calculating elapsed fraction
                            var fractionOfSecond = speedUpdateElapsed / 1000d;

                            // Calculating current Bps speed
                            Speed = (long)(downloadedBytes / fractionOfSecond);

                            // Normalizing speed for the last average duration
                            var fractionOfAverage = speedUpdateElapsed / AverageSpeedDurationInMillisecond;
                            AverageSpeed = AverageSpeed > 0
                                ? (long)(AverageSpeed * (1 - fractionOfAverage) + Speed * fractionOfAverage)
                                : Speed;

                            // Notify user
                            OnProgressChanged();
                        }
                    } while (!endReached && (bytesRead > 0) && !stopToken.IsCancellationRequested);
                }
            }
        }