Пример #1
0
 public void SyncPlayer(FullState state)
 {
     if (_client != null)
     {
         _client.OnSync(state);
     }
 }
Пример #2
0
 public void SpawnAvatar(FullState state)
 {
     if (_client != null)
     {
         _client.OnSpawn(state);
     }
 }
Пример #3
0
 public void Sync(FullState state)
 {
     _currentSpeed      = state.speed;
     _currentRotation   = state.rotation;
     transform.position = state.position;
     transform.rotation = state.rotation;
     _health            = state.health;
 }
Пример #4
0
 protected override void onSync(int connectionId, FullState data)
 {
     foreach (var it in _allConnections)
     {
         if (it != connectionId)
         {
             sendSyncEvent(it, data);
         }
     }
 }
Пример #5
0
        static void Main(string[] args)
        {
            Init();
            MyStopWatch        timer        = new MyStopWatch();
            Context            context      = new Context();
            IRaspberryPiStates emptyState   = new EmptyState();
            IRaspberryPiStates fullState    = new FullState();
            IRaspberryPiStates notDoneState = new NotDoneState();
            //Bluetooth bt = new Bluetooth();
            //bt.Init();
            JsonWriter writer = new JsonWriter();

            context.setState(emptyState);
            writer.JsonWriterFunc("Emptystate", "0", "Start");
            //bt.SendData("EmptyState");
            while (ReferenceEquals(context.getState(), emptyState) ||
                   ReferenceEquals(context.getState(), fullState) ||
                   ReferenceEquals(context.getState(), notDoneState))
            {
                try
                {
                    context.IsFull(timer, context, emptyState, fullState, notDoneState);
                }
                catch (ArgumentException)
                {
                    //bt.SendData("ErrorFullStateGoEmptyState");
                    writer.JsonWriterFunc("Emptystate", "0", "Fullstate error");
                    context.setState(emptyState);
                }
                catch (InvalidOperationException)
                {
                    //bt.SendData("TimeoutGoEmptyState");
                    writer.JsonWriterFunc("Emptystate", "0", "Timeout");
                    context.setState(emptyState);
                }
                catch (Exception)
                {
                    //bt.SendData("ErrorGoEmptyState");
                    writer.JsonWriterFunc("Emptystate", "0", "ProgramCrash");
                    context.setState(emptyState);
                }
            }

            void Init()
            {
                MagnetSensor      Magnet   = new MagnetSensor();
                LaserSensorBottom LaserBot = new LaserSensorBottom();
                LaserSensorTop    LaserTop = new LaserSensorTop();

                Magnet.Initiate();
                LaserTop.Initiate();
                LaserBot.Initiate();
            }
        }
Пример #6
0
    protected override void onSync(int connectionId, FullState data)
    {
        AvatarController avatar;

        if (_connectedAvatars.TryGetValue(connectionId, out avatar))
        {
            avatar.Sync(data);
        }
        else
        {
            onSpawn(connectionId, data);
        }
    }
Пример #7
0
        static void Main(string[] args)
        {
            var stateRules = new Dictionary <string, Actions>();
            var fullState  = new FullState
            {
                State = 'A',
                Index = TapeSize / 2
            };
            var inputList   = readInput("input.txt");
            var stateRe     = new Regex("In state (.)");
            var valRe       = new Regex(@"If the current value is (\d)");
            var nextValRe   = new Regex(@"Write the value (\d)");
            var moveRe      = new Regex(@"Move one slot to the (\w+)");
            var nextStateRe = new Regex(@"Continue with state (.)");
            var curState    = 'A';
            var curVal      = 0;
            var act         = new Actions();

            foreach (var item in inputList)
            {
                if (stateRe.IsMatch(item))
                {
                    curState = stateRe.Match(item).Groups[1].Value[0];
                }
                else if (valRe.IsMatch(item))
                {
                    curVal = int.Parse(valRe.Match(item).Groups[1].Value);
                }
                else if (nextValRe.IsMatch(item))
                {
                    act.Value = int.Parse(nextValRe.Match(item).Groups[1].Value);
                }
                else if (moveRe.IsMatch(item))
                {
                    act.Direction = moveRe.Match(item).Groups[1].Value == "right" ? 1 : -1;
                }
                else if (nextStateRe.IsMatch(item))
                {
                    act.NextState = nextStateRe.Match(item).Groups[1].Value[0];
                    stateRules[curState + curVal.ToString()] = act;
                    act = new Actions();
                }
            }

            for (int i = 0; i < 12994925; i++)
            {
                Step(fullState, stateRules[fullState.State + Tape[fullState.Index].ToString()]);
            }
            Console.WriteLine(Tape.Sum());
            Console.ReadLine();
        }
