/// <summary>
 /// Timer constructor
 /// </summary>
 /// <param name="Interval">Timer's interval</param>
 /// <param name="Reps">Number of times to repeat this timer before removal</param>
 /// <param name="Tick">Method to execute each tick</param>
 public Timer(int Interval,int Reps,OnTick Tick)
 {
     _ID++;
     ID=_ID;
     this.Interval=Interval;
     this.Tick=Tick;
     this.Reps=Reps;
 }
示例#2
0
 public Timer(OnTick OnTick, int Delay, int MaxExecute)
 {
     this.m_OnTick = OnTick;
     this.m_Delay = Delay;
     this.m_MaxExecute = MaxExecute;
     this.m_CurExecute = 0;
     this.m_LastExecute = 0;
     this.m_Tags = new Hashtable();
 }
示例#3
0
        public static void Register(ITickable tickable)
        {
            Tickables.Add(tickable);
            if (!Running)
            {
                Running = true;
                thread  = new Thread(() =>
                {
                    while (Running)
                    {
                        OnTick?.Invoke(null, EventArgs.Empty);
                        foreach (var t in Tickables)
                        {
                            t.Tick(TICK);
                        }
                        Thread.Sleep(TICK);
                    }
                });

                thread.Start();
            }
        }
示例#4
0
        internal static bool InstallHooks(PluginHeader *header)
        {
            _sendToClient      = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header->Recv);
            _sendToServer      = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header->Send);
            _getPacketLength   = Marshal.GetDelegateForFunctionPointer <OnGetPacketLength>(header->GetPacketLength);
            _getPlayerPosition = Marshal.GetDelegateForFunctionPointer <OnGetPlayerPosition>(header->GetPlayerPosition);
            _castSpell         = Marshal.GetDelegateForFunctionPointer <OnCastSpell>(header->CastSpell);
            _getStaticImage    = Marshal.GetDelegateForFunctionPointer <OnGetStaticImage>(header->GetStaticImage);
            _requestMove       = Marshal.GetDelegateForFunctionPointer <RequestMove>(header->RequestMove);
            ClientWindow       = header->HWND;
            _onTick            = Tick;
            _recv                   = OnRecv;
            _send                   = OnSend;
            _onHotkeyPressed        = OnHotKeyHandler;
            _onMouse                = OnMouseHandler;
            _onUpdatePlayerPosition = OnPlayerPositionChanged;
            _onClientClose          = OnClientClosing;
            _onInitialize           = OnInitialize;
            _onConnected            = OnConnected;
            _onDisconnected         = OnDisconnected;
            // _onFocusGained = OnFocusGained;
            // _onFocusLost = OnFocusLost;

            header->OnRecv                  = Marshal.GetFunctionPointerForDelegate(_recv);
            header->OnSend                  = Marshal.GetFunctionPointerForDelegate(_send);
            header->OnHotkeyPressed         = Marshal.GetFunctionPointerForDelegate(_onHotkeyPressed);
            header->OnMouse                 = Marshal.GetFunctionPointerForDelegate(_onMouse);
            header->OnPlayerPositionChanged = Marshal.GetFunctionPointerForDelegate(_onUpdatePlayerPosition);
            header->OnClientClosing         = Marshal.GetFunctionPointerForDelegate(_onClientClose);
            header->OnInitialize            = Marshal.GetFunctionPointerForDelegate(_onInitialize);
            header->OnConnected             = Marshal.GetFunctionPointerForDelegate(_onConnected);
            header->OnDisconnected          = Marshal.GetFunctionPointerForDelegate(_onDisconnected);
            // header->OnFocusGained = Marshal.GetFunctionPointerForDelegate( _onFocusGained );
            // header->OnFocusLost = Marshal.GetFunctionPointerForDelegate( _onFocusLost );
            header->Tick = Marshal.GetFunctionPointerForDelegate(_onTick);

            return(true);
        }
示例#5
0
            private void Update()
            {
                _time += Time.deltaTime;

                if (!(_time >= TICK_TIMER))
                {
                    return;
                }

                _time -= TICK_TIMER;
                _tick++;

                OnMicroTick?.Invoke(this, new TickArgs {
                    Tick = _tick
                });

                if (_tick % 5 == 0)
                {
                    OnTick?.Invoke(this, new TickArgs {
                        Tick = _tick
                    });
                }
            }
        public void Pull()
        {
            if (!IsActive)
            {
                return;
            }

            _RopeLengthData.PullRope(Time.deltaTime * _Data.PullingSpeed);

            if (_RopeLengthData.RopeLength < _Data.MinRopeLength)
            {
                Complete(); return;
            }

            _Tools.Rope.ScrollTexture(Time.deltaTime * _Data.RopeScrollSpeed);

            var hookDirection    = (_Tools.Hook.transform.position - _Tools.Camera.position).normalized;
            var newHookDirection = hookDirection * _RopeLengthData.RopeLength;

            _Tools.Hook.transform.position = _Tools.Camera.position + newHookDirection;

            OnTick?.Invoke(this, new OnTickArgs(_RopeLengthData.RopeLength));
        }
