public string DoAutocomplete(string text) { if (!game.platform.StringEmpty(text)) { for (int i = 0; i < game.entitiesCount; i++) { Entity entity = game.entities[i]; if (entity == null) { continue; } if (entity.drawName == null) { continue; } if (!entity.drawName.ClientAutoComplete) { continue; } DrawName p = entity.drawName; //Use substring here because player names are internally in format &xNAME (so we need to cut first 2 characters) if (game.platform.StringStartsWithIgnoreCase(StringTools.StringSubstringToEnd(game.platform, p.Name, 2), text)) { return(StringTools.StringSubstringToEnd(game.platform, p.Name, 2)); } } } return(""); }
public override void OnNewFrameDraw3d(Game game, float deltaTime) { for (int i = 0; i < game.entitiesCount; i++) { Entity e = game.entities[i]; if (e == null) { continue; } if (e.drawName == null) { continue; } if (i == game.LocalPlayerId) { continue; } if (e.networkPosition != null && (!e.networkPosition.PositionLoaded)) { continue; } int kKey = i; DrawName p = game.entities[i].drawName; if (p.OnlyWhenSelected) { continue; } float posX = p.TextX + e.position.x; float posY = p.TextY + e.position.y + e.drawModel.ModelHeight + game.one * 7 / 10; float posZ = p.TextZ + e.position.z; //TODO: if picking if ((game.Dist(game.player.position.x, game.player.position.y, game.player.position.z, posX, posY, posZ) < 20) || game.keyboardState[Game.KeyAltLeft] || game.keyboardState[Game.KeyAltRight]) { string name = p.Name; { float shadow = (game.one * game.GetLight(game.platform.FloatToInt(posX), game.platform.FloatToInt(posZ), game.platform.FloatToInt(posY))) / Game.maxlight; //do not interpolate player position if player is controlled by game world //if (EnablePlayerUpdatePositionContainsKey(kKey) && !EnablePlayerUpdatePosition(kKey)) //{ // posX = p.NetworkX; // posY = p.NetworkY; // posZ = p.NetworkZ; //} game.GLPushMatrix(); game.GLTranslate(posX, posY, posZ); //if (p.Type == PlayerType.Monster) //{ // GLTranslate(0, 1, 0); //} ModDrawSprites.Billboard(game); float scale = game.one * 2 / 100; game.GLScale(scale, scale, scale); //Color c = Color.FromArgb((int)(shadow * 255), (int)(shadow * 255), (int)(shadow * 255)); //TODO: Can't change text color because text has outline anyway. if (p.DrawHealth) { game.Draw2dTexture(game.WhiteTexture(), -26, -11, 52, 12, null, 0, Game.ColorFromArgb(255, 0, 0, 0), false); game.Draw2dTexture(game.WhiteTexture(), -25, -10, 50 * (game.one * p.Health), 10, null, 0, Game.ColorFromArgb(255, 255, 0, 0), false); } FontCi font = new FontCi(); font.size = 14; game.Draw2dText(name, font, -game.TextSizeWidth(name, font) / 2, 0, IntRef.Create(Game.ColorFromArgb(255, 255, 255, 255)), true); // GL.Translate(0, 1, 0); game.GLPopMatrix(); } } } }
public override void OnKeyPress(Game game_, KeyPressEventArgs args) { if (game.guistate != GuiState.Normal) { //Don't open chat when not in normal game return; } int eKeyChar = args.GetKeyChar(); int chart = 116; int charT = 84; int chary = 121; int charY = 89; if ((eKeyChar == chart || eKeyChar == charT) && game.GuiTyping == TypingState.None) { game.GuiTyping = TypingState.Typing; game.GuiTypingBuffer = ""; game.IsTeamchat = false; return; } if ((eKeyChar == chary || eKeyChar == charY) && game.GuiTyping == TypingState.None) { game.GuiTyping = TypingState.Typing; game.GuiTypingBuffer = ""; game.IsTeamchat = true; return; } if (game.GuiTyping == TypingState.Typing) { int c = eKeyChar; if (game.platform.IsValidTypingChar(c)) { game.GuiTypingBuffer = StringTools.StringAppend(game.platform, game.GuiTypingBuffer, game.CharToString(c)); } int charTab = 9; //Handles player name autocomplete in chat if (c == charTab && game.platform.StringTrim(game.GuiTypingBuffer) != "") { for (int i = 0; i < game.entitiesCount; i++) { Entity entity = game.entities[i]; if (entity == null) { continue; } if (entity.drawName == null) { continue; } if (!entity.drawName.ClientAutoComplete) { continue; } DrawName p = entity.drawName; //Use substring here because player names are internally in format &xNAME (so we need to cut first 2 characters) if (game.platform.StringStartsWithIgnoreCase(StringTools.StringSubstringToEnd(game.platform, p.Name, 2), game.GuiTypingBuffer)) { game.GuiTypingBuffer = StringTools.StringAppend(game.platform, StringTools.StringSubstringToEnd(game.platform, p.Name, 2), ": "); break; } } } } }