package game.locations.entrance;

import openfl.Assets;
import openfl.display.Bitmap;
import openfl.events.Event;

import game.locations.Interactive;

import base.GameSprite;
class Lock extends GameSprite  {
  var buttons: Array<Array<LockButton>> = [for(i in 0...4) [for(j in 0...3) null]];
  var enteredCode: String = '';
  var opened: Bool = false;

  public function new() {
    super('assets/locations/entrance/lock-bg.png');

    var num: Int = 1;
    for(j in 0...3) {
      for(i in 0...3) {
        buttons[j][i] = new LockButton(Std.string(num), typeCode(num));

        num++;
      }
    }

    buttons[3][0] = new LockButton(null, 'red', function() {
      enteredCode = '';
    });
    buttons[3][1] = new LockButton('0', typeCode(0));
    buttons[3][2] = new LockButton(null, 'green', checkCode);

    for(i in 0...4) {
      for(j in 0...3) {
        var btn = buttons[i][j];
        btn.x = 4 + (j * 17);
        btn.y = 5 + (i * 14);
        addChild(btn);
      }
    }
  }

  function typeCode(num) {
    return function() {
      enteredCode += Std.string(num);
    }
  }

  function checkCode() {
    if(enteredCode != '43014') {
      var snd = Game.currentGame.playSound('sound/error.ogg');
      snd.addEventListener(Event.SOUND_COMPLETE, function(e: Event) {
        Game.currentGame.sayRandom([
          'Не думаю что мне удастся просто угадать код',
          'Думаю лучше попробовать связаться с диспетчером из лифта',
          'Бесполезно. Но возможно получится связаться с диспетчером из лифта',
          'Не угадал. В лифте должна быть связь с диспетчером',
          'Не думаю что мне нужно туда.\nМожет быть лучше вернуться в лифт, там должна быть связь с диспетчером'
          ]);
      });
      enteredCode = '';
    } else {
      dispatchEvent(new Event('opened'));
      opened = true;
      for(row in buttons) {
        for(button in row) {
          button.disable();
        }
      }
      Game.currentGame.playSound('sound/entrance/code-ok.ogg');

    }
  }
}
