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)
							 |