/*
 * MIT License
 *
 * Copyright (c) 2019 Alexey Edelev <semlanik@gmail.com>
 *
 * This file is part of NeuralNetwork project https://git.semlanik.org/semlanik/NeuralNetwork
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this
 * software and associated documentation files (the "Software"), to deal in the Software
 * without restriction, including without limitation the rights to use, copy, modify,
 * merge, publish, distribute, sublicense, and/or sell copies of the Software, and
 * to permit persons to whom the Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies
 * or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 * PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
 * FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 * DEALINGS IN THE SOFTWARE.
 */

import QtQuick 2.11
import QtQuick.Window 2.11
import QtQuick.Controls 1.4

import snakesimulator 1.0

ApplicationWindow {
    id: root
    visible: true
    property int tileSize: 20
    width: field.width*tileSize + sideBar.width
    height: field.height*tileSize

    Rectangle {
        color: "#565656"
        anchors.fill: parent
    }

    Repeater {
        model: snake.pointsData.length
        Rectangle {
            color: "#ffffff"
            x: snake.pointsData[model.index].x*tileSize
            y: snake.pointsData[model.index].y*tileSize
            width: tileSize
            height: tileSize
        }
    }

    Rectangle {
        color: "#99ee99"
        x: field.food.x*tileSize
        y: field.food.y*tileSize
        width: tileSize
        height: tileSize
    }

    Rectangle {
        id: sideBar
        width: speedTextField.width + contentColumn.anchors.margins*2
        color: "#000000"
        anchors {
            right: parent.right
            top: parent.top
            bottom: parent.bottom
        }
        Column {
            id: contentColumn
            anchors.fill: parent
            anchors.margins: 10
            spacing: 10
            Text {
                font.pointSize: 14
                font.weight: Font.Bold
                color: "#ffffff"
                text: "Generation: " + stats.generation
            }
            Text {
                font.pointSize: 14
                font.weight: Font.Bold
                color: "#ffffff"
                text: "Individual: " + stats.individual
            }
            Text {
                font.pointSize: 14
                font.weight: Font.Bold
                color: "#ffffff"
                text: "Move: " + stats.move
            }
            Text {
                font.pointSize: 14
                font.weight: Font.Bold
                color: "#ffffff"
                text: "Speed: "
            }
            TextField {
                id: speedTextField
                font.pointSize: 14
                validator: RegExpValidator {
                    regExp: /1?[0-9]{1}/
                }

                onAccepted:  {
                    client.setSpeed(parseInt(text, 10))
                }
            }
        }
    }

    Connections {
        target: field
        onWidthChanged: {
            console.log("New width: " + field.width)
        }
    }
}