示例#7
0
        protected override void OnUpdate()
        {
            _time += Time.deltaTime;

            if (!(_time >= TICK_TIMER))
            {
                return;
            }

            _time -= TICK_TIMER;
            Tick++;

            OnMicroTick?.Invoke(this, new TickEventArgs {
                Tick = Tick
            });

            if (Tick % 5 == 0)
            {
                OnTick?.Invoke(this, new TickEventArgs {
                    Tick = Tick
                });
            }
        }
示例#8
0
    IEnumerator <WaitForSeconds> Ticker()
    {
        int   partialsPerTick = playerTicksPerTick;
        float duration        = gameTickTime;

        while (ticking)
        {
            if (ticks >= 0)
            {
                partialTick += 1;
                if (playerTicksAreValid || partialTick == partialsPerTick)
                {
                    OnTick?.Invoke(ticks, partialTick, duration, partialTick == partialsPerTick);
                }

                yield return(new WaitForSeconds(duration / partialsPerTick));

                if (partialTick == partialsPerTick)
                {
                    partialsPerTick     = playerTicksPerTick;
                    playerTicksAreValid = true;
                    ticks      += 1;
                    partialTick = 0;
                    duration    = gameTickTime;
                }
            }
            else
            {
                partialsPerTick     = playerTicksPerTick;
                playerTicksAreValid = true;
                ticks      += 1;
                partialTick = 0;
                duration    = gameTickTime;
                yield return(new WaitForSeconds(duration));
            }
        }
    }
示例#9
0
        private void UpdateFrameId()
        {
            // Can't tick until we get our first tick packet
            if (FrameID == NetworkConstants.BeforeStartOfGameFrameId)
            {
                return;
            }

            /*Console.WriteLine("Attempting tick");
             * // Don't tick until we're ready
             * var now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
             * if (now < nextClientTick)
             * {
             *  return;
             * }
             *
             * // Work out how many ticks we need
             * int elapsedTicks = 1;
             * if (estimatedServerFrameTime > 0f)
             * {
             *  elapsedTicks += (int)((now - nextClientTick) / estimatedServerFrameTime);
             * }*/

            int elapsedTicks = lastServerTickFrameId - FrameID;

            // Perform that number of ticks
            for (int i = 0; i < elapsedTicks; i++)
            {
                //Console.WriteLine("Doing tick: frameId {0}", FrameID);
                OnTick?.Invoke();
                FrameID++;
            }

            // Schedule next tick
            //nextClientTick = now + (int)estimatedServerFrameTime;
        }
示例#10
0
        //处理行情
        private void _onTick(object sender, TickEventArgs e)
        {
            MarketData _md = e.Tick;

            //处理时间
            DateTime _time = DateTime.Now;

            try
            {
                _time = DateTime.ParseExact(_md.UpdateTime, "HH:mm:ss", System.Globalization.CultureInfo.CurrentCulture);
                if ((_time - DateTime.Now).TotalHours > 23)
                {
                    _time.AddDays(-1);
                }
                else if ((_time - DateTime.Now).TotalHours < -23)
                {
                    _time.AddDays(1);
                }
            }
            catch (Exception ex)
            {
                LogUtils.EnginLog(ex.StackTrace);
            }
            _time.AddMilliseconds(_md.UpdateMillisec);


            Tick _tick = new Tick(_md.InstrumentID, _md.LastPrice, _md.BidPrice, _md.BidVolume, _md.AskPrice, _md.AskVolume
                                  , _md.AveragePrice, _md.Volume, _md.OpenInterest, _time, _md.UpperLimitPrice, _md.LowerLimitPrice);

            //发送
            while (0 != Interlocked.Exchange(ref BaseStrategy.Locker, 1))
            {
            }
            OnTick?.Invoke(_tick);
            Interlocked.Exchange(ref BaseStrategy.Locker, 0);
        }
示例#11
0
 public void SubmitNow()
 {
     OnTick.Invoke();
 }
示例#12
0
 public void Tick(uint tick)
 {
     //Other AI Logic
     OnTick.Invoke(tick);
 }
示例#13
0
 public void InvokeTick()
 {
     OnTick?.Invoke(this, EventArgs.Empty);
 }
示例#14
0
 public void InvokeTick(GameBoard board)
 {
     OnTick?.Invoke(board);
 }
示例#15
0
 public void Add(float addition)
 {
     value = Mathf.Clamp(value + addition, 0.0f, maxValue);
     OnTick.Invoke(value / maxValue);
 }
示例#16
0
 /// <summary>
 /// Timer constructor
 /// </summary>
 /// <param name="Interval">Timer's interval</param>
 /// <param name="Reps">Number of times to repeat this timer before removal</param>
 /// <param name="Tick">Method to execute each tick</param>
 /// <param name="Parent">Parent object - useful for posession checking and debugging</param>
 public Timer(int Interval, int Reps, OnTick Tick, object Parent)
     : this(Interval,Reps,Tick)
 {
     this.Parent=Parent;
 }
 private void OnElapsed(Object source, ElapsedEventArgs e)
 {
     //System.Diagnostics.Debug.WriteLine("OnElapsed");
     OnTick?.Invoke();
 }
