void Start()
    {
        _moduleId = _moduleIdCounter++;

        _swirlsActive  = new Transform[49];
        _swirlsVisible = new Transform[49];
        for (int i = 0; i < 49; i++)
        {
            _swirlsActive[i]               = Instantiate(SwirlTemplate);
            _swirlsActive[i].parent        = SwirlContainer.transform;
            _swirlsActive[i].localPosition = new Vector3(0, 0, 0);
            var scale = Rnd.Range(.99f, 1.05f);
            _swirlsActive[i].localScale = new Vector3(scale, scale, scale);
            _swirlsActive[i].GetComponent <MeshRenderer>().material.mainTexture = SwirlTextures[i / 7];
            _swirlsVisible[i] = _swirlsActive[i];
        }
        Destroy(SwirlTemplate.gameObject);

        var ser = Bomb.GetSerialNumber();

        if (!_infos.ContainsKey(ser))
        {
            _infos[ser] = new BlackHoleBombInfo();
        }
        _info = _infos[ser];
        _info.Modules.Add(this);

        _lastTime       = (int)Bomb.GetTime();
        _lastSolved     = 0;
        _digitsEntered  = 0;
        _digitsExpected = 7;

        StartCoroutine(MoveSwirls());
        StartCoroutine(ComputeSolutionCode(ser));
        Selectable.OnInteract      = HoleInteract;
        Selectable.OnInteractEnded = HoleInteractEnded;
    }
Esempio n. 2
0
    void Start()
    {
        _moduleId = _moduleIdCounter++;

        _planetTextures = new Texture[12][];
        for (int i = 0; i < 12; i++)
        {
            _planetTextures[i] = new Texture[7];
        }
        foreach (var tx in PlanetTextures)
        {
            var p1 = tx.name.IndexOf('-');
            var p2 = tx.name.LastIndexOf('-');
            _planetTextures[int.Parse(tx.name.Substring(p1 + 1, p2 - p1 - 1))][int.Parse(tx.name.Substring(p2 + 1))] = tx;
        }

        _swirlsActive  = new Transform[49];
        _swirlsVisible = new Transform[49];
        for (int i = 0; i < 49; i++)
        {
            var ct = Instantiate(ContainerTemplate).transform;
            ct.parent        = SwirlContainer.transform;
            ct.localPosition = new Vector3(0, 0, 0);
            var scale = Rnd.Range(.99f, 1.05f);
            ct.localScale = new Vector3(scale, scale, scale);
            ct.gameObject.SetActive(true);

            var mr = Instantiate(ImageTemplate);
            mr.material.mainTexture    = SwirlTextures[i / 7];
            mr.material.renderQueue    = 2700 + i;
            mr.transform.parent        = ct;
            mr.transform.localPosition = new Vector3((250 - 201 - 70 / 2) / 500f, (250 - 31 - 32 / 2) / 500f, 0);
            mr.transform.localScale    = new Vector3(70f / 500, 32f / 500, 1);
            mr.gameObject.SetActive(true);

            _swirlsActive[i] = _swirlsVisible[i] = ct;
        }
        StartCoroutine(MoveSwirls());

        var serialNumber = Bomb.GetSerialNumber();

        if (!_infos.ContainsKey(serialNumber))
        {
            _infos[serialNumber] = new BlackHoleBombInfo();
        }
        _info = _infos[serialNumber];
        _info.Modules.Add(this);

        _lastTime       = (int)Bomb.GetTime();
        _lastSolved     = 0;
        _digitsEntered  = 0;
        _digitsExpected = 7;

        Selectable.OnInteract      = HoleInteract;
        Selectable.OnInteractEnded = HoleInteractEnded;

        Bomb.OnBombExploded += delegate { _infos.Clear(); };
        Bomb.OnBombSolved   += delegate
        {
            // This check is necessary because this delegate gets called even if another bomb in the same room got solved instead of this one
            if (Bomb.GetSolvedModuleNames().Count == Bomb.GetSolvableModuleNames().Count)
            {
                _infos.Remove(serialNumber);
            }
        };

        StartCoroutine(initialize(serialNumber));
    }