Allow client to switch kingdom cards in setup phase
This commit is contained in:
		@@ -471,6 +471,10 @@ img.card:hover {
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id="game"></div>
 | 
			
		||||
    <script>
 | 
			
		||||
        var set_data = [
 | 
			
		||||
            ["Cellar", "Market", "Merchant", "Militia", "Mine", "Moat", "Remodel", "Smithy", "Village", "Workshop"],
 | 
			
		||||
            ["Artisan", "Bandit", "Bureaucrat", "Chapel", "Festival", "Gardens", "Sentry", "Throne Room", "Witch", "Workshop"],
 | 
			
		||||
        ];
 | 
			
		||||
        var turnStartSound = new Audio("/static/audio/chipsStack1.ogg"); 
 | 
			
		||||
 | 
			
		||||
        var resolve_request;
 | 
			
		||||
@@ -619,7 +623,7 @@ img.card:hover {
 | 
			
		||||
                        },
 | 
			
		||||
                        m("img", {
 | 
			
		||||
                            class: "card",
 | 
			
		||||
                            src: "/static/images/cards/" + vnode.attrs.name.toLowerCase() + ".jpg",
 | 
			
		||||
                            src: card_url(vnode.attrs.name),
 | 
			
		||||
                            draggable: false,
 | 
			
		||||
                            onmouseenter: mouseenter,
 | 
			
		||||
                            onmouseleave: mouseleave,
 | 
			
		||||
@@ -690,7 +694,7 @@ img.card:hover {
 | 
			
		||||
                view: function(vnode) {
 | 
			
		||||
                    var c;
 | 
			
		||||
                    if (vnode.attrs.card) {
 | 
			
		||||
                        c = m("img", {class: "card", src: "/static/images/cards/" + vnode.attrs.card.toLowerCase() + ".jpg"});
 | 
			
		||||
                        c = m("img", {class: "card", src: card_url(vnode.attrs.card)});
 | 
			
		||||
                    }
 | 
			
		||||
                    return m(".discard-pile",
 | 
			
		||||
                        {
 | 
			
		||||
@@ -777,7 +781,7 @@ img.card:hover {
 | 
			
		||||
                        vnode.attrs.hand.map(function(card, i) {
 | 
			
		||||
                            return m("img", {
 | 
			
		||||
                                class: "card",
 | 
			
		||||
                                src: "/static/images/cards/" + card.toLowerCase() + ".jpg",
 | 
			
		||||
                                src: card_url(card),
 | 
			
		||||
                                draggable: true,
 | 
			
		||||
                                ondragstart: dragStart,
 | 
			
		||||
                                "data-index": i,
 | 
			
		||||
@@ -795,7 +799,7 @@ img.card:hover {
 | 
			
		||||
            return {
 | 
			
		||||
                view: function(vnode) {
 | 
			
		||||
                    return m(".opponent-hand",
 | 
			
		||||
                        m("img", {class: "card", src: "/static/images/cards/Card_back.jpg"}),
 | 
			
		||||
                        m("img", {class: "card", src: "/static/images/cards/Card_back.jpg" }),
 | 
			
		||||
                        m("span", {class: "pile-counter" }, vnode.attrs.count)
 | 
			
		||||
                    )
 | 
			
		||||
                }
 | 
			
		||||
@@ -839,7 +843,7 @@ img.card:hover {
 | 
			
		||||
                        cards.map(function(card) {
 | 
			
		||||
                            return m("img", {
 | 
			
		||||
                                class: "card",
 | 
			
		||||
                                src: "/static/images/cards/" + card.toLowerCase() + ".jpg",
 | 
			
		||||
                                src: card_url(card),
 | 
			
		||||
                                draggable: true,
 | 
			
		||||
                                //ondragstart: dragStart,
 | 
			
		||||
                                onmouseenter: mouseenter,
 | 
			
		||||
@@ -924,12 +928,24 @@ img.card:hover {
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function card_url(name) {
 | 
			
		||||
            return "/static/images/cards/" + name.toLowerCase().replace(" ", "-") + ".jpg";
 | 
			
		||||
        }
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
        function SetupScreen(initialVnode) {
 | 
			
		||||
            var start_click = function(e) {
 | 
			
		||||
                let msg = { type: "Command", command: { type: "StartGame" }};
 | 
			
		||||
                initialVnode.attrs.socket.send(JSON.stringify(msg));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var set_changed = function(e) {
 | 
			
		||||
                let choice = parseInt(e.srcElement.value);
 | 
			
		||||
                for (card in set_data[choice]) {
 | 
			
		||||
                    let name = set_data[choice][card];
 | 
			
		||||
                    send_command("ChangeSupply", {index: parseInt(card), name: name });
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
            return {
 | 
			
		||||
                view: function(vnode) {
 | 
			
		||||
@@ -941,18 +957,27 @@ img.card:hover {
 | 
			
		||||
                            vnode.attrs.basic_cards.map(function(card) {
 | 
			
		||||
                                return m("img", {
 | 
			
		||||
                                    class: "card",
 | 
			
		||||
                                    src: "/static/images/cards/" + card.toLowerCase() + ".jpg",
 | 
			
		||||
                                    src: card_url(card),
 | 
			
		||||
                                    onmouseenter: mouseenter,
 | 
			
		||||
                                    onmouseleave: mouseleave,
 | 
			
		||||
                                })
 | 
			
		||||
                            })
 | 
			
		||||
                        ),
 | 
			
		||||
                        m("h4", "Kingdom Cards"),
 | 
			
		||||
                        m("select",
 | 
			
		||||
                            { 
 | 
			
		||||
                                name: "set",
 | 
			
		||||
                                onchange: set_changed,
 | 
			
		||||
                            },[
 | 
			
		||||
                                m("option", { value: 0, style: "background-image: url(/static/images/sets/Dominion.png);"}, "First Game"),
 | 
			
		||||
                                m("option", { value: 1}, "Size Distortion"),
 | 
			
		||||
                            ]
 | 
			
		||||
                        ),
 | 
			
		||||
                        m(".kingdom-cards",
 | 
			
		||||
                            vnode.attrs.kingdom_cards.map(function(card) {
 | 
			
		||||
                                return m("img", {
 | 
			
		||||
                                    class: "card",
 | 
			
		||||
                                    src: "/static/images/cards/" + card.toLowerCase() + ".jpg",
 | 
			
		||||
                                    src: card_url(card),
 | 
			
		||||
                                    onmouseenter: mouseenter,
 | 
			
		||||
                                    onmouseleave: mouseleave,
 | 
			
		||||
                                })
 | 
			
		||||
@@ -963,7 +988,7 @@ img.card:hover {
 | 
			
		||||
                            vnode.attrs.starting_deck.map(function(card) {
 | 
			
		||||
                                return m("img", {
 | 
			
		||||
                                    class: "card",
 | 
			
		||||
                                    src: "/static/images/cards/" + card.toLowerCase() + ".jpg",
 | 
			
		||||
                                    src: card_url(card),
 | 
			
		||||
                                    onmouseenter: mouseenter,
 | 
			
		||||
                                    onmouseleave: mouseleave,
 | 
			
		||||
                                })
 | 
			
		||||
@@ -1008,11 +1033,12 @@ img.card:hover {
 | 
			
		||||
            setup_state = {
 | 
			
		||||
                starting_deck: [],
 | 
			
		||||
                basic_cards: ["Copper", "Silver", "Gold", "Estate", "Duchy", "Province", "Curse"],
 | 
			
		||||
                kingdom_cards: ["Cellar", "Moat", "Village", "Merchant", "Workshop", "Smithy", "Remodel", "Militia", "Market", "Mine"],
 | 
			
		||||
                kingdom_cards: [],
 | 
			
		||||
                socket: webSocket
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var handle_setup = function(data) {
 | 
			
		||||
                setup_state.kingdom_cards = data.supply;
 | 
			
		||||
                setup_state.starting_deck = data.deck;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -1062,7 +1088,7 @@ img.card:hover {
 | 
			
		||||
                var dlg = document.querySelector("#dialog");
 | 
			
		||||
                resolve_request = request;
 | 
			
		||||
 | 
			
		||||
                document.querySelector("#dialog img").src = "/static/images/cards/" + request.card.toLowerCase() + ".jpg";
 | 
			
		||||
                document.querySelector("#dialog img").src = card_url(request.card);
 | 
			
		||||
 | 
			
		||||
                if (request.request.type == "GainCard") {
 | 
			
		||||
                    let cost = request.request?.filter?.MaxCost;
 | 
			
		||||
@@ -1101,6 +1127,8 @@ img.card:hover {
 | 
			
		||||
                    append_chat(player_name(msg.event.player) + " discards a card.");
 | 
			
		||||
                } else if (msg.event.type == "CardTrashed") {
 | 
			
		||||
                    append_chat(player_name(msg.event.player) + " trashes " + msg.event.name);
 | 
			
		||||
                } else if (msg.event.type == "CardRevealed") {
 | 
			
		||||
                    append_chat(player_name(msg.event.player) + " reveals " + msg.event.name);
 | 
			
		||||
                } else if (msg.event.type == "TurnStarted") {
 | 
			
		||||
                    if (msg.event.player == my_player_id) {
 | 
			
		||||
                        turnStartSound.play();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user