2015-03-23 3 views
-2

Я работаю на серверной стороне своей игры, это почти закончено, но сегодня у меня была проблема ... В этой игре базируются 2 модальности, приземление и deathmatch, в конце игры сервер должен знать результаты. Это онлайн-игра. Когда я заканчиваю матч или игрок выходит, сервер падает, это не должно быть, ему просто нужно было вернуться в комнату. Это дает мне эту ошибку:Невозможно лить объект типа '' on type ''

[ERROR]: Unable to cast object of type 'FagNet.Core.Data.GameScore' to type 'FagNet.Core.Data.TDGameScore'. 
    in FagNet.Core.Data.Player.SetNewTDStats(Boolean win) 
    in FagNet.Core.Data.Room.BroadcastBriefing(Boolean result) 
    in FagNet.Core.Data.Room.<BeginResult>d__2b.MoveNext() 
--- End of stack trace --- 
    in System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__1(Object state) 
    in System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) 
    in System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    in System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 
    in System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    in System.Threading.ThreadPoolWorkQueue.Dispatch() 
    in System.Threading._ThreadPoolWaitCallback.PerformWaitCallback() 

Может кто-нибудь мне помочь !? мне нужна помощь :(

Это источник FagNet.Core.Data.GameScore:

public class GameScore 
    { 
     public DateTime JoinTime { get; set; } 
     public uint TotalPoints { get; set; } 

     public virtual uint CalculateEXP() 
     { 
      return 0; 
     } 
    } 

И это источник FagNet.Core.Data.TDGameScore:

public class TDGameScore : GameScore 
{ 
    public uint TDScore { get; set; } 
    public uint TDAssists { get; set; } 

    public uint Kills { get; set; } 
    public uint KillAssists { get; set; } 
    public uint Offense { get; set; } 
    public uint OffenseAssists { get; set; } 
    public uint Defense { get; set; } 
    public uint DefenseAssists { get; set; } 
    public uint Recovery { get; set; } 

    public override uint CalculateEXP() 
    { 
     var ts = DateTime.Now - JoinTime; 
     if (ts.TotalSeconds < 0 || TotalPoints == 0) 
      return 0; 
     return (uint)ts.TotalSeconds/4 + (TDScore * 15) + (100 * TotalPoints/(500 + 2 * TotalPoints) * 14); 
    } 
} 
+3

Можете ли вы показать код для 'SetNewTDStats (Boolean win)'? Похоже, вы пытаетесь что-то неправильно нарисовать – Sayse

ответ

0

Было бы интересно увидеть код FagNet.Core.Data.Player.SetNewTDStats (Boolean win) (я не могу комментировать, так что должен был написать ответ).

Я предполагаю, что вы пытаетесь сделатьn экземпляра типа GameScore для TDGameStore, который недействителен, если вы не назначили экземпляр TDGameStore переменной типа GameScore, а затем попытались выполнить это. (Жаль, что это плохо объяснение!)

Я хотел бы добавить конструктор копирования для TDGameScore, такие как:

public TDGameStore(GameStore gs) { 
    JoinTime = gs.JoinTime; 
    TotalPoints = gs.TotalPoints; 
} 

Надежда, что помогает

+0

Если возможно, добавьте меня в Skype, Мой скайп: thedragsterx –

0

Это код FagNet.Core.Data.Player. SetNewTDStats (Boolean win):

public void SetNewTDStats(bool win = false) 
    { 
     var score = (TDGameScore) GameScore; 
     TDStats.TotalMatches++; 
     if (win) 
      TDStats.Won++; 
     else 
      TDStats.Lost++; 

     TDStats.TotalKills += score.Kills; 
     TDStats.TotalKillAssists += score.KillAssists; 
     TDStats.TotalOffense += score.Offense; 
     TDStats.TotalOffenseAssists += score.OffenseAssists; 
     TDStats.TotalDefense += score.Defense; 
     TDStats.TotalDefenseAssists += score.DefenseAssists; 
     TDStats.TotalRecovery += score.Recovery; 
     TDStats.TotalTouchdowns += score.TDScore; 
     TDStats.TotalTouchdownAssists += score.TDAssists; 
     GameDatabase.Instance.UpdateTDStats(AccountID, TDStats); 
    } 
Смежные вопросы