Add workshop and remodel effects
This commit is contained in:
		@@ -86,6 +86,10 @@ img.card:hover {
 | 
			
		||||
    box-shadow: 0 0 10px lime;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.supply-pile.selected {
 | 
			
		||||
    box-shadow: 0 0 10px lime;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.chat-window {
 | 
			
		||||
    border: 1px solid black;
 | 
			
		||||
    width: 300px;
 | 
			
		||||
@@ -431,6 +435,15 @@ img.card:hover {
 | 
			
		||||
    color: white;
 | 
			
		||||
    visibility: hidden;
 | 
			
		||||
    grid-template-rows: 5fr auto;
 | 
			
		||||
    transition: top 0.1s ease-in;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dialog.supply {
 | 
			
		||||
    top: 80%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dialog.hand {
 | 
			
		||||
    top: 50%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.dialog img {
 | 
			
		||||
@@ -462,23 +475,47 @@ img.card:hover {
 | 
			
		||||
 | 
			
		||||
        var resolve_request;
 | 
			
		||||
        var enable_hand_selection = false;
 | 
			
		||||
        var enable_supply_selection = false;
 | 
			
		||||
 | 
			
		||||
        var toggle_hand_selection = function(index) {
 | 
			
		||||
            document.querySelectorAll(".player-hand img.card")[index].classList.toggle("selected");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        var toggle_supply_selection = function(index) {
 | 
			
		||||
            document.querySelectorAll(".supply-area .supply-pile")[index].classList.toggle("selected");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function dialog_confirm(ev) {
 | 
			
		||||
            var selected = [];
 | 
			
		||||
            
 | 
			
		||||
            document.querySelectorAll(".player-hand img.card.selected").forEach((c) => {
 | 
			
		||||
                selected.push(parseInt(c.dataset.index));
 | 
			
		||||
                c.classList.remove("selected");
 | 
			
		||||
            });
 | 
			
		||||
            
 | 
			
		||||
            var msg = { type: "HandCardsChosen", choice: selected };
 | 
			
		||||
            webSocket.send(JSON.stringify(msg));
 | 
			
		||||
            enable_hand_selection = false;
 | 
			
		||||
            if (resolve_request.request.type == "GainCard") {
 | 
			
		||||
                var selected = document.querySelector(".supply-pile.selected");
 | 
			
		||||
                if (selected) {
 | 
			
		||||
                    selected = parseInt(selected.dataset.index);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                document.querySelectorAll(".supply-pile.selected").forEach((c) => {
 | 
			
		||||
                    c.classList.remove("selected");
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                var reply = { type: "SupplyCardChosen", choice: selected };
 | 
			
		||||
                var msg = { type: "ResolveReply", reply: reply };
 | 
			
		||||
                webSocket.send(JSON.stringify(msg));
 | 
			
		||||
                enable_supply_selection = false;
 | 
			
		||||
             } else {
 | 
			
		||||
                var selected = [];
 | 
			
		||||
                
 | 
			
		||||
                document.querySelectorAll(".player-hand img.card.selected").forEach((c) => {
 | 
			
		||||
                    selected.push(parseInt(c.dataset.index));
 | 
			
		||||
                    c.classList.remove("selected");
 | 
			
		||||
                });
 | 
			
		||||
                
 | 
			
		||||
                var reply = { type: "HandCardsChosen", choice: selected };
 | 
			
		||||
                var msg = { type: "ResolveReply", reply: reply };
 | 
			
		||||
                webSocket.send(JSON.stringify(msg));
 | 
			
		||||
                enable_hand_selection = false;
 | 
			
		||||
            }
 | 
			
		||||
            document.querySelector("#dialog").style.visibility = "hidden";
 | 
			
		||||
            dialog.classList.remove("hand");
 | 
			
		||||
            dialog.classList.remove("supply");
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
         var mouseenter = function(ev) {
 | 
			
		||||
@@ -552,6 +589,13 @@ img.card:hover {
 | 
			
		||||
                ev.dataTransfer.setData("text", JSON.stringify(data));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var click = function(e) {
 | 
			
		||||
                e.preventDefault();
 | 
			
		||||
                if (enable_supply_selection) {
 | 
			
		||||
                    toggle_supply_selection(parseInt(e.srcElement.parentElement.dataset.index));
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
            var doubleclick = function(ev) {
 | 
			
		||||
                let msg = {
 | 
			
		||||
                    type: "BuyCard",
 | 
			
		||||
@@ -570,6 +614,7 @@ img.card:hover {
 | 
			
		||||
                            "data-index": vnode.attrs.index,
 | 
			
		||||
                            ondragstart: dragStart,
 | 
			
		||||
                            draggable: true,
 | 
			
		||||
                            onclick: click,
 | 
			
		||||
                            ondblclick: doubleclick,
 | 
			
		||||
                        },
 | 
			
		||||
                        m("img", {
 | 
			
		||||
@@ -722,7 +767,6 @@ img.card:hover {
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                view: function(vnode) {
 | 
			
		||||
                    return m(".player-hand",
 | 
			
		||||
@@ -1024,9 +1068,26 @@ img.card:hover {
 | 
			
		||||
 | 
			
		||||
            var handle_resolve_request = function(request) {
 | 
			
		||||
                var dlg = document.querySelector("#dialog");
 | 
			
		||||
                dlg.style.visibility = "visible";
 | 
			
		||||
                resolve_request = request;
 | 
			
		||||
 | 
			
		||||
                enable_hand_selection = true;
 | 
			
		||||
                document.querySelector("#dialog img").src = "/static/images/cards/" + request.card.toLowerCase() + ".jpg";
 | 
			
		||||
 | 
			
		||||
                if (request.request.type == "GainCard") {
 | 
			
		||||
                    let cost = request.request?.filter?.MaxCost;
 | 
			
		||||
                    if (cost) {
 | 
			
		||||
                        document.querySelector("#dialog p").innerHTML = "Choose a card to gain with max cost of " + cost + ".";
 | 
			
		||||
                    } else {
 | 
			
		||||
                        document.querySelector("#dialog p").innerHTML = "Choose a card to gain.";
 | 
			
		||||
                    }
 | 
			
		||||
                    enable_supply_selection = true;
 | 
			
		||||
                    dialog.classList.add("supply");
 | 
			
		||||
                } else if (request.request.type == "ChooseHandCardsToDiscard") {
 | 
			
		||||
                    document.querySelector("#dialog p").innerHTML = "Choose any number of cards to discard.";
 | 
			
		||||
                    enable_hand_selection = true;
 | 
			
		||||
                    dialog.classList.add("hand");
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                dlg.style.visibility = "visible";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            var handle_gameover = function(msg) {
 | 
			
		||||
@@ -1077,7 +1138,7 @@ img.card:hover {
 | 
			
		||||
                } else if (msg.type == "PlayerId") {
 | 
			
		||||
                    my_player_id = msg.id;
 | 
			
		||||
                } else if (msg.type == "ResolveRequest") {
 | 
			
		||||
                    handle_resolve_request(msg.request);
 | 
			
		||||
                    handle_resolve_request(msg);
 | 
			
		||||
                } else {
 | 
			
		||||
                    console.log("event?");
 | 
			
		||||
                    console.log(event.data);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user