예제 #1
0
    // Handles update for normal pins
    private void PinUpdate(long thisTick)
    {
        if (thisTick > m_pinLastTick + m_pinTick)
        {
            int     thisCount = 0;
            Vector2 pos       = OnlineMapsLocationService.instance.position;
            for (int i = 0 + m_lastPlace; i < PinUtilities.PointDatas.Count && thisCount < pinsPerUpdate; ++i, ++m_lastPlace, ++thisCount)
            {
                int index = i;
                if (PinUtilities.PointDatas[index]._Pin.enabled == true &&
                    !PinUtilities.PointDatas[index].DeltasActiveNow((long)thisTick, PinUtilities.pinDeltas[PinUtilities.PointDatas[index]._Label]) &&
                    !PinUtilities.PointDatas[index].ActiveNow())
                {
                    PinUtilities.PointDatas[index].RemovePin();
                    continue;
                }
                else if (PinUtilities.PointDatas[index]._Pin.enabled == false &&
                         PinUtilities.PointDatas[index].DeltasActiveNow((long)thisTick, PinUtilities.pinDeltas[PinUtilities.PointDatas[index]._Label]) &&
                         PinUtilities.PointDatas[index].ActiveNow())
                {
                    AddPin(PinUtilities.PointDatas[index]);
                    continue;
                }

                double pinDist = PinUtilities.DistanceInMeters(pos.y, pos.x, PinUtilities.PointDatas[index]._Position.Latitude, PinUtilities.PointDatas[index]._Position.Longitude);
                if (PinUtilities.PointDatas[index]._Pin.texture.name != PinUtilities.PointDatas[index]._Icon.name &&
                    (PinUtilities.PointDatas[index]._Pin.enabled == false ||
                     !PinUtilities.PointDatas[index].DeltasActiveNow((long)thisTick, PinUtilities.pinDeltas[PinUtilities.PointDatas[index]._Label]) ||
                     !PinUtilities.PointDatas[index].ActiveNow() ||
                     pinDist > pinRadius))
                {
                    PinUtilities.PointDatas[index]._Pin.texture = PinUtilities.PointDatas[index]._Icon;
                    PinUtilities.PointDatas[index]._Pin.Init();
                    OnlineMaps.instance.Redraw();
                    continue;
                }
                else if (PinUtilities.PointDatas[index]._Pin.texture.name != PinUtilities.PointDatas[index]._ActiveIcon.name &&
                         PinUtilities.PointDatas[index]._Pin.enabled == true &&
                         PinUtilities.PointDatas[index].DeltasActiveNow((long)thisTick, PinUtilities.pinDeltas[PinUtilities.PointDatas[index]._Label]) &&
                         PinUtilities.PointDatas[index].ActiveNow() &&
                         pinDist < pinRadius)
                {
                    PinUtilities.PointDatas[index]._Pin.texture = PinUtilities.PointDatas[index]._ActiveIcon;
                    PinUtilities.PointDatas[index]._Pin.Init();
                    OnlineMaps.instance.Redraw();
                    continue;
                }

                if (m_lastPlace >= PinUtilities.PointDatas.Count - 1)
                {
                    m_lastPlace = 0;
                }
            }
            m_pinLastTick = (long)thisTick;
        }
    }
