38 lines
		
	
	
		
			829 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			829 B
		
	
	
	
		
			Lua
		
	
	
	
	
	
|  | local Widget = {} | ||
|  | local Reactive = require("Core.Reactive") | ||
|  | 
 | ||
|  | local function ResetWatcher(widget) | ||
|  |     if widget.health_watcher then | ||
|  |         widget.health_watcher:Destroy() | ||
|  |         widget.health_watcher = nil | ||
|  |     end | ||
|  |     if widget.hunger_watcher then | ||
|  |         widget.hunger_watcher:Destroy() | ||
|  |         widget.hunger_watcher = nil | ||
|  |     end | ||
|  | end | ||
|  | 
 | ||
|  | function Widget:OnDestroy() | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | 
 | ||
|  | function Widget:Refresh(args) | ||
|  |     local role = args.role | ||
|  |     if role == nil then return end | ||
|  |     self:BindRole(role) | ||
|  | end | ||
|  | 
 | ||
|  | function Widget:BindRole(role) | ||
|  |     ResetWatcher(self) | ||
|  |     self.health_watcher = Reactive.Watcher(function() | ||
|  |         self.HealthBar:SetPercent(role:GetHealthPercent()) | ||
|  |     end) | ||
|  | 
 | ||
|  |     self.hunger_watcher = Reactive.Watcher(function() | ||
|  |         self.HungerBar:SetPercent(role:GetHungerPercent()) | ||
|  |     end) | ||
|  | 
 | ||
|  | end | ||
|  | 
 | ||
|  | return Class(nil, nil, Widget) |