Ejemplo n.º 1
0
    // Use this for initialization
    private void OnSceneGUI()
    {
        DeployBomb d = (DeployBomb)target;

        Handles.color = Color.red;
        Handles.DrawWireCube(d.transform.position, d.bombRange * Vector3.one);
    }
Ejemplo n.º 2
0
    // Use this for initialization
    void Start()
    {
        EM          = GameObject.FindGameObjectWithTag("EndingManager").GetComponent <EndingManager>();
        bomber      = GameObject.FindGameObjectWithTag("BombSender").GetComponent <DeployBomb>();
        TroopSender = GameObject.FindGameObjectWithTag("TroopSender").GetComponent <SendTroops>();
        //myTeam = Team.Spooky;
        BasePool      = GameObject.FindGameObjectWithTag("BasePool").transform;
        selectedBases = new List <Base>();
        myBases       = new List <Base>();
        otherBases    = new List <Base>();
        Base b;

        //tell ai whose is its own and whose are enemies
        foreach (Transform place in BasePool)
        {
            b = place.GetComponent <Base>();
            if (b.myTeam().Equals(myTeam))
            {
                myBases.Add(b);
                numberMyBases++;
            }
            else
            {
                otherBases.Add(b);
                numberOtherBases++;
            }
        }

        //Let the carnage begin
        switch (algToUse)
        {
        case AlgorithmType.Random:
            StartCoroutine(RandomMoveAlgorithm());
            break;

        case AlgorithmType.Greedy:
            StartCoroutine(GreedyMoveAlgorithm());
            break;

        case AlgorithmType.GreedyTurtle:
            StartCoroutine(GreedyTurtleMoveAlgorithm());
            break;

        case AlgorithmType.SensibleRandom:
            StartCoroutine(SensibleRandomAlgorithm());
            break;
        }
    }
Ejemplo n.º 3
0
        void Update()
        {
            if (!string.IsNullOrEmpty(_socket.Error))
            {
                Debug.LogWarning(_socket.Error);
                Start();
                return;
            }

            Profiler.BeginSample("socket.recv");
            byte[] data = _socket.Recv();
            Profiler.EndSample();

            if (data == null || data.Length == 0)
            {
                return;
            }

            if (_state == ConnectionState.UNKNOWN)
            {
                _state = ConnectionState.CONNECTED;
            }

            if (data.Length < 4)
            {
                Debug.Log("partial message!");
                _storeAddPartial(data);
            }

            if (_partial_message != null)
            {
                Debug.Log("reconstructing partial message!");
                data             = ArrayUtil.sumArrays(_partial_message, data);
                _partial_message = null;
            }

            int messageLen = BitConverter.ToInt32(data, 0);
            int realLen    = data.Length - 5;

            if (realLen < messageLen)
            {
                _storeAddPartial(data);
                return;
            }
            else if (realLen > messageLen)
            {
                Debug.LogError("AHAHAH");
                return;
            }

            if (data[4] == DebugPackage.ID)
            {
                var dm = new DebugPackage(data);
                Debug.Log("debug message from: " + dm.sender + "::" + dm.message);
            }

            if (_state == ConnectionState.CONNECTED)
            {
                if (data[4] == Welcome.ID)
                {
                    _game.showWelcomeData(new Welcome(data));
                    _state = ConnectionState.WELCOMED;
                }
                else
                {
                    Debug.LogError("expected welcome, got :" + data[4].ToString() + " instead");
                    return;
                }
            }
            else if (_state == ConnectionState.AUTHORIZING)
            {
                if (data[4] == ResponseEnterWorld.ID)
                {
                    var res = new ResponseEnterWorld(data);
                    if (res.status == EnterWorldStatus.ENTER_SUCCESS)
                    {
                        Debug.Log("authorize success at world " + _lastWorldAttempt +
                                  " with name " + _lastNameAttempt + "::" + res.myId.ToString());
                        _state = ConnectionState.AUTHORIZED;
                        _game.rememberMe(_lastNameAttempt, res.myId, _lastWorldAttempt);
                    }
                    else
                    {
                        Debug.Log("authorize failed!");
                        _game.showWelcomeData();
                        _state = ConnectionState.WELCOMED;
                    }
                }
                else
                {
                    Debug.LogError("expected auth response or new seed, got :" + data[4].ToString() + " instead");
                    return;
                }
            }
            else if (_state == ConnectionState.AUTHORIZED)
            {
                if (data[4] == WorldData.ID)
                {
                    Debug.Log("world data received!");
                    var wData = new WorldData(data);
                    _game.initializeWorld(wData);
                    _state = ConnectionState.IN_WORLD;

                    _socket.Send(new DebugPackage(_game.myName, "привет друзья").encode());
                }
                else
                {
                    Debug.LogError("expected world data, got :" + data[4].ToString() + " instead");
                    return;
                }
            }
            else if (_state == ConnectionState.IN_WORLD)
            {
                if (data[4] == WorldSnapshot.ID)
                {
                    Profiler.BeginSample("recv.snapshot");
//                    Debug.Log("snapshot received!");
                    Profiler.BeginSample("unpack snapshot");
                    var snap = new WorldSnapshot(data);
                    Profiler.EndSample();

                    Profiler.BeginSample("decode snapshot");
                    var s = new byte[snap.snapshot.Length];
                    for (int i = 0; i < snap.snapshot.Length; i++)
                    {
                        s[i] = (byte.Parse(snap.snapshot[i].ToString()));
                    }
                    Profiler.EndSample();

                    Profiler.BeginSample("push snapshot");
                    _game.pushSnapshot(s);
                    Profiler.EndSample();
                    Profiler.EndSample();
                }
                else
                if (data[4] == NewSeed.ID)
                {
                    Debug.Log("new seed received ");
                    var seed = new NewSeed(data);
                    _game.pushSeed(seed.location, seed.owner);
                }
                else
                if (data[4] == SeedDestroyed.ID)
                {
                    var seedD = new SeedDestroyed(data);
                    Debug.Log("seed dest: " + seedD.location);
                    _game.destroySeed(seedD.location);
                }
                else
                if (data[4] == DeployBomb.ID)
                {
                    var enemy_bomb = new DeployBomb(data);
                    Debug.Log("enemy bomb: " + enemy_bomb.target);
                    _game.pushBomb(enemy_bomb.target);
                }
            }
        }
Ejemplo n.º 4
0
        public void deployBomb(int location)
        {
            var d = new DeployBomb(location);

            _socket.Send(d.encode());
        }