示例#18
0
        /// <summary>
        ///     Main entry point of the server which starts a single server.
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            string[]            rawArguments = CommandEngine.ParseArguments(string.Join(" ", args));
            string[]            arguments    = CommandEngine.GetArguments(rawArguments);
            NameValueCollection variables    = CommandEngine.GetFlags(rawArguments);

            string configFile;

            if (arguments.Length == 0)
            {
                configFile = "Server.config";
            }
            else if (arguments.Length == 1)
            {
                configFile = arguments[0];
            }
            else
            {
                System.Console.Error.WriteLine("Invalid comand line arguments.");
                System.Console.WriteLine("Press any key to exit...");
                System.Console.ReadKey();
                return;
            }

            ServerSpawnData spawnData;

            try
            {
                spawnData = ServerSpawnData.CreateFromXml(configFile, variables);
            }
            catch (IOException e)
            {
                System.Console.Error.WriteLine("Could not load the config file needed to start (" + e.Message + "). Are you sure it's present and accessible?");
                System.Console.WriteLine("Press any key to exit...");
                System.Console.ReadKey();
                return;
            }
            catch (XmlConfigurationException e)
            {
                System.Console.Error.WriteLine(e.Message);
                System.Console.WriteLine("Press any key to exit...");
                System.Console.ReadKey();
                return;
            }
            catch (KeyNotFoundException e)
            {
                System.Console.Error.WriteLine(e.Message);
                System.Console.WriteLine("Press any key to exit...");
                System.Console.ReadKey();
                return;
            }

            spawnData.PluginSearch.PluginTypes.Add(typeof(Login));

            server = new DarkRiftServer(spawnData);

            server.Start();


            new Thread(new ThreadStart(ConsoleLoop)).Start();

            while (true)
            {
                //server.DispatcherWaitHandle.WaitOne();
                Thread.Sleep(1000 / serverTickRate);
                server.ExecuteDispatcherTasks();
                OnTick?.Invoke(null, server.ClientManager);
            }
        }
