Exemple #1
0
        public void Tick(float timeInMiliseconds)
        {
            System.Collections.Generic.List <EntityId> entitiesToAck = new System.Collections.Generic.List <EntityId>();

            entitiesToAck = entitiesToConfirmAuthorityLoss.Keys.ToList();

            foreach (EntityId id in entitiesToAck)
            {
                --entitiesToConfirmAuthorityLoss[id];

                if (entitiesToConfirmAuthorityLoss[id] <= 0)
                {
                    connection.SendAuthorityLossImminentAcknowledgement <Improbable.Demo.TurretInfo>(id);
                    entitiesToConfirmAuthorityLoss.Remove(id);
                }
            }

            foreach (EntityId id in authoritativeTurretRotations)
            {
                var update = new Improbable.Demo.TurretInfo.Update();

                update.rotation = checkOutTurretRotations[id] + (rotationSpeed * (timeInMiliseconds / 1000f));
                connection.SendComponentUpdate(id, update);
            }
        }
Exemple #2
0
        public void OnTurretInfoComponentAuthorityChanged(AuthorityChangeOp op)
        {
            if (op.Authority == Authority.Authoritative)
            {
                authoritativeTurretRotations.Add(op.EntityId);

                var update = new Improbable.Demo.TurretInfo.Update();
                update.colorId = thisWorkerColorId;
                connection.SendComponentUpdate(op.EntityId, update);

                connection.SendCommandRequest(op.EntityId, new CheckOutColor.Commands.SendAndUpdateColorId.Request(thisWorkerColorId), 300);
            }
            else if (op.Authority == Authority.AuthorityLossImminent)
            {
                var update = new Improbable.Demo.TurretInfo.Update();
                update.AddLosingAuth(LosingTurretAuthInfo.Create());
                connection.SendComponentUpdate(op.EntityId, update);

                entitiesToConfirmAuthorityLoss[op.EntityId] = framesBeforeAcknowledgingAuthLoss;
            }
            else if (op.Authority == Authority.NotAuthoritative)
            {
                authoritativeTurretRotations.Remove(op.EntityId);
            }
        }