예제 #2
0
    // Handles update for token pins
    private void TokenPinUpdate(long thisTick)
    {
        if (thisTick > m_TokenLastPlace + m_pinTick)
        {
            int     thisCount = 0;
            Vector2 pos       = OnlineMapsLocationService.instance.position;
            for (int i = 0 + m_TokenLastPlace; i < PinUtilities.TokenPointDatas.Count && thisCount < pinsPerUpdate; ++i, ++m_TokenLastPlace, ++thisCount)
            {
                int    index   = i;
                double pinDist = PinUtilities.DistanceInMeters(pos.y, pos.x, PinUtilities.TokenPointDatas[index]._Position.Latitude, PinUtilities.TokenPointDatas[index]._Position.Longitude);
                string key     = PinUtilities.TokenPointDatas[index]._Position.Latitude.ToString() + PinUtilities.TokenPointDatas[index]._Position.Longitude.ToString();

                if (PinUtilities.TokenPointDatas[index]._Pin.enabled == false &&
                    PinUtilities.TokenPointDatas[index].TokenDeltasActiveNow((long)thisTick, PinUtilities.tokenPinDeltas[key]) &&
                    PinUtilities.TokenPointDatas[index].ActiveNow())
                {
                    AddTokenPin(PinUtilities.TokenPointDatas[index]);
                    continue;
                }
                else if (pinDist < pinRadius &&
                         PinUtilities.TokenPointDatas[index]._Pin.enabled == true &&
                         PinUtilities.TokenPointDatas[index].TokenDeltasActiveNow((long)thisTick, PinUtilities.tokenPinDeltas[key]) &&
                         PinUtilities.TokenPointDatas[index].ActiveNow())
                {
                    if (PinUtilities.TokenPointDatas[index]._Pin.texture.name != PinUtilities.TokenPointDatas[index]._ActiveIcon.name)
                    {
                        PinUtilities.TokenPointDatas[index]._Pin.texture = PinUtilities.TokenPointDatas[index]._ActiveIcon;
                        PinUtilities.TokenPointDatas[index]._Pin.Init();
                        OnlineMaps.instance.Redraw();
                    }
                    continue;
                }
                else if (pinDist > pinRadius &&
                         PinUtilities.TokenPointDatas[index]._Pin.enabled == true &&
                         PinUtilities.TokenPointDatas[index].TokenDeltasActiveNow((long)thisTick, PinUtilities.tokenPinDeltas[key]) &&
                         PinUtilities.TokenPointDatas[index].ActiveNow())
                {
                    if (PinUtilities.TokenPointDatas[index]._Pin.texture.name != PinUtilities.TokenPointDatas[index]._Icon.name)
                    {
                        PinUtilities.TokenPointDatas[index]._Pin.texture = PinUtilities.TokenPointDatas[index]._Icon;
                        PinUtilities.TokenPointDatas[index]._Pin.Init();
                        OnlineMaps.instance.Redraw();
                    }
                    continue;
                }
            }
            if (m_TokenLastPlace >= PinUtilities.TokenPointDatas.Count - 1)
            {
                m_TokenLastPlace = 0;
            }
        }
        m_tokenPinLastTick = (long)thisTick;
    }
예제 #3
0
    /// <summary> Handles when a pin is clicked </summary>
    public void Pin_Click(OnlineMapsMarkerBase marker)
    {
        try
        {
            Vector2 pos       = OnlineMapsLocationService.instance.position;
            Vector2 markerPos = marker.position;

            double pinDist = PinUtilities.DistanceInMeters(pos.y, pos.x, markerPos.y, markerPos.x);
            if (pinDist < pinRadius)
            {
                PointData pd = PinUtilities.GetPointData(marker.tags, PinUtilities.PointDatas);

                if (PinUtilities.GetTypeFromTag(marker.tags) != "Tokens")
                {
                    UserUtilities.AllocatePoints(pd._Value);
                    UIManager.Instance.IndicateScore(pd._Value, true);

                    SoundManager.Instance.PlaySound("CoinCollect");

                    long now = (long)(DateTime.UtcNow - epochStart).TotalMilliseconds;
                    PinUtilities.pinDeltas[marker.label] = now;

                    pd.RemovePin();

                    PinUtilities.SavePins();
                    UserUtilities.Save();

                    Organizations pinOrg = (Organizations)Enum.Parse(typeof(Organizations), pd._Type.ToString());

                    if (MinigamePinUnlock.Contains(pinOrg) && MiniGameEnabledOrgs.Contains(pinOrg))
                    {
                        Unlock(pinOrg);
                    }

                    if (TriviaEnabledOrgs.Contains(pinOrg))
                    {
                        TriviaGame.CheckForTrivia(marker.label);
                    }

                    return;
                }
                else
                {
                    pd = PinUtilities.GetPointData(marker.tags, PinUtilities.TokenPointDatas);
                    TokenPinActivate(pd, pd._Position.Latitude.ToString() + pd._Position.Longitude.ToString());
                }
            }
        }
        catch (Exception e)
        {
            Debug.Log("ERROR: " + e.Message);
        }
    }