Example #1
0
 protected Subscriber Register(string channel, Type msgType, Delegate action)
 {
     mChannels[channel] = new ChannelRegister {
         MessageType = msgType, Action = action
     };
     return(this);
 }
Example #2
0
        public static Register[] instantiate()
        {
            Register[] retval = new Register[61];

            for (char c = 'A'; c <= 'Z'; c++)
            {
                if (c == 'X' || c == 'Y')
                {
                    continue;
                }
                retval[c - 'A'] = new CustomRegister(c);
            }
            retval[23] = new XRegister();
            retval[24] = new YRegister();

            retval[26] = new AimRegister();
            retval[27] = new BottomRegister();
            retval[28] = new ChannelRegister();
            retval[29] = new ChrononRegister();
            retval[30] = new CollisionRegister();
            retval[31] = new DamageRegister();
            retval[32] = new DopplerRegister();
            retval[33] = new EnergyRegister();
            retval[34] = new FriendRegister();
            retval[35] = new HistoryRegister();
            retval[36] = new IDRegister();
            retval[37] = new KillsRegister();
            retval[38] = new LeftRegister();
            retval[39] = new LookRegister();
            retval[40] = new MoveXRegister();
            retval[41] = new MoveYRegister();
            retval[42] = new ProbeRegister();
            retval[43] = new RadarRegister();
            retval[44] = new RandomRegister();
            retval[45] = new RangeRegister();
            retval[46] = new RightRegister();
            retval[47] = new RobotsRegister();
            retval[48] = new ScanRegister();
            retval[49] = new ShieldRegister();
            retval[50] = new SignalRegister();
            retval[51] = new SpeedXRegister();
            retval[52] = new SpeedYRegister();
            retval[53] = new TeamMatesRegister();
            retval[54] = new TopRegister();
            retval[55] = new WallRegister();

            retval[56] = new BulletRegister();
            retval[57] = new FireRegister();
            retval[58] = new MissileRegister();
            retval[59] = new HellboreRegister();
            retval[60] = new StunnerRegister();

            return(retval);
        }
Example #3
0
 private static bool TryGetChannelRegister(long offset, out int channelNo, out ChannelRegister channelRegister)
 {
     if (offset < UnifiedChannelRegistersStart || offset > UnifiedChannelRegistersEnd)
     {
         channelRegister = 0;
         channelNo       = 0;
         return(false);
     }
     channelNo       = (int)((offset - UnifiedChannelRegistersStart) / UnifiedChannelSize);
     channelRegister = (ChannelRegister)((offset - UnifiedChannelRegistersStart) % UnifiedChannelSize);
     return(true);
 }
Example #4
0
        private uint ReadChannelRegister(int channelNo, ChannelRegister register)
        {
            switch (register)
            {
            case ChannelRegister.Control:
                return(controlRegisters[channelNo].Read());

            case ChannelRegister.Status:
                return(statusRegisters[channelNo].Read());

            default:
                this.Log(LogLevel.Warning, "Unhandled read on channel register {0}, channel no {1}.", register, channelNo);
                return(0);
            }
        }
        internal void UpdateChannel(LocalLCDWriterComponent Comp, ulong arg2, ulong requester)
        {
            ChannelRegister value;

            if (!ChannelDictionary.TryGetValue(Comp.Entity.EntityId, out value))
            {
                value           = new ChannelRegister();
                value.component = Comp;
                ChannelDictionary.Add(Comp.Entity.EntityId, value);
            }
            value.channel = arg2;
            if (!offline)
            {
                SendUpdate(Comp.Entity.EntityId, arg2, requester);
            }
        }
Example #6
0
        private void WriteChannelRegister(int channelNo, ChannelRegister register, uint value)
        {
            switch (register)
            {
            case ChannelRegister.Control:
                controlRegisters[channelNo].Write(value);
                break;

            case ChannelRegister.Status:
                statusRegisters[channelNo].Write(value);
                break;

            default:
                this.Log(LogLevel.Warning, "Unhandled write on channel register {0}, channel no {1}, value 0x{2:X}",
                         register, channelNo, value);
                break;
            }
        }
        internal static bool TryRegisterAndGetChannel(LocalLCDWriterComponent Comp, out ulong channel)
        {
            ChannelRegister reg;
            var             ret = ChannelDictionary.TryGetValue(Comp.Entity.EntityId, out reg);

            if (ret)
            {
                channel = reg.channel;
                if (reg.component == null)
                {
                    reg.component = Comp;
                }
                return(true);
            }
            reg           = new ChannelRegister();
            reg.component = Comp;
            ChannelDictionary.Add(Comp.Entity.EntityId, reg);
            channel = 0;
            return(false);
        }
Example #8
0
 private static bool TryGetChannelRegister(long offset, out int channelNo, out ChannelRegister channelRegister)
 {
     if(offset < UnifiedChannelRegistersStart || offset > UnifiedChannelRegistersEnd)
     {
         channelRegister = 0;
         channelNo = 0;
         return false;
     }
     channelNo = (int)((offset - UnifiedChannelRegistersStart) / UnifiedChannelSize);
     channelRegister = (ChannelRegister)((offset - UnifiedChannelRegistersStart) % UnifiedChannelSize);
     return true;
 }
Example #9
0
 private void WriteChannelRegister(int channelNo, ChannelRegister register, uint value)
 {
     switch(register)
     {
     case ChannelRegister.Control:
         controlRegisters[channelNo].Write(value);
         break;
     case ChannelRegister.Status:
         statusRegisters[channelNo].Write(value);
         break;
     default:
         this.Log(LogLevel.Warning, "Unhandled write on channel register {0}, channel no {1}, value 0x{2:X}",
             register, channelNo, value);
         break;
     }
 }
Example #10
0
 private uint ReadChannelRegister(int channelNo, ChannelRegister register)
 {
     switch(register)
     {
     case ChannelRegister.Control:
         return controlRegisters[channelNo].Read();
     case ChannelRegister.Status:
         return statusRegisters[channelNo].Read();
     default:
         this.Log(LogLevel.Warning, "Unhandled read on channel register {0}, channel no {1}.", register, channelNo);
         return 0;
     }
 }