anchor.diff:    FLabel.Caption := AValue;
   end;
   
  -{ TKMGUIGameSpectatorCustomPage }
  -
  -constructor TKMGUIGameSpectatorCustomPage.Create(aParent: TKMPanel);
  -begin
  -  FPanel := TKMPanel.Create(aParent, aParent.Width - 160, 32, 160, 30);
  -  FPanel.Anchors := [anTop, anRight];
  -  FPanel.Focusable := false;
  -  FPanel.Hide;
  -end;
  -
  -procedure TKMGUIGameSpectatorCustomPage.Activation;
  -begin
  -
  -end;
  -
  -{ TKMGUIGameSpectatorArmy }
  -
  -constructor TKMGUIGameSpectatorArmy.Create(aParent: TKMPanel);
  -begin
  -  inherited;
  -
  -end;
  -
  -procedure TKMGUIGameSpectatorArmy.Activation;
  +function TKMGUIGameSpectatorItem.GetVisible: Boolean;
  +begin
  +  Result := FImage.Visible;
  +end;
  +
  +procedure TKMGUIGameSpectatorItem.SetVisible(AValue: Boolean);
  +begin
  +  FImage.Visible := AValue;
  +  FLabel.Visible := AValue;
  +end;
  +
  +{ TKMGUIGameSpectatorPanel }
  +
  +constructor TKMGUIGameSpectatorPanel.Create(aParent: TKMPanel);
  +begin
  +  inherited Create(aParent, aParent.Width - 160, 32, 160, 30);
  +  Anchors := [anTop, anRight];
  +  Focusable := false;
  +  Hide;
  +
  +
  +end;
  +
  +procedure TKMGUIGameSpectatorPanel.Activation;
  +begin
  +
  +end;
  +
  +{ TKMGUIGameSpectatorPanelResources }
  +
  +constructor TKMGUIGameSpectatorPanelResources.Create(aParent: TKMPanel);
  +begin
  +  inherited;
  +
  +end;
  +
  +procedure TKMGUIGameSpectatorPanelResources.Activation;
  +var
  +  i, p, HandCount, WareCount: Integer;
  +  WT: TWareType;
  +begin
  +  inherited;
  +  HandCount := Min(MAX_LOBBY_PLAYERS, gHands.Count);
  +  if HandCount = Length(fItems) then
  +    Exit;
  +
  +  SetLength(fItems, HandCount);
  +  Height := 32 * HandCount;
  +  Width := 448;
  +  Left := Parent.Width - 448;
  +  for i := 0 to HandCount - 1 do
  +  begin
  +    p := 0;
  +    for WT := WARE_MIN to WARE_MAX do
  +    begin
  +      WareCount := gHands[i].Stats.GetWareBalance(WT);
  +      if WareCount > 0 then
  +        p := p + 32;
  +      fItems[i, WT] := TKMGUIGameSpectatorItem.Create(Self, Integer(WT), gRes.Wares[WT].GUIIcon, gRes.Wares[WT].Title, gHands[i].FlagColor);
  +      fItems[i, WT].SetPosition(Width - p, i * 32);
  +      fItems[i, WT].Value := IntToStr(WareCount);
  +      fItems[i, WT].Visible := WareCount > 0;
  +    end;
  +  end;
  +end;
  +
  +procedure TKMGUIGameSpectatorPanelResources.UpdateState(aTickCount: Cardinal);
  +var
  +  i, p, HandCount, WareCount: Integer;
  +  WT: TWareType;
  +begin
  +  inherited;
  +
  +  if Length(fItems) = 0 then
  +    Exit;
  +
  +  for i := 0 to HandCount - 1 do
  +  begin
  +    p := 0;
  +    for WT := WARE_MIN to WARE_MAX do
  +    begin
  +      WareCount := gHands[i].Stats.GetWareBalance(WT);
  +
  +      if WareCount > 0 then
  +        p := p + 32;
  +
  +      fItems[i, WT].SetPosition(Width - p, i * 32);
  +      fItems[i, WT].Value := IntToStr(WareCount);
  +      fItems[i, WT].Visible := WareCount > 0;
  +    end;
  +  end;
  +end;
  +
  +{ TKMGUIGameSpectatorPanelArmy }
  +
  +constructor TKMGUIGameSpectatorPanelArmy.Create(aParent: TKMPanel);
  +begin
  +  inherited;
  +
  +end;
  +
  +procedure TKMGUIGameSpectatorPanelArmy.Activation;
   
     function GetUnitCount(AHand: TKMHand; AUnitType: TUnitType): Integer;
     var
  
positive.code:   FPanel.Anchors := [anTop, anRight];
    FPanel.Focusable := false;
    FPanel.Show;
    FPageList := TList.Create;
    FSelectedPage := nil;
  
    FDropBox := TKMDropList.Create(FPanel, 5, 5, 150, 20, fnt_Metal, '', bsMenu);
    FDropBox.OnChange := ChangePage;
  
    AddPage('', nil);
    AddPage('', nil);
    AddPage('', nil);
    AddPage('', nil);
    AddPage('', TKMGUIGameSpectatorArmy.Create(FPanel));
    AddPage('', nil);
    AddPage('', nil);
  end;
  
  destructor TKMGUIGameSpectator.Destroy;
  begin
    FPageList.Free;
  
    inherited;
  end;
  
  procedure TKMGUIGameSpectator.AddPage(AName: String; APage: TKMGUIGameSpectatorCustomPage);
  begin
    FDropBox.Add(AName);
    FPageList.Add(APage);
  end;
  
  procedure TKMGUIGameSpectator.ChangePage(Sender: TObject);
  begin
    if Assigned(FSelectedPage) then
      FSelectedPage.Panel.Hide;
  
    FSelectedPage := TKMGUIGameSpectatorCustomPage(FPageList[FDropBox.ItemIndex]);
  
    if Assigned(FSelectedPage) then
    begin
      FSelectedPage.Activation;
      FSelectedPage.Panel.Show;
    end;
  end;
  
  
negative.code:     Exit;
  
    SetLength(fItems, HandCount);
    Height := 32 * HandCount;
    Width := 448;
    Left := Parent.Width - 448;
    for i := 0 to HandCount - 1 do
    begin
      p := 0;
  