Changeset 581 for Daodan


Ignore:
Timestamp:
Jan 14, 2011, 9:36:34 AM (14 years ago)
Author:
gumby
Message:

Wow new netcode

Location:
Daodan/MSVC
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • Daodan/MSVC/Flatline.c

    r580 r581  
    425425                                                //PlayerList[i]->Chr = ((GameState *)ONgGameState)->CharacterStorage;
    426426
    427                                                 PlayerList[i]->Actions1 = pd->Inputs.Actions1;
     427/*                                              PlayerList[i]->Actions1 = pd->Inputs.Actions1;
    428428                                                PlayerList[i]->Actions2 = pd->Inputs.Actions2;
    429429                                                PlayerList[i]->MouseDeltaX = pd->Inputs.MouseDeltaX;
    430                                                 PlayerList[i]->MouseDeltaY = pd->Inputs.MouseDeltaY;
     430                                                PlayerList[i]->MouseDeltaY = pd->Inputs.MouseDeltaY;*/
    431431                                                memcpy( &(PlayerList[i]->player_data), pd, sizeof(player_data) );
    432432
     
    484484                                case PK_PING:
    485485                                        packet.id = PK_PONG;
    486 
    487486                                        NetUDPSocket_Send(client_sock, (sockaddr *) &address, (char*)&packet, FLATLINE_HEADER + 4);             
     487                                        break;
     488                                case PK_ALL_INPUT:
     489                                        if(1)
     490                                        {
     491                                                int Player;
     492                                                for(Player = 0; Player < MAX_CONNECTIONS; Player++)
     493                                                {
     494                                                        if(PlayerList[Player])
     495                                                        {
     496                                                                PlayerList[Player]->Actions1 = packet.all_input[Player].Actions1;
     497                                                                PlayerList[Player]->Actions2 = packet.all_input[Player].Actions2;
     498                                                                PlayerList[Player]->MouseDeltaX = packet.all_input[Player].MouseDeltaX;
     499                                                                PlayerList[Player]->MouseDeltaY = packet.all_input[Player].MouseDeltaY;
     500                                                        }
     501                                                }
     502                                        }
    488503                                        break;
    489504                                default:
     
    532547{
    533548        uint16_t i;
    534 
     549        flatline_packet all_input = {0};
    535550        ActiveCharacter * Active_Player = ONgGameState->ActiveCharacters;
    536551        Active_Player->PhyContext->Rotation;
     
    557572        if(!(server_started || client_connected)) return ONgGameState;
    558573
     574        all_input.id = PK_ALL_INPUT;
     575
    559576        if(server_started && ONgGameState->GameTime % 120 == 0)
    560577        {
     
    568585                if(PlayerList[i] == 0) continue;
    569586
     587
     588                if(i == 0) {
     589                        all_input.all_input[i].Actions1 = ((GameState*)(ONgGameState))->Input.Current.Actions1;
     590                        all_input.all_input[i].Actions2 = ((GameState*)(ONgGameState))->Input.Current.Actions2;
     591                        all_input.all_input[i].MouseDeltaX = ONgGameState->Input.MouseDeltaX;
     592                        all_input.all_input[i].MouseDeltaY = ONgGameState->Input.MouseDeltaY;
     593                }
     594                else{
     595                        all_input.all_input[i].Actions1 = PlayerList[i]->Actions1;
     596                        all_input.all_input[i].Actions2 = PlayerList[i]->Actions2;
     597                        all_input.all_input[i].MouseDeltaX = PlayerList[i]->MouseDeltaX;
     598                        all_input.all_input[i].MouseDeltaY = PlayerList[i]->MouseDeltaY;
     599                }
    570600
    571601                Player = PlayerList[i]->Chr;
     
    614644                if(Active_Player == 0) continue;
    615645                Active_Input = &(Active_Player->Input);
    616                 if(server_started) {
     646
     647                if(server_started && strcmp(PlayerList[i]->player_data.Animation, TMrInstance_GetInstanceName(Active_Player->Animation)))
     648                {
    617649                        player_data * data;
    618650                        flatline_packet data_out = {0};
    619651
    620                         if(!strcmp(PlayerList[i]->player_data.Animation, TMrInstance_GetInstanceName(Active_Player->Animation)))
    621                                 continue;
    622 
     652                       
    623653                        data_out.id = PLAYER_DATA;
    624654                        data = (void*)&(data_out.data);
     
    652682
    653683
    654                         if(i == 0) {
    655                                 data->Inputs.Actions1 = ((GameState*)(ONgGameState))->Input.Current.Actions1;
    656                                 data->Inputs.Actions2 = ((GameState*)(ONgGameState))->Input.Current.Actions2;
    657                                 data->Inputs.MouseDeltaX = ONgGameState->Input.MouseDeltaX;
    658                                 data->Inputs.MouseDeltaY = ONgGameState->Input.MouseDeltaY;
    659                         }
    660                         else{
    661                                 data->Inputs.Actions1 = PlayerList[i]->Actions1;
    662                                 data->Inputs.Actions2 = PlayerList[i]->Actions2;
    663                                 data->Inputs.MouseDeltaX = PlayerList[i]->MouseDeltaX;
    664                                 data->Inputs.MouseDeltaY = PlayerList[i]->MouseDeltaY;
    665                         }
    666684                        data->Ping = PlayerList[i]->Ping;
    667685                        memcpy( &(PlayerList[i]->player_data), data, sizeof(player_data) );
     
    690708                                player_data* pd = &PlayerList[i]->player_data;
    691709
    692                                 if(PlayerList[i]->DataApplied) continue;
    693 
     710
     711                                //Note to self: sort out which needs to be applied the first time and which the second.
     712                                switch(PlayerList[i]->DataApplied)
     713                                {
     714                                case 1:
     715                                        PlayerList[i]->DataApplied = 2;
     716                                        break;
     717                                case 0:
     718                                        PlayerList[i]->DataApplied = 1;
     719                                case 2:
     720                                        continue;
     721                                }
     722                               
    694723                                Player->Health = PlayerList[i]->player_data.Health;
    695724                                PlayerList[i]->Chr->MaxHealth = PlayerList[i]->player_data.MaxHealth;
     
    698727                                PlayerList[i]->Chr->DesiredFacing = PlayerList[i]->player_data.DesiredFacing;
    699728
    700                                 PlayerList[i]->Actions1 = PlayerList[i]->player_data.Inputs.Actions1;
     729/*                              PlayerList[i]->Actions1 = PlayerList[i]->player_data.Inputs.Actions1;
    701730                                PlayerList[i]->Actions2 = PlayerList[i]->player_data.Inputs.Actions2;
    702731                                PlayerList[i]->MouseDeltaX = PlayerList[i]->player_data.Inputs.MouseDeltaX;
    703                                 PlayerList[i]->MouseDeltaY = PlayerList[i]->player_data.Inputs.MouseDeltaY;
     732                                PlayerList[i]->MouseDeltaY = PlayerList[i]->player_data.Inputs.MouseDeltaY;*/
    704733                                Active_Player->PhyContext->Position = PlayerList[i]->player_data.Position;
    705734                                OldAnimation = Active_Player->Animation;
     
    757786                                                        //Player->Flags |= 0x00000010;
    758787                                                        ONrCharacter_SetAnimationExternal(Player, TRrAnimation_GetFrom(Animation), Animation, 0);
     788                                                        //ONrCharacter_NewAnimationHook(Player, Active_Player);
    759789                                                }
    760790
     
    811841                                        }
    812842                                }
    813                                 PlayerList[i]->DataApplied = 1;
    814 
    815                         }
    816                 }
     843
     844                        }
     845                }
     846
     847        }
     848        if(server_started)
     849        {
     850                UDPServer_SendToAll(&all_input, FLATLINE_HEADER + sizeof(player_input) * 32);
    817851        }
    818852
  • Daodan/MSVC/Flatline.h

    r580 r581  
    121121        uint32_t Health;
    122122        uint32_t MaxHealth;
    123         input_struct Inputs;
     123        //input_struct Inputs;
    124124        int rare_sync_index;
    125125        char Animation[32];
     
    144144        int intArray[];
    145145} flatline_event;
     146
     147typedef struct {
     148        float MouseDeltaX;
     149        float MouseDeltaY;
     150        uint32_t Actions1;
     151        uint32_t Actions2;
     152} player_input;
    146153
    147154//used for storing data about each player
     
    163170                flatline_event  flatline_event;
    164171                uint32_t                ping;
     172                player_input    all_input[32];
    165173        };
    166174} flatline_packet;
     
    190198        PK_PING,
    191199        PK_PONG,
     200        PK_ALL_INPUT,
    192201};
    193202
Note: See TracChangeset for help on using the changeset viewer.