コード例 #1
0
ファイル: Clock.cs プロジェクト: Japend/LuxAura
    /// <summary>
    /// Removes the listener so it wont be called aggain
    /// </summary>
    /// <param name="ear">Listener to be removed</param>
    /// <param name="compact">If is false, the array wont be compacted. use this when multiple eliminations have to be done</param>
    /// <returns>True if it was removed, false it it wasn't found</returns>
    public bool RemoveListener(ClockEventReceiver ear)
    {
        for (int i = 0; i < ticksReceivers.Length; i++)
        {
            ClockEventReceiver aux;

            if (ticksReceivers[i] == ear)
            {
                //we swap with the last one and delete
                if (i < currentReceivers)
                {
                    aux = ticksReceivers[currentReceivers];
                    ticksReceivers[currentReceivers] = null;
                    ticksReceivers[i] = aux;
                }
                else
                {
                    ticksReceivers[i] = null;
                }
                currentReceivers--;

                return(true);
            }
        }
        return(false);
    }
コード例 #2
0
ファイル: Clock.cs プロジェクト: Japend/LuxAura
    /// <summary>
    /// Adds a event receiver to the clock so it is called when the clock ticks
    /// </summary>
    /// <param name="ear">Receiver to be added</param>
    public void AddListener(ClockEventReceiver ear)
    {
        if (ticksReceivers == null)
        {
            ticksReceivers   = new ClockEventReceiver[10];
            currentReceivers = 0;
        }

        if (currentReceivers >= ticksReceivers.Length - 1)
        {
            increaseReceiversCapacity();
        }

        ticksReceivers[currentReceivers] = ear;
        currentReceivers++;
    }
コード例 #3
0
ファイル: Clock.cs プロジェクト: Japend/LuxAura
    /// <summary>
    /// Increasses capacity of the clocks receiver array
    /// </summary>
    private void increaseReceiversCapacity()
    {
        int goalCapacity = ticksReceivers.Length * 2;

        ClockEventReceiver[] aux = new ClockEventReceiver[goalCapacity];

        for (int i = 0; i < goalCapacity; i++)
        {
            if (i < ticksReceivers.Length - 1)
            {
                aux[i] = ticksReceivers[i];
            }
            else
            {
                aux[i] = null;
            }
        }

        ticksReceivers = aux;
    }