Пример #8
0
    protected override void onSpawn(int connectionId, FullState data)
    {
        if (_connectedAvatars.ContainsKey(connectionId))
        {
            var avatar = _connectedAvatars[connectionId];
            GameObject.Destroy(avatar);
            _connectedAvatars.Remove(connectionId);
        }
        var resource  = Resources.Load <AvatarController>(CHARACTER_RESOURCE);
        var character = GameObject.Instantiate <AvatarController>(resource);

        _connectedAvatars.Add(connectionId, character);
        character.Sync(data);
    }
Пример #9
0
        public static FullState Parse(string id)
        {
            try
            {
                long       steamid   = SteamConverter.FromSteam64ToSteam32(long.Parse(id));
                WebBrowser web       = new WebBrowser();
                FullState  fullState = new FullState();
                web.Navigate("https://steamid.xyz/" + steamid);
                while (web.ReadyState != WebBrowserReadyState.Complete)
                {
                    Application.DoEvents();
                }
                string name = "User";
                try
                {
                    var lines = Regex.Split(web.DocumentText, @"\n");
                    for (int d = 0; d < lines.Count(); d++)
                    {
                        if (lines[d].Contains("Nick Name"))
                        {
                            name = Regex.Match(lines[d + 1], "value=\"(.+)\"").Value;
                            name = name.Substring(7, name.Length - 7);
                            name = name.Remove(name.Length - 1);
                        }
                    }
                }
                catch { }
                string url = "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/fe/fef49e7fa7e1997310d705b2a6158ff8dc1cdfeb_full.jpg";
                try
                {
                    url = Regex.Match(web.DocumentText, @"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/(.+)").Value.Replace("\">", string.Empty);
                }
                catch { }

                if (web.DocumentText.Contains("User is VAC Banned"))
                {
                    fullState.ban = true;
                }

                fullState.name = name;
                fullState.id   = id;
                fullState.url  = url;

                return(fullState);
            }
            catch { }
            return(null);
        }
Пример #10
0
    private void handleData(int hostId, int connectionId, byte[] data, int dataSize)
    {
        using (var stream = new MemoryStream(data, 0, dataSize)) {
            using (var reader = new BinaryReader(stream)) {
                var eventType = (EventType)reader.ReadByte();
                switch (eventType)
                {
                case EventType.Death:
                    onDeath(connectionId);
                    break;

                case EventType.ShootAnim:
                    onShootAnim(connectionId);
                    break;

                case EventType.Shoot:
                    var shootEvent = new ShootEvent();
                    shootEvent.Read(reader);
                    onShoot(connectionId, shootEvent);
                    break;

                case EventType.Spawn:
                    var spawnData = new FullState();
                    spawnData.Read(reader);
                    onSpawn(connectionId, spawnData);
                    break;

                case EventType.Sync:
                    var syncData = new FullState();
                    syncData.Read(reader);
                    onSync(connectionId, syncData);
                    break;
                }
            }
        }
    }
Пример #11
0
 protected abstract void onSync(int connectionId, FullState data);
Пример #12
0
 protected void sendSyncEvent(int connectionId, FullState data)
 {
     sendData(connectionId, _deltaChannelId, EventType.Sync, data);
 }
Пример #13
0
 protected void sendSpawnEvent(int connectionId, FullState data)
 {
     sendData(connectionId, _eventChannelId, EventType.Spawn, data);
 }
Пример #14
0
 public void OnSync(FullState data)
 {
     sendSyncEvent(_connectionId, data);
 }
Пример #15
0
    // simple state machine
    protected override void Init()
    {
        target = new Cat();

        HungryState hungry = new HungryState();
        AddState(hungry);

        FullState full = new FullState();
        AddState(full);

        defaultState = hungry;

        AddTransition(new FiniteStateTransition("give_food", "HungryState", "FullState"));
        AddTransition(new FiniteStateTransition("run", "FullState", "HungryState"));
    }
 public NonsharedConcreteFlyweight()
 {
     this.fullState = new FullState();
 }
Пример #17
0
 public void OnSpawn(FullState data)
 {
     sendSpawnEvent(_connectionId, data);
 }
Пример #18
0
 static void Step(FullState state, Actions act)
 {
     Tape[state.Index] = act.Value;
     state.Index      += act.Direction;
     state.State       = act.NextState;
 }