示例#19
0
        public void Load()
        {
            _recv              = OnPluginRecv;
            _send              = OnPluginSend;
            _getPacketLength   = PacketsTable.GetPacketLength;
            _getPlayerPosition = GetPlayerPosition;
            _castSpell         = GameActions.CastSpell;
            _getStaticImage    = GetStaticImage;
            _getUoFilePath     = GetUOFilePath;
            _requestMove       = RequestMove;
            _setTitle          = SetWindowTitle;

            //IntPtr headerPtr = Marshal.AllocHGlobal(4 + 8 * 18); // 256 ?
            //Marshal.WriteInt32(headerPtr, (int)FileManager.ClientVersion);
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_recv));
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_send));
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getPacketLength));
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getPlayerPosition));
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_castSpell));
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getStaticImage));
            //Marshal.WriteIntPtr(headerPtr, SDL.SDL_GL_GetCurrentWindow());
            //Marshal.WriteIntPtr(headerPtr, Marshal.GetFunctionPointerForDelegate(_getUoFilePath));

            SDL.SDL_SysWMinfo info = new SDL.SDL_SysWMinfo();
            SDL.SDL_VERSION(out info.version);
            SDL.SDL_GetWindowWMInfo(SDL.SDL_GL_GetCurrentWindow(), ref info);

            IntPtr hwnd = IntPtr.Zero;

            if (info.subsystem == SDL.SDL_SYSWM_TYPE.SDL_SYSWM_WINDOWS)
            {
                hwnd = info.info.win.window;
            }

            PluginHeader header = new PluginHeader
            {
                ClientVersion     = (int)FileManager.ClientVersion,
                Recv              = Marshal.GetFunctionPointerForDelegate(_recv),
                Send              = Marshal.GetFunctionPointerForDelegate(_send),
                GetPacketLength   = Marshal.GetFunctionPointerForDelegate(_getPacketLength),
                GetPlayerPosition = Marshal.GetFunctionPointerForDelegate(_getPlayerPosition),
                CastSpell         = Marshal.GetFunctionPointerForDelegate(_castSpell),
                GetStaticImage    = Marshal.GetFunctionPointerForDelegate(_getStaticImage),
                HWND              = hwnd,
                GetUOFilePath     = Marshal.GetFunctionPointerForDelegate(_getUoFilePath),
                RequestMove       = Marshal.GetFunctionPointerForDelegate(_requestMove),
                SetTitle          = Marshal.GetFunctionPointerForDelegate(_setTitle)
            };

            void *func = &header;

            try
            {
                IntPtr assptr = SDL2EX.SDL_LoadObject(_path);

                Log.Message(LogTypes.Trace, $"assembly: {assptr}");

                if (assptr == IntPtr.Zero)
                {
                    throw new Exception("Invalid Assembly, Attempting managed load.");
                }

                Log.Message(LogTypes.Trace, $"Searching for 'Install' entry point  -  {assptr}");

                IntPtr installPtr = SDL2EX.SDL_LoadFunction(assptr, "Install");

                Log.Message(LogTypes.Trace, $"Entry point: {installPtr}");

                if (installPtr == IntPtr.Zero)
                {
                    throw new Exception("Invalid Entry Point, Attempting managed load.");
                }
                Marshal.GetDelegateForFunctionPointer <OnInstall>(installPtr)(ref func);
            }
            catch
            {
                try
                {
                    var asm  = Assembly.LoadFile(_path);
                    var type = asm.GetType("Assistant.Engine");

                    if (type == null)
                    {
                        Log.Message(LogTypes.Error,
                                    $"Unable to find Plugin Type, API requires the public class Engine in namespace Assistant.");
                        return;
                    }

                    var meth = type.GetMethod("Install", BindingFlags.Public | BindingFlags.Static);
                    if (meth == null)
                    {
                        Log.Message(LogTypes.Error, $"Engine class missing public static Install method Needs 'public static unsafe void Install(PluginHeader *plugin)' ");
                        return;
                    }

                    meth.Invoke(null, new object[] { (IntPtr)func });
                }
                catch (Exception err)
                {
                    Log.Message(LogTypes.Error,
                                $"Invalid plugin specified. {err} {err.StackTrace}");
                    return;
                }
            }


            if (header.OnRecv != IntPtr.Zero)
            {
                _onRecv = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnRecv);
            }
            if (header.OnSend != IntPtr.Zero)
            {
                _onSend = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnSend);
            }
            if (header.OnHotkeyPressed != IntPtr.Zero)
            {
                _onHotkeyPressed = Marshal.GetDelegateForFunctionPointer <OnHotkey>(header.OnHotkeyPressed);
            }
            if (header.OnMouse != IntPtr.Zero)
            {
                _onMouse = Marshal.GetDelegateForFunctionPointer <OnMouse>(header.OnMouse);
            }
            if (header.OnPlayerPositionChanged != IntPtr.Zero)
            {
                _onUpdatePlayerPosition = Marshal.GetDelegateForFunctionPointer <OnUpdatePlayerPosition>(header.OnPlayerPositionChanged);
            }
            if (header.OnClientClosing != IntPtr.Zero)
            {
                _onClientClose = Marshal.GetDelegateForFunctionPointer <OnClientClose>(header.OnClientClosing);
            }
            if (header.OnInitialize != IntPtr.Zero)
            {
                _onInitialize = Marshal.GetDelegateForFunctionPointer <OnInitialize>(header.OnInitialize);
            }
            if (header.OnConnected != IntPtr.Zero)
            {
                _onConnected = Marshal.GetDelegateForFunctionPointer <OnConnected>(header.OnConnected);
            }
            if (header.OnDisconnected != IntPtr.Zero)
            {
                _onDisconnected = Marshal.GetDelegateForFunctionPointer <OnDisconnected>(header.OnDisconnected);
            }
            if (header.OnFocusGained != IntPtr.Zero)
            {
                _onFocusGained = Marshal.GetDelegateForFunctionPointer <OnFocusGained>(header.OnFocusGained);
            }
            if (header.OnFocusLost != IntPtr.Zero)
            {
                _onFocusLost = Marshal.GetDelegateForFunctionPointer <OnFocusLost>(header.OnFocusLost);
            }
            if (header.Tick != IntPtr.Zero)
            {
                _tick = Marshal.GetDelegateForFunctionPointer <OnTick>(header.Tick);
            }
            IsValid = true;

            //Marshal.FreeHGlobal(headerPtr);

            _onInitialize?.Invoke();
        }
