diff --git a/lua/client/client.lua b/lua/client/client.lua index 630e0d16b5456aeb6e812b806f384fb71ded0a49..282ce2fddf25ce517c16b073900e33eeed341f80 100644 --- a/lua/client/client.lua +++ b/lua/client/client.lua @@ -244,9 +244,9 @@ end fk.client_callback["EnterRoom"] = function(_data) Self = ClientPlayer:new(fk.Self) -- FIXME: 需要改Qml - --local ob = ClientInstance.observing + local ob = ClientInstance.observing ClientInstance = Client:new() -- clear old client data - --ClientInstance.observing = ob + ClientInstance.observing = ob ClientInstance.players = {Self} ClientInstance.alive_players = {Self} ClientInstance.discard_pile = {} diff --git a/lua/client/client_util.lua b/lua/client/client_util.lua index 65662667cc00808d87dc770722d8ec57cf2085dc..858a81fde74fb88f8eb4aa9dd4a08c82f928e510 100644 --- a/lua/client/client_util.lua +++ b/lua/client/client_util.lua @@ -945,12 +945,11 @@ function FinishRequestUI() end end --- TODO 传参带上cardMoveData... -function CardVisibility(cardId, move) +function CardVisibility(cardId) local player = Self local card = Fk:getCardById(cardId) if not card then return false end - return player:cardVisible(cardId, move) + return player:cardVisible(cardId) end function RoleVisibility(targetId) diff --git a/lua/client/i18n/zh_CN.lua b/lua/client/i18n/zh_CN.lua index 7e55c32c4656fbe491b4bf4592bba882ebe52fa0..dfa6026999c628e7dc091ba0151124fd7197bdd9 100644 --- a/lua/client/i18n/zh_CN.lua +++ b/lua/client/i18n/zh_CN.lua @@ -360,9 +360,9 @@ FreeKill使用的是libgit2的C API,与此同时使用Git完成拓展包的下 ["Resume"] = "继续", ["Bulletin Info"] = [==[ - ## v0.4.13 + ## v0.4.21 - 优化性能 + UI重构!还有很长一段路要走…… ]==], } diff --git a/lua/core/player.lua b/lua/core/player.lua index 40d1cf4d6c0ad021722b89f91c7bea6081c2ab95..dd0f50a9f2c9f608db1f94a026ca897892738fd4 100644 --- a/lua/core/player.lua +++ b/lua/core/player.lua @@ -1254,7 +1254,7 @@ function Player:roleVisible(target) end end - if room.observing == false and target == self then return true end + if not room.observing and target == self then return true end return target.role_shown end diff --git a/lua/core/request_type/play_card.lua b/lua/core/request_type/play_card.lua index 844bb3109379b67ffd3dff03d28465a5fa1b4ca8..629c6c912d0636e394f38532d8496ef36165cfeb 100644 --- a/lua/core/request_type/play_card.lua +++ b/lua/core/request_type/play_card.lua @@ -100,10 +100,17 @@ function ReqPlayCard:doEndButton() end function ReqPlayCard:selectCard(cid, data) - ReqUseCard.selectCard(self, cid, data) - if self.skill_name and not self.selected_card then return end + if self.skill_name and not self.selected_card then + return ReqActiveSkill.selectCard(self, cid, data) + end + local scene = self.scene + local selected = data.selected + scene:update("CardItem", cid, data) - if self.selected_card then + if selected then + self.skill_name = nil + self.selected_card = Fk:getCardById(cid) + scene:unselectOtherCards(cid) self:setSkillPrompt(self.selected_card.skill, self.selected_card:getEffectiveId()) local sp_skills = {} if self.selected_card.special_skills then @@ -114,11 +121,17 @@ function ReqPlayCard:selectCard(cid, data) end self.scene:update("SpecialSkills", "1", { skills = sp_skills }) else + self.selected_card = nil self:setPrompt(self.original_prompt) self.scene:update("SpecialSkills", "1", { skills = {} }) end end +function ReqPlayCard:selectSkill(skill, data) + ReqUseCard.selectSkill(self, skill, data) + self.scene:update("SpecialSkills", "1", { skills = {} }) +end + function ReqPlayCard:update(elemType, id, action, data) if elemType == "Button" and id == "End" then self:doEndButton() diff --git a/lua/core/request_type/use_card.lua b/lua/core/request_type/use_card.lua index e65a818cd5bdda9570fb6efbc718d5a30b229512..766f6991e5f1495a1e991b14cbef8b5091901d00 100644 --- a/lua/core/request_type/use_card.lua +++ b/lua/core/request_type/use_card.lua @@ -4,6 +4,12 @@ local ReqResponseCard = require 'core.request_type.response_card' ---@class ReqUseCard: ReqResponseCard local ReqUseCard = ReqResponseCard:subclass("ReqUseCard") +function ReqUseCard:skillButtonValidity(name) + local player = self.player + local skill = Fk.skills[name] + return skill:isInstanceOf(ViewAsSkill) and skill:enabledAtResponse(player, false) +end + function ReqUseCard:cardValidity(cid) if self.skill_name then return ReqActiveSkill.cardValidity(self, cid) end local card = cid @@ -31,6 +37,9 @@ end function ReqUseCard:feasible() local skill = Fk.skills[self.skill_name] local card = self.selected_card + if skill then + card = skill:viewAs(self.pendings) + end local ret = false if card and self:cardFeasible(card) then ret = card.skill:feasible(self.selected_targets,