qmlfrontend/Page1.qml
author unC0Rr
Tue, 04 Feb 2025 17:31:55 +0100
branchqmlrenderer
changeset 16087 8da5a118120b
parent 16017 e8afb1bf2779
permissions -rw-r--r--
Modernize approach for building qmlfrontend

import QtQuick
import Hedgewars 1.0

Page1Form {
  property HWEngine hwEngine
  property NetSession netSession

  focus: true

  Component.onCompleted: {
    hwEngine = hwEngineComponent.createObject();
  }

  netButton.onClicked: {
    netSession = netSessionComponent.createObject();
    netSession.open();
  }

  Component {
    id: hwEngineComponent

    HWEngine {
      dataPath: "../share/hedgewars/Data"
      engineLibrary: "../rust/lib-hedgewars-engine/target/debug/libhedgewars_engine.so"
      previewAcceptor: PreviewAcceptor

      onPreviewImageChanged: previewImage.source = "image://preview/image"
      onPreviewIsRendering: previewImage.source = "qrc:/res/iconTime.png"
    }
  }

  Component {
    id: netSessionComponent

    NetSession {
      nickname: "test0272"
      url: "hwnet://gameserver.hedgewars.org:46632"
    }
  }

  tickButton {
    onClicked: {
      tickButton.visible = false;
    }
  }

  Timer {
    id: advancingTimer

    interval: 100
    repeat: true
    running: !tickButton.visible

    onTriggered: {
      gameView.tick(100);
      gameView.update();
    }
  }

  gameButton {
    visible: !gameView.engineInstance

    onClicked: {
      const engineInstance = hwEngine.runQuickGame();
      gameView.engineInstance = engineInstance;
    }
  }

  button1 {
    visible: !gameView.engineInstance

    onClicked: {
      hwEngine.getPreview();
    }
  }

  preview {
    visible: !gameView.engineInstance
  }

  gameMouseArea {
    onPositionChanged: event => {
      gameView.engineInstance.moveCamera(Qt.point(event.x - gameMouseArea.lastPoint.x, event.y - gameMouseArea.lastPoint.y));
      gameMouseArea.lastPoint = Qt.point(event.x, event.y);
    }
    onPressed: event => {
      gameMouseArea.lastPoint = Qt.point(event.x, event.y);
    }
  }
}