示例#20
0
 private void FixedUpdate()
 {
     OnTick.Invoke(Time.deltaTime);
 }
 public void Tick()
 {
     OnTick?.Invoke();
 }
    /// Run the next instruction
    public void Tick()
    {
        if (tickCounter > sleepTickThreshold)
        {
            Instruction i;
            int         newPC;
            if (program == null || program.instructions.Count == 0)
            {
                i     = NOP;
                newPC = 0;
            }
            else
            {
                i     = program.instructions[pc];
                newPC = (pc + 1) % program.instructions.Count;
            }

            switch (i.opCode)
            {
            // Control flow
            case OpCode.NOP:
                break;

            case OpCode.BUN:
                newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                break;

            case OpCode.BEQ:
                if (GetArgValue(i.args[1]) == GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BNE:
                if (GetArgValue(i.args[1]) != GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BLT:
                if (GetArgValue(i.args[1]) < GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BLE:
                if (GetArgValue(i.args[1]) <= GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BGT:
                if (GetArgValue(i.args[1]) > GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BGE:
                if (GetArgValue(i.args[1]) >= GetArgValue(i.args[2]))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.BRN:
                if (GetArgValue(i.args[1]) > UnityEngine.Random.Range(0, 100))
                {
                    newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                }
                break;

            case OpCode.CSR:
                if (callStack.Count > STACK_SIZE)
                {
                    Debug.LogWarning("Stack limit reached on CSR call");
                    break;
                }
                callStack.Push(newPC);
                newPC = GetArgValue(i.args[0]) % program.instructions.Count;
                break;

            case OpCode.RSR:
                if (callStack.Count == 0)
                {
                    Debug.LogWarning("Empty callstack on RSR call");
                    break;
                }
                newPC = callStack.Pop();
                break;

            // Data manipulation
            case OpCode.SET:
                regs[i.args[0].val] = GetArgValue(i.args[1]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.ADD:
                regs[i.args[0].val] = GetArgValue(i.args[1]) + GetArgValue(i.args[2]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.SUB:
                regs[i.args[0].val] = GetArgValue(i.args[1]) - GetArgValue(i.args[2]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.MUL:
                regs[i.args[0].val] = GetArgValue(i.args[1]) * GetArgValue(i.args[2]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.DIV:
                regs[i.args[0].val] = GetArgValue(i.args[1]) / GetArgValue(i.args[2]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.MOD:
                regs[i.args[0].val] = GetArgValue(i.args[1]) % GetArgValue(i.args[2]);
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            case OpCode.ABS:
                regs[i.args[0].val] = Math.Abs(GetArgValue(i.args[1]));
                if (i.args[0].val > NUM_LOCAL_REGS)
                {
                    BotManager.Instance.PropagateRegister(i.args[0].val, regs[i.args[0].val], controller.TeamID);
                }
                break;

            // Sensing
            case OpCode.TAR:
                regs[i.args[0].val] = BotManager.Instance.FindTarget(controller,
                                                                     (BotManager.DistanceType)GetArgValue(i.args[1]),
                                                                     (BotManager.TargetType)GetArgValue(i.args[2]));
                break;

            case OpCode.HED:
                regs[i.args[0].val] = BotManager.Instance.GetTargetHeading(controller, GetArgValue(i.args[1]));
                break;

            case OpCode.DIS:
                regs[i.args[0].val] = BotManager.Instance.GetTargetDistance(controller, GetArgValue(i.args[1]));
                break;

            case OpCode.SCN:
                regs[i.args[0].val] = controller.Scan((Scanner.Target)GetArgValue(i.args[1]),
                                                      GetArgValue(i.args[2]), GetArgValue(i.args[3]), GetArgValue(i.args[4]));
                break;

            // Actions
            case OpCode.DRV:
                controller.Drive((Driver.Direction)GetArgValue(i.args[0]),
                                 GetArgValue(i.args[1]),
                                 GetArgValue(i.args[2]) != 0);
                break;

            case OpCode.TRN:
                controller.Turn((Turner.Direction)GetArgValue(i.args[0]),
                                GetArgValue(i.args[1]),
                                GetArgValue(i.args[2]) != 0);
                break;

            case OpCode.SHT:
                controller.Shoot(GetArgValue(i.args[0]) == 1);
                break;

            case OpCode.SLP:
                sleepTickThreshold = tickCounter + GetArgValue(i.args[0]);
                break;

            default:
                Debug.LogWarning("Unhandled OpCode " + i.opCode.ToString());
                break;
            }
            pc = newPC;
        }
        ++tickCounter;
        OnTick?.Invoke();
    }
 private void OnLogicUpdate()
 {
     OnTick?.Invoke();
 }
示例#24
0
 internal static void Tick()
 {
    if (OnTick!=null) OnTick.Invoke();
 }
示例#25
0
        private void OnAdvise(object sender, DdeAdviseEventArgs args)
        {
            //=========================================================================================
            //Log(args.Item + " " + args.Text); // get the DDE feed

            string[] fxData = (args.Item + " " + args.Text).Split(new char[] { ' ' });

            Tick tick = null;

            try{
                tick = new Tick()
                {
                    //EURUSD 2014/05/06 23:59 1.34455 1.34456
                    symbol = fxData[0],
                    date   = DateTime.Parse(fxData[1] + " " + fxData[2]),
                    bid    = double.Parse(fxData[3]),
                    ask    = double.Parse(fxData[4])
                };
            }

            catch (Exception)
            {
                Log("Invalid tick data");
            }

            //-- Log Price -- works -- prints bid price for All symbol
            //   Log(fxData[3]); Double checked July 2014 - so data is local and present here,
            //-------------



            //------------------------------------------------
            // Bind Data
            //   chart1.Series["Series1"].Points.DataBindXY(fxData[1], fxData[3]);
            //    chart1.Series["Series1"].Points.DataBindXY(fxData[2], fxData[3]);
            //  chart1.Series["Series1"].Points.DataBind(dataSource, fxData[2], fxData[3],);

            //    string xVal = fxData[2];// Hours:Minutes == 23:59
            //    string YVal = fxData[3];

            //   chart1.Series["Series1"].Points.DataBindXY(xVal, YVal);
            //     chart1.Series["Series1"].Points.AddXY(xVal, YVal);

            //   chart1.Series[0].Points.AddXY(date, bid);

            //---------------------------------------------------
            // create data source
            if (tick != null)
            {
                if (dataSource.ContainsKey(tick.symbol))
                {
                    dataSource[tick.symbol].Insert(0, tick.bid);
                    //   Log(tick.bid);
                }
                else
                {
                    dataSource.Add(tick.symbol, new List <double>()
                    {
                        tick.bid
                    });
                }
                if (OnTick != null)
                {
                    OnTick.Invoke(tick);
                }
            }


            //------------------------------
        }
示例#26
0
        // ReSharper disable once UnusedMember.Local
        private void Update()
        {
            try
            {
                if (BoltNetwork.isRunning && LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached)
                {
                    PlayerName = LocalPlayer.Entity.GetState <IPlayerState>().name;
                }
            }
            catch (Exception)
            {
                // ignored
            }

            if (ChatBox.IsChatOpen)
            {
                return;
            }

            if (OnTick != null)
            {
                try
                {
                    foreach (var action in OnTick.GetInvocationList())
                    {
                        try
                        {
                            action.DynamicInvoke(this, EventArgs.Empty);
                        }
                        catch (Exception e)
                        {
                            Logger.Exception($"Exception while notifying {nameof(OnTick)} listener: " + action.GetType().Name, e);
                        }
                    }
                }
                catch (Exception e)
                {
                    Logger.Exception($"Exception while looping over {nameof(OnTick)} listeners", e);
                }
            }

            if (BoltNetwork.isRunning)
            {
                // Visible player
                if (Menu.Values.Self.Visible && LocalPlayer.Entity != null && !LocalPlayer.Entity.isAttached)
                {
                    Utility.AttachLocalPlayer();
                }
                // Invisible player
                else if (!Menu.Values.Self.Visible && LocalPlayer.Entity != null && LocalPlayer.Entity.isAttached)
                {
                    Utility.DetachLocalPlayer();
                }

                // Add fire trail to movement
                if (Menu.Values.Self.FireTrail)
                {
                    var feetPos = LocalPlayer.Transform.position - new Vector3(0, 4, 0);
                    if (Vector3.Distance(LastFirePos, feetPos) > 2 || Environment.TickCount - LastFireTime > 5000)
                    {
                        LastFirePos  = feetPos;
                        LastFireTime = Environment.TickCount;
                        BoltPrefabsHelper.Spawn(BoltPrefabs.Fire, feetPos, LocalPlayer.Transform.rotation);
                    }
                }
            }

            if (FreeCam && !_lastFreeCam)
            {
                LocalPlayer.CamFollowHead.enabled = false;
                LocalPlayer.CamRotator.enabled    = false;
                LocalPlayer.MainRotator.enabled   = false;
                LocalPlayer.FpCharacter.enabled   = false;
                _lastFreeCam = true;
            }
            if (!FreeCam && _lastFreeCam)
            {
                LocalPlayer.CamFollowHead.enabled = true;
                LocalPlayer.CamRotator.enabled    = true;
                LocalPlayer.MainRotator.enabled   = true;
                LocalPlayer.FpCharacter.enabled   = true;
                _lastFreeCam = false;
            }

            if (FreeCam && !Menu.IsOpen && !LocalPlayer.FpCharacter.Locked)
            {
                var button1    = Input.GetButton("Crouch");
                var button2    = Input.GetButton("Run");
                var button3    = Input.GetButton("Jump");
                var multiplier = 0.1f;
                if (button2)
                {
                    multiplier = 2f;
                }

                var vector3 = Camera.main.transform.rotation * (
                    new Vector3(Input.GetAxis("Horizontal"),
                                0f,
                                Input.GetAxis("Vertical")
                                ) * multiplier);
                if (button3)
                {
                    vector3.y += multiplier;
                }
                if (button1)
                {
                    vector3.y -= multiplier;
                }
                Camera.main.transform.position += vector3;

                var rotationX = Camera.main.transform.localEulerAngles.y + Input.GetAxis("Mouse X") * 15f;
                _rotationY += Input.GetAxis("Mouse Y") * 15f;
                _rotationY  = Mathf.Clamp(_rotationY, -80f, 80f);
                Camera.main.transform.localEulerAngles = new Vector3(-_rotationY, rotationX, 0);
            }

            if (ModAPI.Input.GetButtonDown("FreeCam"))
            {
                FreeCam = !FreeCam;
            }

            if (ModAPI.Input.GetButton("SphereAction"))
            {
                SphereAction?.OnPrepare();
            }
            else
            {
                SphereAction?.OnTick();
            }

            if (LocalPlayer.Stats != null)
            {
                if (Menu.Values.Stats.FixBodyTemp)
                {
                    LocalPlayer.Stats.BodyTemp = Menu.Values.Stats.FixedBodyTemp;
                }
                if (Menu.Values.Stats.FixBatteryCharge)
                {
                    LocalPlayer.Stats.BatteryCharge = Menu.Values.Stats.FixedBatteryCharge;
                }
                if (Menu.Values.Stats.FixEnergy)
                {
                    LocalPlayer.Stats.Energy = Menu.Values.Stats.FixedEnergy;
                }
                if (Menu.Values.Stats.FixHealth)
                {
                    LocalPlayer.Stats.Health = Menu.Values.Stats.FixedHealth;
                }
                if (Menu.Values.Stats.FixStamina)
                {
                    LocalPlayer.Stats.Stamina = Menu.Values.Stats.FixedStamina;
                }
                if (Menu.Values.Stats.FixFullness)
                {
                    LocalPlayer.Stats.Fullness = Menu.Values.Stats.FixedFullness;
                }
                if (Menu.Values.Stats.FixStarvation)
                {
                    LocalPlayer.Stats.Starvation = Menu.Values.Stats.FixedStarvation;
                }
                if (Menu.Values.Stats.FixThirst)
                {
                    LocalPlayer.Stats.Thirst = Menu.Values.Stats.FixedThirst;
                }
            }

            if (BoltNetwork.isRunning && Menu.Values.Self.InstaRevive)
            {
                foreach (var player in PlayerManager.Players)
                {
                    var triggerObject = player.DeadTriggerObject;
                    if (triggerObject != null && triggerObject.activeSelf)
                    {
                        var trigger = triggerObject.GetComponent <RespawnDeadTrigger>();

                        //Logger.Info("Reviving " + player.Entity.GetState<IPlayerState>().name);

                        // Send revive packet
                        var playerHealed = PlayerHealed.Create(GlobalTargets.Others);
                        playerHealed.HealingItemId = trigger._healItemId;
                        playerHealed.HealTarget    = player.Entity;
                        PacketQueue.Add(playerHealed);

                        // Set revive trigger inactive
                        trigger.SendMessage("SetActive", false);
                    }
                }
            }
        }
示例#27
0
 private static void UpdateTimer(object state)
 {
     OnTick?.Invoke(null, EventArgs.Empty);
 }
示例#28
0
 private void Update()
 {
     OnTick?.Invoke(Time.deltaTime);
     OnTickNoDelta?.Invoke();
 }
示例#29
0
 public Player()
 {
     _timer.Tick     += (o, e) => OnTick?.Invoke(this, new PlayerEventArgs(PercentProgress, Duration, Position));
     LoadedBehavior   = MediaState.Manual;
     UnloadedBehavior = MediaState.Manual;
 }
示例#30
0
 private void OnTick_callback()
 {
     OnTick?.Invoke(this);
 }
示例#31
0
 public void Tick()
 {
     TickCount++;
     OnTick?.Invoke();
 }
示例#32
0
        public void Load()
        {
            _recv              = OnPluginRecv;
            _send              = OnPluginSend;
            _recv_new          = OnPluginRecv_new;
            _send_new          = OnPluginSend_new;
            _getPacketLength   = PacketsTable.GetPacketLength;
            _getPlayerPosition = GetPlayerPosition;
            _castSpell         = GameActions.CastSpell;
            _getStaticImage    = GetStaticImage;
            _getUoFilePath     = GetUOFilePath;
            _requestMove       = RequestMove;
            _setTitle          = SetWindowTitle;

            SDL.SDL_SysWMinfo info = new SDL.SDL_SysWMinfo();
            SDL.SDL_VERSION(out info.version);
            SDL.SDL_GetWindowWMInfo(SDL.SDL_GL_GetCurrentWindow(), ref info);

            IntPtr hwnd = IntPtr.Zero;

            if (info.subsystem == SDL.SDL_SYSWM_TYPE.SDL_SYSWM_WINDOWS)
            {
                hwnd = info.info.win.window;
            }

            PluginHeader header = new PluginHeader
            {
                ClientVersion     = (int)Client.Version,
                Recv              = Marshal.GetFunctionPointerForDelegate(_recv),
                Send              = Marshal.GetFunctionPointerForDelegate(_send),
                GetPacketLength   = Marshal.GetFunctionPointerForDelegate(_getPacketLength),
                GetPlayerPosition = Marshal.GetFunctionPointerForDelegate(_getPlayerPosition),
                CastSpell         = Marshal.GetFunctionPointerForDelegate(_castSpell),
                GetStaticImage    = Marshal.GetFunctionPointerForDelegate(_getStaticImage),
                HWND              = hwnd,
                GetUOFilePath     = Marshal.GetFunctionPointerForDelegate(_getUoFilePath),
                RequestMove       = Marshal.GetFunctionPointerForDelegate(_requestMove),
                SetTitle          = Marshal.GetFunctionPointerForDelegate(_setTitle),
                Recv_new          = Marshal.GetFunctionPointerForDelegate(_recv_new),
                Send_new          = Marshal.GetFunctionPointerForDelegate(_send_new),

                SDL_Window = Client.Game.Window.Handle
            };

            void *func = &header;

            if (Environment.OSVersion.Platform != PlatformID.Unix && Environment.OSVersion.Platform != PlatformID.MacOSX)
            {
                UnblockPath(Path.GetDirectoryName(_path));
            }

            try
            {
                IntPtr assptr = Native.LoadLibrary(_path);

                Log.Trace($"assembly: {assptr}");

                if (assptr == IntPtr.Zero)
                {
                    throw new Exception("Invalid Assembly, Attempting managed load.");
                }

                Log.Trace($"Searching for 'Install' entry point  -  {assptr}");

                IntPtr installPtr = Native.GetProcessAddress(assptr, "Install");

                Log.Trace($"Entry point: {installPtr}");

                if (installPtr == IntPtr.Zero)
                {
                    throw new Exception("Invalid Entry Point, Attempting managed load.");
                }

                Marshal.GetDelegateForFunctionPointer <OnInstall>(installPtr)(func);

                Console.WriteLine(">>> ADDRESS {0}", header.OnInitialize);
            }
            catch
            {
                try
                {
                    var asm  = Assembly.LoadFile(_path);
                    var type = asm.GetType("Assistant.Engine");

                    if (type == null)
                    {
                        Log.Error(
                            "Unable to find Plugin Type, API requires the public class Engine in namespace Assistant.");

                        return;
                    }

                    var meth = type.GetMethod("Install", BindingFlags.Public | BindingFlags.Static);

                    if (meth == null)
                    {
                        Log.Error("Engine class missing public static Install method Needs 'public static unsafe void Install(PluginHeader *plugin)' ");

                        return;
                    }

                    meth.Invoke(null, new object[] { (IntPtr)func });
                }
                catch (Exception err)
                {
                    Log.Error(
                        $"Plugin threw an error during Initialization. {err.Message} {err.StackTrace} {err.InnerException?.Message} {err.InnerException?.StackTrace}");

                    return;
                }
            }


            if (header.OnRecv != IntPtr.Zero)
            {
                _onRecv = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnRecv);
            }

            if (header.OnSend != IntPtr.Zero)
            {
                _onSend = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv>(header.OnSend);
            }

            if (header.OnHotkeyPressed != IntPtr.Zero)
            {
                _onHotkeyPressed = Marshal.GetDelegateForFunctionPointer <OnHotkey>(header.OnHotkeyPressed);
            }

            if (header.OnMouse != IntPtr.Zero)
            {
                _onMouse = Marshal.GetDelegateForFunctionPointer <OnMouse>(header.OnMouse);
            }

            if (header.OnPlayerPositionChanged != IntPtr.Zero)
            {
                _onUpdatePlayerPosition = Marshal.GetDelegateForFunctionPointer <OnUpdatePlayerPosition>(header.OnPlayerPositionChanged);
            }

            if (header.OnClientClosing != IntPtr.Zero)
            {
                _onClientClose = Marshal.GetDelegateForFunctionPointer <OnClientClose>(header.OnClientClosing);
            }

            if (header.OnInitialize != IntPtr.Zero)
            {
                _onInitialize = Marshal.GetDelegateForFunctionPointer <OnInitialize>(header.OnInitialize);
            }

            if (header.OnConnected != IntPtr.Zero)
            {
                _onConnected = Marshal.GetDelegateForFunctionPointer <OnConnected>(header.OnConnected);
            }

            if (header.OnDisconnected != IntPtr.Zero)
            {
                _onDisconnected = Marshal.GetDelegateForFunctionPointer <OnDisconnected>(header.OnDisconnected);
            }

            if (header.OnFocusGained != IntPtr.Zero)
            {
                _onFocusGained = Marshal.GetDelegateForFunctionPointer <OnFocusGained>(header.OnFocusGained);
            }

            if (header.OnFocusLost != IntPtr.Zero)
            {
                _onFocusLost = Marshal.GetDelegateForFunctionPointer <OnFocusLost>(header.OnFocusLost);
            }

            if (header.Tick != IntPtr.Zero)
            {
                _tick = Marshal.GetDelegateForFunctionPointer <OnTick>(header.Tick);
            }


            if (header.OnRecv_new != IntPtr.Zero)
            {
                _onRecv_new = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv_new>(header.OnRecv_new);
            }
            if (header.OnSend_new != IntPtr.Zero)
            {
                _onSend_new = Marshal.GetDelegateForFunctionPointer <OnPacketSendRecv_new>(header.OnSend_new);
            }

            if (header.OnDrawCmdList != IntPtr.Zero)
            {
                _draw_cmd_list = Marshal.GetDelegateForFunctionPointer <OnDrawCmdList>(header.OnDrawCmdList);
            }
            if (header.OnWndProc != IntPtr.Zero)
            {
                _on_wnd_proc = Marshal.GetDelegateForFunctionPointer <OnWndProc>(header.OnWndProc);
            }


            IsValid = true;

            _onInitialize?.Invoke();
        }
 protected void DoTick()
 {
     OnTick?.Invoke();
 }