rezecib Posted November 6, 2014 Share Posted November 6, 2014 In single-player the absence of a minimap was somewhat tolerable because the game paused on the map screen. That being said, it was still pretty annoying to switch back-and-forth between, meaning that pretty much anyone who was willing to look at mods had Minimap HUD installed. It would be really, really awesome if we had an official implementation of a minimap, since to really do it properly requires changes to the C code. I've worked really hard on trying to keep Minimap HUD functional in DST, but it's getting really yucky to maintain. Currently the DS and DST code uses TheWorld.minimap.MiniMap:IsVisible() as a check of whether the map screen is up, which means that this always returns true with Minimap HUD. So I have to provide in the mod a rewrite of any function that does that, which is really bad -- large functions that could definitely need to be changed in the future to fix bugs or change functionality, in which case the mod would then have a copied-modified-outdated version. Examples of where this is a problem:Playercontoller's IsEnabled function:function PlayerController:IsEnabled() return self.classified ~= nil and self.classified.iscontrollerenabled:value() and (self.inst.sg == nil or not self.inst.sg:HasStateTag("nocontrol")) and (self.inst.HUD == nil or not ( TheWorld.minimap.MiniMap:IsVisible() or --this is the problem here self.inst.HUD:IsChatInputScreenOpen() or self.inst.HUD:IsControllerCraftingOpen() or self.inst.HUD:IsControllerInventoryOpen() or self.inst.HUD:IsPauseScreenOpen() or self.inst.HUD:IsConsoleScreenOpen() ) )endThis means that without rewriting the function to check mapscreen, Minimap HUD freezes all playercontroller input. Player_classified's OnPlayerHUDDirty function:local function OnPlayerHUDDirty(inst) if inst._parent ~= nil and inst._parent.HUD ~= nil then if inst.ishudvisible:value() then inst._parent.HUD:Show() else inst._parent.HUD:Hide() end inst._parent.HUD.controls.status:SetGhostMode(inst.isghostmode:value()) inst._parent:EnableMovementPrediction(not inst.isghostmode:value()) if inst.ismapcontrolsvisible:value() then inst._parent.HUD.controls.mapcontrols.minimapBtn:Show() else if TheWorld.minimap.MiniMap:IsVisible() then TheFrontEnd:PopScreen() -- this is a huge problem end inst._parent.HUD.controls.mapcontrols.minimapBtn:Hide() end TheWorld.minimap.MiniMap:EnablePlayerMinimapUpdate(not inst.isghostmode:value()) endend So without rewriting this function, or inserting some awful hack into PopScreen, this means that if this ever gets called with Minimap HUD, the entire playerhud screen gets popped. I don't even see a good way to rewrite this right now, since it's a local function embedded in an event callback (that is, without providing my own player_classified, which would be horrible for compatibility). So if we don't get a proper implementation of a minimap, can those checks at least be replaced with something that's actually talking to mapscreen, not TheWorld.minimap.MiniMap? Link to comment Share on other sites More sharing options...
Worb Posted November 6, 2014 Share Posted November 6, 2014 Or maybe we could just implement an animation on the player models for when someone is looking at their map, make the map a tiny bit smaller than the screen to allow to see incoming threats, and allow movement with WSAD while the map is up. Link to comment Share on other sites More sharing options...
SIRrektinald Posted November 6, 2014 Share Posted November 6, 2014 There is actualy a workshop item of that already! Link to comment Share on other sites More sharing options...
rezecib Posted November 6, 2014 Author Share Posted November 6, 2014 @SIRrektinald I know there's a mod for a minimap. I discussed that at length in the post. The problem is that it's a hack, because the tools are insufficient for a modder to produce an efficient, real minimap. Link to comment Share on other sites More sharing options...
Developer V2C Posted November 6, 2014 Developer Share Posted November 6, 2014 Next hotfix, minimap visibility is changed to check the front end screen Link to comment Share on other sites More sharing options...
Pepsu Posted November 6, 2014 Share Posted November 6, 2014 I agree Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.
Please be aware that the content of this thread may be outdated and no longer applicable.