예제 #1
0
        protected override void HandleMessage()
        {
            if (ClientHelloMessage.SIs(readBuffer)) {
                int new_id = new ClientHelloMessage(readBuffer).Id;
                Id = new_id;
                Console.WriteLine("connected!");
            }
            if (HelloMessage.SIs(readBuffer)) {
                int new_id = new HelloMessage(readBuffer).Id;

                IUpdateable updateable = waitingForId.Dequeue();
                Type t = updateable.GetType();
                stuff[t][new_id] = updateable;
                if (updateable is Slug) {
                    var slug = (Slug)updateable;
                    SendMessage(new SlugMessage(new_id, slug.Position, slug.Speed, slug.Magnum.Owner.Id));
                } else if (updateable is Gangster) {
                    var gangster = (Gangster)updateable;
                    SendMessage(new GangsterMessage(new_id, gangster.Position));
                }
            } else if (GangsterMessage.SIs(readBuffer)) {
                var gm = new GangsterMessage(readBuffer);
                var gangster = (Gangster)stuff[typeof(Gangster)][gm.Id];
                gangster.Position = gm.Position;
            } else if (SlugMessage.SIs(readBuffer)) {
                var sm = new SlugMessage(readBuffer);
                var slug = (Slug)stuff[typeof(Slug)][sm.Id];
                slug.Position = sm.Position;
                slug.Speed = sm.Velocity;
            }
        }
예제 #2
0
 public void Update(float _delta)
 {
     if (hasId) {
         var message = new GangsterMessage(id, hero.Position);
         SendMessage(message);
     }
 }
예제 #3
0
 protected override void HandleMessage()
 {
     if (GangsterMessage.SIs(readBuffer)) {
         var gm = new GangsterMessage(readBuffer);
         Console.WriteLine("position is " + gm.Position);
     }
 }
예제 #4
0
 public void Receive(GangsterMessage _message)
 {
     position = _message.Position;
     id = _message.Id;
 }