Ejemplo n.º 1
0
        private bool HandleNewBalloon(NewBalloonMessage nbm)
        {
            if(m_bubbles.ContainsKey(nbm.ObjectID)) {
                // Balloon already present !
                Trace.WriteLine(String.Format("Balloon {0} already present!", nbm.ObjectID));
                return true;
            }
            if(m_screens.Count == 0) {
                // No screen to display balloon -- sad
                return true;
            }

            ServerBalloon balloon = new ServerBalloon(nbm.ObjectID);
            m_bubbles[nbm.ObjectID] = balloon;
            // choose a random screen
            int screen_idx = m_random.Next(m_screens.Count);

            // Notify screen with new ballon message
            balloon.Screen = m_screens[screen_idx];
            balloon.Screen.Connection.SendMessage(nbm);

            return true;
        }
Ejemplo n.º 2
0
 private ServerBalloon CreateBalloon()
 {
     lock(m_bubbles)
     {
         int BalloonID = m_nextBalloonID++;
         ServerBalloon b = new ServerBalloon(BalloonID);
         m_bubbles[BalloonID] = b;
         return b;
     }
 }
Ejemplo n.º 3
0
        private bool HandleNewBalloon(NewBalloonMessage nbm)
        {
            if(m_bubbles.ContainsKey(nbm.BalloonID)) {
                // Balloon already present !
                Trace.WriteLine(String.Format("Balloon {0} already present!", nbm.BalloonID));
                return true;
            }
            if(m_screens.Count == 0) {
                // No screen to display balloon -- sad
                return true;
            }

            ServerBalloon balloon = new ServerBalloon(nbm.BalloonID);
            m_bubbles[nbm.BalloonID] = balloon;
            if(m_screens.Count > 0 )
            {
                // choose a random screen
                int screen_idx = m_random.Next(m_screens.Count);
                Screen screen = null;
                if((0 <= screen_idx) || (screen_idx < m_screens.Count))
                {
                    screen = m_screens[screen_idx];
                }
                if(screen == null)
                {
                    Trace.WriteLine(String.Format(
                        "Warning: random screen ID out of bounds: {0} ({1} screens)",
                        screen_idx, m_screens.Count));
                    return true;
                }
                balloon.Screen = screen;
                screen.Balloons.Add(nbm.BalloonID, balloon);
                screen.Connection.SendMessage(nbm);
            }
            else
            {
                balloon.Screen = null;
            }

            return true;
        }