project_files/frontlib/model/gamesetup.c
author Wuzzy <Wuzzy2@mail.ru>
Wed, 25 Oct 2017 23:09:41 +0200
changeset 12768 ad67a3804981
parent 10017 de822cd3df3a
permissions -rw-r--r--
Fix sometimes ammo schemes not being saved after changing before an ammo scheme got deleted in session This was because the bool isDeleting is not initialized, so its initial value is unpredictable. Which means there's chance it starts with true, confusing the frontend.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10017
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     1
/*
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     2
 * Hedgewars, a free turn based strategy game
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     3
 * Copyright (C) 2012 Simeon Maxein <smaxein@googlemail.com>
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     4
 *
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     5
 * This program is free software; you can redistribute it and/or
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     6
 * modify it under the terms of the GNU General Public License
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     7
 * as published by the Free Software Foundation; either version 2
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     8
 * of the License, or (at your option) any later version.
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
     9
 *
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    10
 * This program is distributed in the hope that it will be useful,
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    13
 * GNU General Public License for more details.
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    14
 *
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    15
 * You should have received a copy of the GNU General Public License
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    16
 * along with this program; if not, write to the Free Software
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    17
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    18
 */
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    19
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    20
#include "gamesetup.h"
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    21
#include "../util/util.h"
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    22
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    23
#include <stdlib.h>
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    24
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    25
void flib_gamesetup_destroy(flib_gamesetup *gamesetup) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    26
    if(gamesetup) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    27
        free(gamesetup->style);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    28
        flib_scheme_destroy(gamesetup->gamescheme);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    29
        flib_map_destroy(gamesetup->map);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    30
        flib_teamlist_destroy(gamesetup->teamlist);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    31
        free(gamesetup);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    32
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    33
}
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    34
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    35
flib_gamesetup *flib_gamesetup_copy(const flib_gamesetup *setup) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    36
    if(!setup) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    37
        return NULL;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    38
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    39
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    40
    flib_gamesetup *result = flib_calloc(1, sizeof(flib_gamesetup));
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    41
    if(result) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    42
        result->style = flib_strdupnull(setup->style);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    43
        result->gamescheme = flib_scheme_copy(setup->gamescheme);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    44
        result->map = flib_map_copy(setup->map);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    45
        result->teamlist = flib_teamlist_copy(setup->teamlist);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    46
        if((setup->style && !result->style)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    47
                || (setup->gamescheme && !result->gamescheme)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    48
                || (setup->map && !result->map)
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    49
                || (setup->teamlist && !result->teamlist)) {
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    50
            flib_gamesetup_destroy(result);
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    51
            result = NULL;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    52
        }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    53
    }
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    54
    return result;
de822cd3df3a fixwhitespace and dos2unix
koda
parents: 7497
diff changeset
    55
}