Пример #1
0
        public override void ReleaseVehicle(ushort vehicleID, ref Vehicle data)
        {
            //check if currentclaim is null
            try
            {
                if (currentClaim[vehicleID] != null)
                {
                    DeathRegistry.SubmitDeathClaim(districtNo[vehicleID], currentClaim[vehicleID]);
                }
            }
            catch (Exception E) { }

            base.ReleaseVehicle(vehicleID, ref data);
        }
Пример #2
0
        public override void SimulationStep(uint citizenID, ref Citizen data)
        {
            base.SimulationStep(citizenID, ref data);

            /* TODO:
             * remove lock statements as they may not be useful
             * also refactor code
             */

            switch (data.CurrentLocation)
            {
            case Citizen.Location.Home:
                if (data.m_homeBuilding == 0)
                {
                    return;
                }
                break;

            case Citizen.Location.Moving:
                if (data.m_vehicle == 0)
                {
                    return;
                }
                break;

            case Citizen.Location.Visit:
                if (data.m_visitBuilding == 0)
                {
                    return;
                }
                break;

            case Citizen.Location.Work:
                if (data.m_workBuilding == 0)
                {
                    return;
                }
                break;

            default: return;
            }

            ushort citizenBuilding = 0;

            switch (data.CurrentLocation)
            {
            case Citizen.Location.Home:
                citizenBuilding = data.m_homeBuilding;
                break;

            case Citizen.Location.Visit:
                citizenBuilding = data.m_visitBuilding;
                break;

            case Citizen.Location.Work:
                citizenBuilding = data.m_workBuilding;
                break;

            default: break;
            }

            Vector3 p = Singleton <BuildingManager> .instance.m_buildings.m_buffer[citizenBuilding].m_position;
            byte    currentDistrict = Singleton <DistrictManager> .instance.GetDistrict(p);

            if (data.Dead && (DeathRegistry.IsRegistered(citizenBuilding) == false))
            {
                DeathRegistry.claims[citizenBuilding] = new DeathClaim();
                DeathClaim claim = DeathRegistry.claims[citizenBuilding];
                claim.buildingID = citizenBuilding;
                claim.citizenID  = citizenID;
                claim.pos        = p;
                claim.location   = data.CurrentLocation;

                //Debug.Log("Died At : " + Singleton<BuildingManager>.instance.m_buildings.m_buffer[citizenBuilding].Info.name);

                DeathRegistry.SubmitDeathClaim(currentDistrict, claim);

                return;
            }

            if (data.Dead && DeathRegistry.IsRegistered(citizenBuilding) && DeathRegistry.GetBuildingDistrict(citizenBuilding) != currentDistrict)
            {
                DeathClaim claim = DeathRegistry.claims[citizenBuilding];
                if (!claim.vehicleArriving)
                {
                    DeathRegistry.RecallDeathClaim(DeathRegistry.GetBuildingDistrict(claim.buildingID), claim);

                    DeathRegistry.claims[citizenBuilding] = new DeathClaim();
                    claim            = DeathRegistry.claims[citizenBuilding];
                    claim.buildingID = citizenBuilding;
                    claim.citizenID  = citizenID;
                    claim.pos        = p;
                    claim.location   = data.CurrentLocation;

                    DeathRegistry.SubmitDeathClaim(currentDistrict, claim);

                    return;
                }
            }
        }