private bool SelectGametype(GametypeCategory ActiveCategory, ref int CurrentIndex, ref float DrawY) { if (CurrentIndex >= GametypeScrollbarValue) { DrawY += 20; } ++CurrentIndex; for (int G = 0; G < ActiveCategory.ArrayGametype.Length; ++G) { if (CurrentIndex >= GametypeScrollbarValue) { if (MouseHelper.MouseStateCurrent.X >= LeftPanelX && MouseHelper.MouseStateCurrent.X < LeftPanelX + PanelWidth && MouseHelper.MouseStateCurrent.Y >= DrawY && MouseHelper.MouseStateCurrent.Y < DrawY + 20 && InputHelper.InputConfirmPressed()) { SelectedGametype = ActiveCategory.ArrayGametype[G]; Room.RoomType = SelectedGametype.Name; Owner.OnGametypeUpdate(); return(true); } DrawY += 20; } ++CurrentIndex; } return(false); }
/// <summary> /// Create a new Board /// </summary> /// <param name="colour1">The new black colour</param> /// <param name="colour2">The new White colour</param> /// <param name="mode">The new game mode</param> /// <param name="pieces">Use these pieces instead of creating new ones</param> private Board(Color colour1, Color colour2, Gametype mode, List <Piece> pieces) { // Assign Board properties _mode = mode; WhiteColour = Color.FromArgb(colour1.ToArgb()); BlackColour = Color.FromArgb(colour2.ToArgb()); // Add all the pieces Pieces = pieces; }
public void Init(Gametype gameType, NetServer netServer) { GameType = gameType; server = netServer; gameEnded = false; isInitialized = false; shouldQuit = false; randomGenerator = new Random(Environment.TickCount); players = new List <Player>(2); synchronizedQueue = new ConcurrentQueue <Action>(); StateMgr = new GameStateManager(); }
public static Gametype GenerateDefaultZMSettings() { Gametype zm = new Gametype { Defaults = new Gametype.DefaultSettings(), Customs = new Gametype.CustomSettings() }; zm.Defaults.PointerAddress = 21021944; // maps/mp/gametypes_zm/_clientids.gsc pointer zm.Defaults.BufferAddress = 810181280; // maps/mp/gametypes_zm/_clientids.gsc buffer address zm.Customs.BufferAddress = 13371337; zm.ScriptPath = "maps/mp/gametypes_zm/_clientids.gsc"; return(zm); }
public static Gametype GenerateDefaultMPSettings() { Gametype mp = new Gametype { Defaults = new Gametype.DefaultSettings(), Customs = new Gametype.CustomSettings() }; mp.Defaults.PointerAddress = 21021896; // maps/mp/gametypes/_clientids.gsc pointer mp.Defaults.BufferAddress = 810181280; // maps/mp/gametypes/_clientids.gsc buffer address mp.Customs.BufferAddress = 268697600; mp.ScriptPath = "maps/mp/gametypes/_clientids.gsc"; return(mp); }
public void Init(Gametype gameType) { GameType = gameType; stopUpdating = false; gameEnded = false; isGameInitialized = false; userActionsDisabled = true; shouldQuit = false; playerQuit = false; objects = new List <ISceneObject>(); objectsToRemove = new List <ISceneObject>(); objectsToAdd = new List <ISceneObject>(); idsToRemove = new List <long>(); randomGenerator = new Random(Environment.TickCount); players = new List <Player>(2); statisticsTimer = 0; totalTime = 0; StateMgr = new GameStateManager(); clickListeners = new List <IMouseClickListener>(); moveListeners = new List <IMouseMoveListener>(); keyListeners = new List <IKeyPressListener>(); currentPlayer = CreatePlayer(); currentPlayer.Data.PlayerColor = Player.GetChosenColor(); players.Add(currentPlayer); AttachStateManagers(); Application.Current.Dispatcher.Invoke(new Action(() => { currentPlayer.Data.Name = App.Instance.PlayerName; currentPlayer.Data.HashId = App.Instance.PlayerHashId; })); if (gameType == Gametype.MULTIPLAYER_GAME) { SetMainInfoText(Strings.networking_waiting); } else if (area != null) { SetMainInfoText(String.Empty); } InitNetwork(); ConnectToServer(); }
private void StartGame(Gametype type, int serverId = 0) { SoundManager.Instance.StopAllSounds(); SoundManager.Instance.StartPlayingInfinite(SharedDef.MUSIC_BACKGROUND_ACTION); StartGameThread(); if (type != Gametype.MULTIPLAYER_GAME) { mainWindow.GameRunning = true; } sceneMgr.Enqueue(new Action(() => { sceneMgr.RemoteServerId = serverId; sceneMgr.Init(type); })); }
private bool FindAvailableServerManager(NetConnection netConnection, Gametype type, int serverId) { if (connections.Count == 0) { return(false); } // vzdycky vytvorit novy manager pro solo hru if (type == Gametype.SOLO_GAME) { return(false); } foreach (KeyValuePair <NetConnection, ServerMgr> pair in connections) { if (type == Gametype.MULTIPLAYER_GAME) { Logger.Info("quick game mgr plr count: " + pair.Value.GetPlayerCount()); if (pair.Value.GameType == Gametype.MULTIPLAYER_GAME && pair.Value.GetPlayerCount() == 1) { mgr = pair.Value; return(true); } } else // Tournament { // TODO: nahlasit uzivateli chybu kdyz je pozadovany manager uz zaplneny if (pair.Value.GameType == Gametype.TOURNAMENT_GAME && pair.Value.GetPlayerCount() < SharedDef.MAX_TOURNAMENT_PLAYERS) { if (serverId == pair.Value.Id && !pair.Value.IsGameRunning() && pair.Value.TournamentSettings.PlayedMatches <= 0) { mgr = pair.Value; return(true); } } } } // nenalezen zadny vhodny manager return(false); }
/// <summary> /// Create a new Board /// </summary> /// <param name="colour1">The new black colour</param> /// <param name="colour2">The new white colour</param> /// <param name="mode">The new game mode</param> public Board(Color colour1, Color colour2, Gametype mode) { // Assign Board properties _mode = mode; PlayerOneTurn = true; WhiteColour = Color.FromArgb(colour1.ToArgb()); BlackColour = Color.FromArgb(colour2.ToArgb()); // Setup the board based on Game type CreateBoard(); // Get all the moves for the pieces if (Pieces == null) { return; } foreach (var piece in Pieces.Where(piece => piece != null)) { piece.GetMoves(this, true); } }
private void CreateNewServerMgr(Gametype type) { mgr = new ServerMgr(); mgr.Init(type, server); if (GameStartedCallback != null) { GameStartedCallback(type == Gametype.TOURNAMENT_GAME); } mgr.CloseCallback = ManagerClosed; Thread serverThread = new Thread(new ThreadStart(mgr.Run)); serverThread.IsBackground = false; serverThread.Name = "Server Thread"; serverThread.Start(); switch (type) { case Gametype.SOLO_GAME: // v solo se nastavi tournament settings primo pres herni aplikaci break; case Gametype.MULTIPLAYER_GAME: { TournamentSettings s = new TournamentSettings(); s.MMType = MatchManagerType.QUICK_GAME; s.Level = GameLevel.BASIC_MAP; s.RoundCount = 1; s.BotCount = 0; mgr.Enqueue(new Action(() => mgr.TournamentSettings = s)); } break; case Gametype.TOURNAMENT_GAME: // v tournamentu se poslou setting pozdeji, az je hrac potvrdi break; } }
public override void Load() { fntText = Content.Load <SpriteFont>("Fonts/Arial10"); Gametype GametypeCampaign = new Gametype("Campaign", "Classic mission based mode, no respawn.", null); Gametype GametypeHorde = new Gametype("Horde", "Wave survival mode, respawn at the start of each wave.", null); Gametype GametypeBaseDefense = new Gametype("Base Defense", "Wave survival mode, respawn at the start of each wave. Must defend a base by building turrets.", null); Gametype GametypeDeathmatch = new Gametype("Deathmatch", "Gain points for kills and assists, respawn on death.", null); Gametype GametypeObjective = new Gametype("Objective", "One team must complete objectives while another prevent them.", null); Gametype GametypeAssault = new Gametype("Assault", "Team deathmatch with limited respawns.", null); Gametype GametypeConquest = new Gametype("Conquest", "Teams must fight to capture respawn bases that give them points. The starting base may or may not be capturable.", null); Gametype GametypeOnslaught = new Gametype("Onslaught", "Teams must fight to capture respawn bases that give them access to the enemy base's core. Last team with a core win.", null); Gametype GametypeKingOfTheHill = new Gametype("King Of The Hill", "Hold a position without enemies to win points.", null); Gametype GametypeBunny = new Gametype("Bunny", "Unit that holds the flag become the bunny and gets points for kills, everyone else try to kill the bunny.", null); Gametype GametypeFreezeTag = new Gametype("Freeze Tag", "Killing an enemy freeze him, when every enemies are frozen you win. Teamates can unfreeze allie by staying next to them for 2 turns.", null); Gametype GametypeJailbreak = new Gametype("Jailbreak", "Killing an enemy send him to your prison, capture everyone to win. Teamates can be freed by standing on a switch.", null); Gametype GametypeMutant = new Gametype("Mutant", "First kill transform you into the mutant, a unit with overpowered stats and attacks. Only the Mutant can kill or be killed.", null); Gametype GametypeKaiju = new Gametype("Kaiju", "One player controls giant monsters while the other players use their units.", null); SelectedGametype = GametypeCampaign; ArrayGametypeCategory = new GametypeCategory[2]; ArrayGametypeCategory[0] = new GametypeCategory("PVE", new Gametype[] { GametypeCampaign, GametypeHorde }); ArrayGametypeCategory[1] = new GametypeCategory("PVP", new Gametype[] { GametypeDeathmatch, GametypeObjective, GametypeAssault, GametypeConquest, GametypeOnslaught, GametypeKingOfTheHill, GametypeBunny, GametypeFreezeTag, GametypeJailbreak, GametypeMutant, GametypeKaiju, }); int PanelY = (int)(Constants.Height * 0.15); int PanelWidth = (int)(Constants.Width * 0.4); int PanelHeight = (int)(Constants.Height * 0.75); int LeftPanelX = (int)(Constants.Width * 0.03); GametypeScrollbar = new BoxScrollbar(new Vector2(LeftPanelX + PanelWidth - 20, PanelY), PanelHeight, 10, OnGametypeScrollbarChange); }
public Configuration(Gametype multiplayer, Gametype zombies) { MP = multiplayer; ZM = zombies; }
public GameHandle(Game game, Gametype type) { this.Game = game; this.Type = type; }
public override System.Drawing.Bitmap drawTextOnImage(SmashOverlayGenerator form) { //IF FONT IS NOT INSTALLED WE INSTALL IT GenFcns.installFonts(form, "EARTHQUAKE.TTF", pfc); GenFcns.installFonts(form, "FLAPHEAD.TTF", pfc); //fontsInstalled(form, "EARTHQUAKE"); //fontsInstalled(form, "FLAPHEAD"); //fontsInstalled(form, "zekton rg"); setFontSizes(form.ResourceType, form.MatchupCompetitor1, form.MatchupCompetitor2); if (!GenFcns.isNullOrEmpty(Gametype) && Gametype.Equals("doubles")) { setFontSizes(form.ResourceType, Competitor3, Competitor4); } TournamentName = form.TournamentName; TournamentRound = form.TournamentRound; Competitor1 = form.MatchupCompetitor1; Competitor2 = form.MatchupCompetitor2; StringFormat nameFormat = new StringFormat(); StringFormat tournamentFormat = new StringFormat(); Bitmap image = base.getImage(); Graphics g = Graphics.FromImage(image); nameFormat.LineAlignment = StringAlignment.Center; nameFormat.Alignment = StringAlignment.Center; tournamentFormat.Alignment = StringAlignment.Center; //DRAW CHARACTERS drawCharactersOnImage(g, Character1Path, Character1Point, Character2Path, Character2Point); //DRAW BANNER Pen p = new Pen(Color.LightCyan, (float)50.0); SolidBrush b = new SolidBrush(Color.MediumPurple); SolidBrush bBorder = new SolidBrush(Color.White); Rectangle r = new Rectangle(new Point(0, 800), new Size(1920, 200)); Rectangle rBorder = new Rectangle(new Point(0, 780), new Size(1920, 240)); g.FillRectangle(bBorder, rBorder); g.FillRectangle(b, r); FontFamily earthquakeFamily = pfc.Families[0]; FontFamily flapheadFamily = pfc.Families[1]; Font earthquake = new Font(earthquakeFamily, 120); Font flaphead = new Font(flapheadFamily, 120); //DRAW COMPETITOR INFORMATION g.DrawString(form.MatchupCompetitor1, earthquake, Brushes.White, Competitor1Point.getPoint(), nameFormat); g.DrawString(form.MatchupCompetitor2, earthquake, Brushes.White, Competitor2Point.getPoint(), nameFormat); //g.DrawString("THIS IS A TEST", f1, Brushes.Yellow, new Point(0, 0), nameFormat); //g.DrawString(form.TournamentName, TournamentFont, Brushes.White, TournamentPoint.getPoint(), tournamentFormat); //DRAW TOURNAMENT STUFFS string tournamentLogoPath = ListBoxFcns.getResourcePath(form.ProductName, "tournament", "*****@*****.**"); Image logoImage = base.getImage(tournamentLogoPath); g.DrawImage(logoImage, TournamentPoint.getPoint()); g.DrawString(form.TournamentRound, flaphead, Brushes.White, TournamentRoundPoint.getPoint(), tournamentFormat); Image img = (Image)image; Bitmap newImage = new Bitmap(img, new Size(640, 400)); return(newImage); }
private void GotMessage(object peer) { server = peer as NetServer; NetIncomingMessage msg = server.ReadMessage(); switch (msg.MessageType) { case NetIncomingMessageType.VerboseDebugMessage: case NetIncomingMessageType.DebugMessage: case NetIncomingMessageType.WarningMessage: case NetIncomingMessageType.ErrorMessage: Logger.Debug(msg.ReadString()); break; case NetIncomingMessageType.UnconnectedData: PacketType packetType = (PacketType)msg.ReadInt32(); switch (packetType) { case PacketType.AVAILABLE_TOURNAMENTS_REQUEST: if (!CheckVersion(msg.ReadString(), msg.SenderEndPoint)) { break; } SendAvailableTournamentsResponse(msg.SenderEndPoint); break; case PacketType.AVAILABLE_RECONNECT_REQUEST: CheckAvailableReconnect(msg.SenderEndPoint, msg.ReadString()); break; } break; case NetIncomingMessageType.ConnectionApproval: if (msg.ReadInt32() != (int)PacketType.PLAYER_CONNECT) { break; } string clientVersion = msg.ReadString(); if (!CheckVersion(clientVersion, msg.SenderEndPoint)) { msg.SenderConnection.Deny("version mismatch"); break; } Gametype type = (Gametype)msg.ReadByte(); int serverId = msg.ReadInt32(); string name = msg.ReadString(); string playerHashId = msg.ReadString(); // v pripade ze jeho connection je uz prirazene k nejakemu manageru if (connections.TryGetValue(msg.SenderConnection, out mgr)) { mgr.Enqueue(new Action(() => mgr.PlayerConnectionApproval(msg, name, playerHashId))); Logger.Info("Player " + name + " has manager assigned already (during ConnectionApproval)"); return; } if (PlayerConnectedCallback != null) { PlayerConnectedCallback(); } mgr = GetServerForReconnectionIfAny(playerHashId); // novy manager se vytvori pokud je zakladan novy turnaj (id 0) nebo pokud neni nalezen vhodny server if (mgr == null && ((type == Gametype.TOURNAMENT_GAME && serverId == 0) || !FindAvailableServerManager(msg.SenderConnection, type, serverId))) { CreateNewServerMgr(type); } connections.Add(msg.SenderConnection, mgr); mgr.Enqueue(new Action(() => mgr.PlayerConnectionApproval(msg, name, playerHashId))); return; //musi se provest return, jinak je zprava zrecyklovana jeste pred zpracovanim, o recyklaci se stara ServerMgr case NetIncomingMessageType.Data: if (!connections.TryGetValue(msg.SenderConnection, out mgr)) { Logger.Warn("received data message from unknown connection -> skipped: " + msg.SenderConnection); break; } mgr.EnqueueReceivedMessage(msg); return; //musi se provest return, jinak je zprava zrecyklovana jeste pred zpracovanim, o recyklaci se stara ServerMgr case NetIncomingMessageType.StatusChanged: switch (msg.SenderConnection.Status) { case NetConnectionStatus.None: case NetConnectionStatus.InitiatedConnect: case NetConnectionStatus.RespondedAwaitingApproval: case NetConnectionStatus.RespondedConnect: break; case NetConnectionStatus.Disconnected: case NetConnectionStatus.Disconnecting: if (PlayerDisconnectedCallback != null) { PlayerDisconnectedCallback(); } ServerMgr tempMgr = null; if (!connections.TryGetValue(msg.SenderConnection, out tempMgr)) { Logger.Warn("disconnecting unknown connection -> skipped: " + msg.SenderConnection); break; } long uid = msg.SenderConnection.RemoteUniqueIdentifier; tempMgr.Enqueue(new Action(() => tempMgr.PlayerDisconnected(uid))); connections.Remove(msg.SenderConnection); //msg.SenderConnection.Disconnect("x"); break; case NetConnectionStatus.Connected: break; } // NOTE: Disconnecting and Disconnected are not instant unless client is shutdown with disconnect() //Logger.Debug(msg.SenderConnection.ToString() + " status changed to: " + msg.SenderConnection.Status); break; default: Logger.Debug("non-handled message type: " + msg.MessageType); break; } server.Recycle(msg); }