コード例 #1
0
        /// <summary>
        /// Handle the given message
        /// </summary>
        /// <returns>True if handled</returns>
        protected virtual bool ReceiveWriteSlotData(WriteSlotData msg)
        {
            log.Trace("Received: SetSlotData: slot={0}, address={1}", msg.Slot, msg.Address);
            var slot = locSlotMap[msg.Slot];

            if (slot == null)
            {
                // We do not know this slot, so we don't care about it.
                return(true);
            }

            if (slot.Address != msg.Address)
            {
                // Slot now has a different address, do not use this slot any longer
                locSlotMap.Remove(slot);
                return(true);
            }

            log.Trace("Updating slot: {0}, address={1}", msg.Slot, msg.Address);
            slot.Address = msg.Address;
            slot.DirF    = msg.DirF;
            slot.Sound   = msg.Sound;
            slot.Speed   = msg.Speed;
            slot.Touch();
            UpdateLocFromSlot(slot);
            return(true);
        }
コード例 #2
0
ファイル: Master.cs プロジェクト: michaeloed/BinkyRailways
        /// <summary>
        /// Handle the given message
        /// </summary>
        /// <returns>True if handled</returns>
        protected virtual bool SetSlotData(WriteSlotData msg)
        {
            log.Trace("Received: SetSlotData: slot={0}, address={1}", msg.Slot, msg.Address);
            var slot = slotTable.FindBySlotNumber(msg.Slot, true, msg.Address);

            if (slot == null)
            {
                log.Trace("Unknown slot: {0}", msg.Slot);
                return(false);
            }
            log.Trace("Updating slot: {0}, address={1}", msg.Slot, msg.Address);
            slot.Address = msg.Address;
            slot.DirF    = msg.DirF;
            slot.Sound   = msg.Sound;
            slot.Speed   = msg.Speed;
            stateDispatcher.PostAction(slot.SlotUpdated);
            return(true);
        }
コード例 #3
0
 /// <summary>
 /// Write slot data
 /// </summary>
 public override bool Visit(WriteSlotData msg, Client data)
 {
     return(data.ReceiveWriteSlotData(msg));
 }
コード例 #4
0
ファイル: Master.cs プロジェクト: michaeloed/BinkyRailways
 /// <summary>
 /// Write slot data
 /// </summary>
 public override bool Visit(WriteSlotData msg, Master data)
 {
     return(data.SetSlotData(msg));
 }
コード例 #5
0
 public virtual TReturn Visit(WriteSlotData msg, TData data)
 {
     return(default(TReturn));
 }