Skip to content

Instantly share code, notes, and snippets.

View vgheri's full-sized avatar

Valerio Gheri vgheri

View GitHub Profile
@vgheri
vgheri / gist:4106062
Created November 18, 2012 16:17
Outer physics update loop
/// <summary>
/// Run the physics update loop for each game registered in _games
/// </summary>
private static void ProcessGamesTick()
{
DateTime timestamp;
foreach(var game in _games.Values)
{
// If in one of the previous rounds we had a goal condition
if (_goalTimestamps.TryGetValue(game.GameId, out timestamp))
@vgheri
vgheri / gist:4106053
Created November 18, 2012 16:15
The server physics update loop
/// <summary>
/// Compute the next state for this game, based on player inputs and ball position
/// </summary>
/// <param name="game"></param>
private static void ProcessTick(Game game)
{
// 1: Apply inputs received from players (and progressively remove them from the buffer)
// 2: Update ball position
// 3: Check for collisions and if collision, update ball status
// 4: If no collision, check for a goal condition and update status if goal
@vgheri
vgheri / gist:4106045
Created November 18, 2012 16:13
Scheduling the server update loops
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
InMemoryUserRepository.GetInstance().ConnectedUsers.ToList().Clear();
InMemoryUserRepository.GetInstance().WaitingList.ToList().Clear();
InMemoryRoomRepository.GetInstance().Rooms.ToList().Clear();
@vgheri
vgheri / gist:4105999
Created November 18, 2012 16:03
Joined() method
/// <summary>
/// Invoked when a new client joins the system
/// </summary>
public void Joined()
{
// 1: Add user to list of connected users
// 2: If waiting list is empty add user to waiting list
// 3: Else find an opponent (first in the waiting list) and remove him from the waiting list
// 4: Create room and assign both users
// 5: Create a group for this room
@vgheri
vgheri / gist:4105971
Created November 18, 2012 15:57
Estabilishing a connection to the server
$(document).ready(function () {
var username = @Html.Raw(Json.Encode(Model));
PongR.createInstance(1200,600,username);
PongR.connect();
});
pongR.PublicPrototype.connect = function () {
$.connection.hub.start()
.done(function () {
@vgheri
vgheri / gist:3163644
Created July 23, 2012 13:40
$.ready()
$(document).ready(function () {
var chat = new chatR.chatViewModel();
var users = new chatR.connectedUsersViewModel();
var currentUser = new chatR.user(@Html.Raw(Json.Encode(Model))); // The username chose by the user is stored in the model
// Proxy creation
var chatHub = $.connection.chatHub; // chatHub is the name of the Hub as declared in server side code
chatHub.username = currentUser.username; // This is the round-trip state
// Client-side event handlers, as declared inside the Hub
@vgheri
vgheri / ChatHub.cs
Created July 23, 2012 12:51
ChatHub
namespace ChatR.Hubs
{
public class ChatHub : Hub, IDisconnect
{
private InMemoryRepository _repository;
public ChatHub()
{
_repository = InMemoryRepository.GetInstance();
}
@vgheri
vgheri / gist:3163223
Created July 23, 2012 11:49
ChatR namespace and ViewModels
/*
* Author: Valerio Gheri
* Date: 22/07/2012
* Description: ChatR namespace js file and viewmodels declaration
*/
// Namespace
var chatR = {};
// Models
@vgheri
vgheri / gist:3163213
Created July 23, 2012 11:46
Chat page HTML code
<div id="myContainer" class="container-fluid">
<div class="row-fluid">
<!-- This is the contact box -->
<div id="users-list" class="span2">
<h4>Users</h4>
<ul data-bind="foreach: contacts">
<li class="user-box"><span class="user-box-name" data-bind="text: username"></span></li>
</ul>
</div>
<!-- This is the chat box -->
@if (false) {
<script src="../../Scripts/jquery-1.7.2-vsdoc.js" type="text/javascript"></script>
<script src="../../JS/iLikeIt.js" type="text/javascript"></script>
}
<div class="container">
<h1>iLikeIt!</h1>
<br />
<h3>iLikeIt! is a simple, proof of concept, image voting system</h3>